การเช่า DHCP หมดอายุจากการคืนค่า snapshot VM รบกวนการเชื่อมต่อ gRPC ที่ใช้งานอยู่?


0

ฉันใช้ gRPC เพื่อสื่อสารระหว่าง Java (ทำงานบนโฮสต์) และ Python (ทำงานบน Guest VM ของฉัน) ซอฟต์แวร์ของฉันตั้งค่า VMs บางตัวเมื่อเริ่มต้นด้วย libvirt ฉันระบุเครือข่ายของฉันด้วยช่วง DHCP ดังนี้:

<network>
  ...
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.128' end='192.168.122.254'/>
      <host mac="00:16:3e:77:e2:ed" ip="192.168.122.128"/>
      <host mac="00:16:3e:3e:a9:1a" ip="192.168.122.129"/>
      ...
    </dhcp>
  </ip>
  ...
</network>

เมื่อทุกอย่างถูกตั้งค่าและ VM ของฉันกำลังทำงานอยู่ฉันจะสร้างสแนปชอตของ VM แต่ละรายการ ตอนนี้เวิร์กโฟลว์ของซอฟต์แวร์จะเป็นดังนี้: เปิดอินเทอร์เฟซ gRPC กับ VM ของผู้เยี่ยมชมที่มี IP ที่ระบุข้างต้นสำหรับที่อยู่ mac ตั้งเวลาที่ถูกต้อง (เวลาตอนนี้แตกต่างจากสแน็ปช็อตและไม่มีอินเทอร์เน็ต) คืนค่าภาพรวมและทำซ้ำ

ในรหัส Python บน VM ฉันส่งข้อความ ping ทุกๆ 5s ไปยังโฮสต์ (ชนิดของการเต้นของหัวใจ) เวลาส่วนใหญ่ใช้งานได้ดีและฉันได้รับข้อความบนโฮสต์ในโค้ด Java อย่างไรก็ตามในบางครั้งฉันไม่ได้รับข้อความอีกต่อไปบนโฮสต์เป็นเวลา 3 นาที (หลังจากนั้นฉันก็ยกเว้นการหมดเวลาที่กำหนดเอง) ไม่มีข้อผิดพลาดหรือการวนซ้ำไม่สิ้นสุดในโค้ด Python และไม่มีการยกเว้นในฝั่ง Java ดังนั้นปัญหาจะต้องอยู่ที่อื่น

ในขณะที่ตรวจสอบสาเหตุของพฤติกรรมแปลก ๆ นี้ฉันเจอ DHCP ครั้ง VMs ของฉันรับ IP จากช่วง DHCP ที่กำหนดค่าผ่าน libvirt (ดูด้านบน) การเช่า DHCP ถูกกำหนดให้หมดอายุใน 1 ชั่วโมง ที่น่าสนใจการหมดเวลาจากข้อความ heartbeat มักจะเกิดขึ้น (ถ้ามันเกิดขึ้นไม่เสมอไป) ประมาณ 1 ชั่วโมงหลังจากที่ฉันทำสแนปชอตเริ่มต้นที่ฉันกู้คืน ปัญหาของฉันอาจเกี่ยวข้องกับขั้นตอนการต่ออายุการเช่า DHCP โดยที่ VM อยู่ในสถานะที่ไม่ได้มี IP เริ่มต้นอีกต่อไปหรือไม่ ตัวอย่างเช่นฉันเปิดการเชื่อมต่อ gRPC ของฉันไปที่ 192.168.122.128 รับข้อความ heartbeat และทันใดนั้นเนื่องจาก DHCP หมดอายุสัญญาเช่า IP ก็เปลี่ยนไปและ gRPC ไม่สามารถส่งข้อความเพิ่มเติมได้อีกหรือไม่ หากนั่นอาจเป็นปัญหาฉันควรทำอย่างไรกับปัญหานี้?

ฉันได้ทำการทดสอบที่กำหนดเองเพิ่มเติมที่ฉันเปิดการเชื่อมต่อ gRPC กับ VM จากนั้นฉันเปลี่ยนที่อยู่ IP บน VM ด้วยตนเองจากนั้นเปลี่ยนกลับเป็น IP ดั้งเดิม ฉันสังเกตเห็นพฤติกรรมที่เหมือนกัน: ฉันได้รับข้อยกเว้นการหมดเวลาหลังจาก 3 นาทีเนื่องจากไม่มีการรับข้อความ heartbeat อีกต่อไปหลังจากการเปลี่ยนแปลงด้วยตนเอง ดังนั้นฉันมีความรู้สึกที่แข็งแกร่งว่าอย่างใด IP บน VM มีการเปลี่ยนแปลงซึ่งอาจเกี่ยวข้องกับการเช่า DHCP ที่หมดอายุและสิ่งนี้รบกวนการเชื่อมต่อ gRPC

อาจเป็นปัญหาหรือเป็นสิ่งที่แตกต่างอย่างสิ้นเชิงที่ทำให้เกิดปัญหากับการเชื่อมต่อ gRPC? ฉันจะทำอย่างไรกับปัญหานี้ ความช่วยเหลือหรือรายละเอียดเพิ่มเติมใด ๆ ที่ชื่นชม

คำตอบ:


0

ฉันค่อนข้างแน่ใจว่าเหตุการณ์ส่วนใหญ่ที่ติด gRPC นั้นสามารถย้อนกลับไปสู่การต่ออายุเวลาเช่า DHCP ได้ ฉันยังสงสัยด้วยว่าโดยทั่วไปเมื่อเซิร์ฟเวอร์ DHCP ไม่สามารถติดต่อได้ทุกเวลาการเชื่อมต่อ gRPC ก็ติดอยู่ (ฉันทดสอบสิ่งนี้โดยการตั้งค่าเวลาของระบบและการโทรipconfig /renewจากบรรทัดคำสั่งด้วยตนเองจากนั้นฉันจะได้ DHCP หมดเวลาก่อน หลังจากนั้นก็ใช้งานได้ แต่เป็นผลให้ gRPC ติดแม้ว่าฉันจะได้ IP เดียวกันอีกครั้ง) เนื่องจากฉันยังไม่เข้าใจพฤติกรรมของการต่ออายุ DHCP และสิ่งทั่วไปเกี่ยวกับการสืบค้นเซิร์ฟเวอร์ DHCP และหมดเวลาของมันฉันจึงตัดสินใจที่จะไม่เล่นกับมันอีกต่อไป ฉันตัดสินใจที่จะไปกับ IP แบบคงที่สำหรับ VM snapshot ของฉัน (ปิดการใช้งาน DHCP) หากใครก็ตามประสบปัญหาเดียวกันคุณอาจต้องลองทำดู หวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.