Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

ในบทความนี้ เราจะพิจารณาการกำหนดค่าเฟลโอเวอร์ที่มีความพร้อมใช้งานสูงของพร็อกซีเซิร์ฟเวอร์ squid (Linux) สองตัว เพื่อเข้าถึงอินเทอร์เน็ตจาก LAN ขององค์กร ในการสร้างการกำหนดค่าเฟลโอเวอร์ เราจะสร้างคลัสเตอร์ HA โดยใช้ keepalved .
คลัสเตอร์ HA คือกลุ่มของเซิร์ฟเวอร์ที่มีความซ้ำซ้อนในตัวเพื่อลดเวลาหยุดทำงานของแอปในกรณีที่มีปัญหาด้านฮาร์ดแวร์หรือซอฟต์แวร์ของเซิร์ฟเวอร์ใดๆ ในกลุ่ม ตามคำจำกัดความนี้ ต้องดำเนินการสิ่งต่อไปนี้เพื่อการทำงานที่ถูกต้องของคลัสเตอร์ HA:

  • การตรวจสอบสถานะเซิร์ฟเวอร์
  • การสลับทรัพยากรโดยอัตโนมัติในกรณีที่เซิร์ฟเวอร์ล้มเหลว

Keepalved เปิดใช้งานทั้งสองสิ่งนี้ เก็บไว้ เป็นภูตระบบในระบบ Linux ที่เปิดใช้งานการเฟลโอเวอร์ของบริการและการทำโหลดบาลานซ์ Failover มีให้โดยที่อยู่ IP แบบลอยซึ่งสลับไปยังเซิร์ฟเวอร์อื่นหากเซิร์ฟเวอร์หลักล้มเหลว ในการสลับที่อยู่ IP ระหว่างเซิร์ฟเวอร์โดยอัตโนมัติ Keepalved กำลังใช้ VRRP (Virtual Router Redundancy Protocol – https://www.ietf.org/rfc/rfc2338.txt)

หลักการของ VRRP

ก่อนอื่น มาพิจารณาทฤษฎีและคำจำกัดความ VRRP หลักกัน

  • VIP — Virtual IP ที่อยู่ IP เสมือนที่สามารถสลับระหว่างเซิร์ฟเวอร์โดยอัตโนมัติในกรณีที่เกิดความล้มเหลว
  • Master — เซิร์ฟเวอร์ที่ VIP กำลังใช้งานอยู่
  • สำรองข้อมูล — เซิร์ฟเวอร์ที่ VIP จะเปลี่ยนไปใช้ในกรณีที่มาสเตอร์ล้มเหลว
  • VRID — Virtual Router ID เซิร์ฟเวอร์ที่แชร์ IP เสมือน (VIP) ในรูปแบบที่เรียกว่าเราเตอร์เสมือนและตัวระบุที่ไม่ซ้ำกันอาจมีค่าระหว่าง 1 ถึง 255 เซิร์ฟเวอร์อาจเป็นของ VRID หลายตัวพร้อมกัน แต่ VRID ทุกตัวจะต้องมีที่อยู่ IP เสมือนที่ไม่ซ้ำกัน

อัลกอริธึมการทำงานพื้นฐาน:

  • ในช่วงเวลาที่กำหนด เซิร์ฟเวอร์หลักจะส่งแพ็กเก็ต VRRP (ฮาร์ตบีต s) ไปยังที่อยู่มัลติคาสต์เฉพาะ 224.0.0.18 และเซิร์ฟเวอร์ทาสทั้งหมดฟังที่อยู่นี้ Multicasting หมายความว่ามีผู้ส่งหนึ่งรายและผู้รับหลายคนคำแนะนำ . เพื่อให้เซิร์ฟเวอร์ทำงานในโหมดมัลติคาสต์ อุปกรณ์เครือข่ายของคุณต้องรองรับการรับส่งข้อมูลแบบหลายผู้รับ
  • ถ้าเซิร์ฟเวอร์ Slave ไม่ได้รับแพ็กเก็ตฮาร์ทบีต เซิร์ฟเวอร์จะเริ่มขั้นตอนการเลือกมาสเตอร์ หากเซิร์ฟเวอร์กลายเป็นมาสเตอร์ตามลำดับความสำคัญ เซิร์ฟเวอร์จะเปิดใช้งาน VIP และส่ง ARP ฟรี . ARP ที่ไม่เสียค่าใช้จ่ายเป็นการตอบสนอง ARP ชนิดพิเศษที่อัปเดตตาราง MAC บนสวิตช์เครือข่ายเพื่อแจ้งเกี่ยวกับการเปลี่ยนแปลงของเจ้าของที่อยู่ IP เสมือนและที่อยู่ MAC เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูล

ติดตั้งและกำหนดค่า Keepalved บน CentOS

เราจะติดตั้งและกำหนดค่า Keepalved บนเซิร์ฟเวอร์ Linux สองเครื่อง (proxy-serv01 และ proxy-serv02) ที่ใช้ CentOS 7 โดยติดตั้ง Squid ในรูปแบบของเรา เราจะใช้วิธีการโหลดบาลานซ์ที่ง่ายที่สุด — Round Robin DNS . วิธีนี้แนะนำว่าชื่อ DNS เดียวมีที่อยู่ IP ที่ลงทะเบียนไว้หลายที่อยู่ และไคลเอนต์จะได้รับที่อยู่เหล่านี้ทีละรายการ ดังนั้น เราจะต้องลงทะเบียนที่อยู่ IP เสมือนสองแห่งสำหรับชื่อ DNS หนึ่งชื่อ (proxy-serv) นี่คือแผนภาพเครือข่าย:

Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

เซิร์ฟเวอร์ Linux แต่ละเครื่องมีอินเทอร์เฟซเครือข่ายทางกายภาพสองแบบ:eth1 ด้วยที่อยู่ IP สาธารณะ (สีขาว) และ eth0 ในเครือข่ายท้องถิ่น

ใช้ที่อยู่ IP ของเซิร์ฟเวอร์ต่อไปนี้เป็นที่อยู่จริง:

192.168.2.251 — สำหรับ proxy-server01192.168.2.252 — สำหรับ proxy-server02

ที่อยู่ IP ต่อไปนี้จะใช้เป็นที่อยู่เสมือนที่สลับระหว่างเซิร์ฟเวอร์โดยอัตโนมัติในกรณีที่เกิดความล้มเหลว:

192.168.2.101192.168.2.102
สำคัญ . เมื่อคุณกำหนดค่า VRRP อย่าใช้ที่อยู่ IP ของเซิร์ฟเวอร์จริงเป็นที่อยู่เสมือน เนื่องจากในกรณีที่เซิร์ฟเวอร์ล้มเหลว ที่อยู่ของเซิร์ฟเวอร์จะย้ายไปยังเซิร์ฟเวอร์ถัดไป และหลังจากความล้มเหลว เซิร์ฟเวอร์แรกอาจแยกออกจากเครือข่าย สิ่งสำคัญคือหากต้องการรับที่อยู่ IP กลับมา เซิร์ฟเวอร์จะต้องส่งแพ็กเก็ต VRRP ไปยังเครือข่าย แต่ไม่มีที่อยู่ IP ให้ทำ

คุณสามารถติดตั้ง Keepalved บนเซิร์ฟเวอร์ทั้งสองได้โดยใช้ yum package manager (หรือ dnf บน CentOS 8):

# yum install keepalived

หลังจากการติดตั้งเสร็จสิ้นบนทั้งสองเซิร์ฟเวอร์ ให้เปลี่ยนไฟล์การกำหนดค่า Keepalved บนเซิร์ฟเวอร์ทั้งสอง:

# nano /etc/keepalived/keepalived.conf

บรรทัดที่มีพารามิเตอร์ต่างกันจะถูกเน้น:

proxy-serv01 proxy-serv02
 1 Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL  2 Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

มาอธิบายตัวเลือกโดยละเอียดกันดีกว่า:

  1. vrrp_instance — เป็นส่วนที่กำหนดอินสแตนซ์ VRRP
  2. state — คือสถานะของโหนดเริ่มต้นเมื่อเริ่มต้น
  3. อินเทอร์เฟซ <ชื่ออินเทอร์เฟซ> — คืออินเทอร์เฟซ VRRP กำลังทำงานอยู่
  4. virtual_router_id — เป็นตัวระบุอินสแตนซ์ VRRP ที่ไม่ซ้ำกัน ซึ่งจะต้องเหมือนกันในทุกเซิร์ฟเวอร์
  5. priority — กำหนดลำดับความสำคัญของเซิร์ฟเวอร์ เซิร์ฟเวอร์ที่มีลำดับความสำคัญสูงกว่าจะกลายเป็น MASTER
  6. virtual_ipaddress — คือบล็อกของที่อยู่ IP เสมือนที่ทำงานอยู่บนเซิร์ฟเวอร์ในสถานะ MASTER ต้องเหมือนกันในทุกเซิร์ฟเวอร์ภายในอินสแตนซ์ VRRP
หมายเหตุ . คุณสามารถพบตัวอย่างมากมายเมื่อ การตรวจสอบสิทธิ์ ตัวเลือกที่ใช้ในการกำหนดค่า VRRP อย่างไรก็ตาม รักษาไว้ เอกสารระบุว่าการรับรองความถูกต้องถูกลบออกจาก VRRPv2 ในข้อกำหนด RFC3768 (https://tools.ietf.org/html/rfc3768) ในปี 2547 เนื่องจากไม่มีการรักษาความปลอดภัยที่แท้จริง ไม่แนะนำให้ใช้ตัวเลือกการกำหนดค่านี้

หากการกำหนดค่าเครือข่ายปัจจุบันไม่อนุญาตให้ใช้มัลติคาสต์ Keepalived จะมีตัวเลือก unicast i อี แพ็กเก็ตฮาร์ทบีท VRRP จะถูกส่งไปยังเซิร์ฟเวอร์โดยตรงตามรายการ หากต้องการใช้ unicast คุณจะต้องมีตัวเลือกต่อไปนี้:

  • unicast_src_ip — คือที่อยู่ต้นทางสำหรับแพ็คเกจ VRRP
  • unicast_peer — คือบล็อกของที่อยู่ IP ของเซิร์ฟเวอร์ ซึ่งจะส่งแพ็กเก็ต VRRP ไปให้

ดังนั้น การกำหนดค่าของเราจึงกำหนดอินสแตนซ์ VRRP สองตัว ได้แก่ proxy_ip1 และ proxy_ip2 ในการดำเนินการปกติ proxy-serv01 จะเป็น MASTER สำหรับ IP เสมือน 192.168.2.101 และการสำรองข้อมูลสำหรับ 192.168.2.102 และในทางกลับกัน proxy-serv02 จะเป็น MASTER สำหรับ IP เสมือน 192.168.2.102 และการสำรองข้อมูลสำหรับ 192.168.2.101.

หากเปิดใช้งานไฟร์วอลล์บนเซิร์ฟเวอร์ คุณจะต้องเพิ่มกฎการอนุญาตสำหรับการรับส่งข้อมูลแบบหลายผู้รับและ VRRP โดยใช้ iptables:

# iptables -A INPUT -i eth0 -d 224.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p vrrp -i eth0 -j ACCEPT

เปิดใช้บริการ Keepalved สำหรับการเริ่มต้นอัตโนมัติในการบูตระบบและเรียกใช้บนเซิร์ฟเวอร์ทั้งสอง

# systemctl enable keepalived
# systemctl start keepalived

หลังจาก Keepalived เริ่มต้นแล้ว ที่อยู่ IP เสมือนจะถูกกำหนดให้กับอินเทอร์เฟซจากไฟล์การกำหนดค่าของคุณ มาดูที่อยู่ IP eth0 ปัจจุบันของเซิร์ฟเวอร์:

# ip a show eth0

บน proxy-serv01:

Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

บน proxy-serv02:

Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

จะตรวจสอบสถานะแอปหรืออินเทอร์เฟซด้วย Keepalive ได้อย่างไร

โปรโตคอล VRRP จัดให้มีการตรวจสอบสถานะเซิร์ฟเวอร์ ตัวอย่างเช่น สิ่งนี้มีประโยชน์ในกรณีที่เซิร์ฟเวอร์ทางกายภาพล้มเหลวหรือพอร์ต NIC ของสวิตช์/เซิร์ฟเวอร์ อย่างไรก็ตาม ปัญหาอื่นๆ อาจเกิดขึ้นได้เช่นกัน:

  • ข้อผิดพลาดของพร็อกซีเซิร์ฟเวอร์ (หรือแอปอื่นๆ) — ไคลเอ็นต์ที่เข้าถึงที่อยู่เสมือนของเซิร์ฟเวอร์จะได้รับข้อความแสดงข้อผิดพลาดในเบราว์เซอร์ว่าพร็อกซีเซิร์ฟเวอร์ไม่พร้อมใช้งาน
  • การเข้าถึงอินเทอร์เน็ตล้มเหลวของอินเทอร์เฟซที่สอง — ไคลเอ็นต์ที่เข้าถึงที่อยู่เสมือนของเซิร์ฟเวอร์จะได้รับข้อความแสดงข้อผิดพลาดในเบราว์เซอร์ว่าไม่สามารถสร้างการเชื่อมต่อได้

เพื่อจัดการกับสถานการณ์ที่อธิบายไว้ข้างต้น ให้ใช้ตัวเลือกต่อไปนี้:

  • track_interface — ตรวจสอบสถานะอินเทอร์เฟซ และตั้งค่าสถานะ FAULT สำหรับอินสแตนซ์ VRRP หากหนึ่งในอินเทอร์เฟซที่ระบุไว้ใน DOWN
  • track_script — ดำเนินการตรวจสอบสภาพของแอป HA โดยใช้สคริปต์ที่ส่งคืน 0 ถ้าเช็คสำเร็จ หรือ 1 ถ้าเช็คไม่ผ่าน

อัปเดตการกำหนดค่าโดยเพิ่มการตรวจสอบอินเทอร์เฟซ eth1 (โดยค่าเริ่มต้น อินสแตนซ์ VRRP จะตรวจสอบอินเทอร์เฟซที่ผูกไว้:เป็น eth0 ในการกำหนดค่าปัจจุบัน)

track_interface {  eth1}

คำสั่ง track_script รันสคริปต์ด้วยพารามิเตอร์ที่กำหนดโดยบล็อก vrrp_script ในรูปแบบต่อไปนี้:

vrrp_script  { script <"path to the executable file"> ช่วง  - ระยะเวลาของการเรียกใช้สคริปต์ 1 วินาทีโดยค่าเริ่มต้น fall  - จำนวนครั้งที่สคริปต์กลับมา ค่าที่แตกต่างจากศูนย์เพื่อเปลี่ยนเป็นสถานะ FAULT เพิ่มขึ้น  - จำนวนครั้งที่สคริปต์คืนค่าศูนย์เพื่อออกจากสถานะ FAULT (failback) หมดเวลา  - เวลาที่รอจนถึงสคริปต์ ส่งคืนผลลัพธ์ ( หากหมดเวลา สคริปต์จะส่งกลับค่าที่ไม่ใช่ศูนย์ _ น้ำหนัก  - ค่าซึ่งลำดับความสำคัญของเซิร์ฟเวอร์จะลดลงในกรณีที่ได้รับสถานะ FAULT ค่าเริ่มต้นคือ 0 ซึ่งหมายความว่า เซิร์ฟเวอร์ได้รับสถานะ FAULT หลังจากที่สคริปต์ล้มเหลวหลายครั้งที่ตั้งไว้ในพารามิเตอร์ fall}

มากำหนดค่าการตรวจสอบความสมบูรณ์ของพร็อกซี Squid เมื่อใช้คำสั่งนี้ คุณจะตรวจสอบได้ว่ากระบวนการปลาหมึกทำงานอยู่หรือไม่:

# squid -k check

สร้าง vrrp_script ที่ทำงานทุก 3 วินาที บล็อกนี้ถูกกำหนดไว้ภายนอกบล็อก vrrp_instance

vrrp_script chk_squid_service { script "/usr/sbin/squid -k check" ช่วง 3}

เพิ่มสคริปต์นี้ในการมอนิเตอร์ลงในบล็อก vrrp_instance ทั้งสอง:

track_script { chk_squid_service}

หาก Squid ล้มเหลว ที่อยู่ IP เสมือนจะถูกเปลี่ยนเป็นเซิร์ฟเวอร์อื่น

คุณสามารถระบุการดำเนินการเพิ่มเติม ให้เสร็จสิ้นหากสถานะเซิร์ฟเวอร์เปลี่ยนแปลง

หาก Squid ได้รับการกำหนดค่าให้ยอมรับการเชื่อมต่อจากอินเทอร์เฟซใด ๆ i. อี http_port 0.0.0.0:3128 จะไม่มีปัญหาเกิดขึ้นเมื่อเปลี่ยนที่อยู่ IP เสมือน และ Squid จะยอมรับการเชื่อมต่อกับที่อยู่ใหม่ อย่างไรก็ตาม หากมีการกำหนดค่าที่อยู่ IP เฉพาะ e. ก.:

http_port 192.168.2.101:3128http_port 192.168.2.102:3128

Squid จะไม่ทราบว่ามีที่อยู่ใหม่ปรากฏในระบบเพื่อรับฟังคำขอของลูกค้า เพื่อจัดการกับสถานการณ์เมื่อจำเป็นต้องมีการดำเนินการเพิ่มเติมบางอย่างเมื่อเปลี่ยนที่อยู่ IP เสมือน Keepalive อนุญาตให้เรียกใช้สคริปต์หากสถานะของเซิร์ฟเวอร์เปลี่ยนแปลง เช่น จาก MASTER เป็น BACKUP หรือในทางกลับกัน มีการใช้งานโดยใช้ตัวเลือกนี้:

แจ้ง "เส้นทางไปยังไฟล์ปฏิบัติการ"

การทดสอบ Keepalived Failover ในกรณีที่เกิดความล้มเหลว

หลังจากที่คุณได้กำหนดค่า IP เสมือน ตรวจสอบให้แน่ใจว่าได้จัดการความล้มเหลวอย่างถูกต้อง การตรวจสอบครั้งแรกคือการจำลองความล้มเหลวของเซิร์ฟเวอร์ ปิดการใช้งาน eth0 บน proxy-serv01 และจะหยุดส่ง VRRP heartbeat packets proxy-serv02 ต้องเปิดใช้งานที่อยู่ IP เสมือน 192.168.2.101 ตรวจสอบด้วยคำสั่งนี้:

# ip a show eth0

บน proxy-serv01:

Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

บน proxy-serv02:

Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

ตามที่คาดไว้ proxy-serv02 เปิดใช้งานที่อยู่ IP เสมือน 192.168.2.101 มาดูกันว่ามีอะไรเขียนในบันทึกโดยใช้คำสั่งต่อไปนี้:

cat /var/log/messages | grep -i keepalived

บน proxy-serv01 บน proxy-serv02
Keepalived_vrrp[xxxxx]:เคอร์เนลกำลังรายงาน:อินเทอร์เฟซ eth0 DOWNKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเข้าสู่ FAULT STATEKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การลบโปรโตคอล VIPrp[Keepalived_] (proxy_ip1) ตอนนี้อยู่ในสถานะ FAULT
Keepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเปลี่ยนไปใช้ MASTER STATE
Keepalived ได้รับสัญญาณว่า eth0 อยู่ในสถานะ DOWN และตั้งค่าสถานะ FAULT สำหรับอินสแตนซ์ proxy_ip1 VRRP ซึ่งจะทำให้ที่อยู่ IP เสมือนว่าง Keepalived ตั้งค่าสถานะ MASTER สำหรับอินสแตนซ์ proxy_ip1 VRRP เปิดใช้งานที่อยู่ IP 192.168.2.101 บน eth0 และส่ง ARP ที่ไม่เสียค่าใช้จ่าย

Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

และตรวจสอบให้แน่ใจว่าเมื่อคุณเปิดใช้งาน eth0 บน proxy-serv01 อีกครั้ง ที่อยู่ IP เสมือน 192.168.2.101 จะถูกเปลี่ยนกลับ

บน proxy-serv01 บน proxy-serv02
Keepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) บังคับให้มีการเลือกตั้ง MASTER ใหม่Keepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเปลี่ยนไปใช้ MASTER STATEKeepalived_vrrp[xxxxx]:KeepVRRP_Instance(proxy_ip1) การป้อน:VRRP_Instance(proxy_ip1) โปรโตคอลการตั้งค่า VIP Keepalived_vrrp[xxxxx]:กำลังส่ง ARP ฟรีบน eth0 สำหรับ 192.168.2.101
Keepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) ได้รับโฆษณาที่มีลำดับความสำคัญสูงกว่า 255 ของเรา 100Keepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) กำลังเข้าสู่ BACKUP STATEKeepalived_vrrp[xxxxx]:VRRP_Instance (proxy_ip1) ที่นำโปรโตคอลออก> 
Keepalved รับสัญญาณว่า eth0 กลับมาแล้วและเริ่มเลือก MASTER สำหรับอินสแตนซ์ proxy_ip1 VRRP หลังจากที่ได้รับสถานะ MASTER เซิร์ฟเวอร์จะเปิดใช้งานที่อยู่ IP 192.168.2.101 ใน eth0 และส่ง ARP ที่ไม่เสียค่าใช้จ่าย Keepalived รับแพ็กเก็ตที่มีลำดับความสำคัญสูงกว่าสำหรับอินสแตนซ์ proxy_ip1 VRRP สลับ proxy_ip1 เป็นสถานะ BACKUP และเพิ่มที่อยู่ IP

การตรวจสอบที่สองคือการจำลองความล้มเหลวของอินเทอร์เฟซเครือข่ายภายนอก หากต้องการทำสิ่งนี้ ให้ปิดการใช้งานอินเทอร์เฟซเครือข่ายภายนอก eth1 บน proxy-serv01 ดูผลลัพธ์ในบันทึก

บน proxy-serv01 บน proxy-serv02
Keepalived_vrrp[xxxxx]:เคอร์เนลกำลังรายงาน:อินเทอร์เฟซ eth1 DOWNKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเข้าสู่ FAULT STATEKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การลบโปรโตคอล VIPrp[Keepalived_] (proxy_ip1) ตอนนี้อยู่ในสถานะ FAULT
Keepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเปลี่ยนไปใช้ MASTER STATEKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเข้าสู่ MASTER STATEKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ipxxx) การตั้งค่าโปรโตคอล VIPr:บน eth0 สำหรับ 192.168.2.101
Keepalived ได้รับสัญญาณว่า eth1 ไม่ทำงานและตั้งค่าสถานะ FAULT สำหรับอินสแตนซ์ proxy_ip1 VRRP ซึ่งจะทำให้ที่อยู่ IP เสมือนว่าง Keepalived ตั้งค่าสถานะ MASTER สำหรับอินสแตนซ์ proxy_ip1 VRRP เปิดใช้งานที่อยู่ IP 192.168.2.101 ใน eth0 และส่ง ARP ที่ไม่เสียค่าใช้จ่าย

Keepalived:การกำหนดค่าความพร้อมใช้งานสูงด้วย IP Failover บน CentOS/RHEL

การตรวจสอบครั้งที่สามคือการจำลองความล้มเหลวของ Squid หากต้องการดำเนินการ ให้หยุดบริการด้วยตนเองโดยใช้คำสั่งนี้:

# systemctl stop squid

ดูผลลัพธ์ในบันทึก:

บน proxy-serv01 บน proxy-serv02
Keepalived_vrrp[xxxxx]:VRRP_Script(chk_squid_service) ล้มเหลวKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเข้าสู่ FAULT STATEKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การนำโปรโตคอล VIPs ออก ) ตอนนี้อยู่ในสถานะ FAULT
Keepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเปลี่ยนไปใช้ MASTER STATEKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ip1) การเข้าสู่ MASTER STATEKeepalived_vrrp[xxxxx]:VRRP_Instance(proxy_ipxxx) การตั้งค่าโปรโตคอล VIPr:บน eth0 สำหรับ 192.168.2.101
สคริปต์ที่ตรวจสอบกิจกรรมของบริการพร็อกซี Squid ส่งกลับข้อผิดพลาด Keepalived ตั้งค่าสถานะ FAULT สำหรับอินสแตนซ์ proxy_ip1 VRRP ซึ่งจะทำให้ที่อยู่ IP เสมือนว่าง Keepalived ตั้งค่าสถานะ MASTER สำหรับอินสแตนซ์ proxy_ip1 VRRP เปิดใช้งานที่อยู่ IP 192.168.2.101 ใน eth0 และส่ง ARP ที่ไม่เสียค่าใช้จ่าย

ผ่านการตรวจสอบทั้งสามรายการเรียบร้อยแล้ว และ Keepalived ได้รับการกำหนดค่าอย่างถูกต้อง หลังจากนั้น เราจะกำหนดค่าคลัสเตอร์ HA โดยใช้ Pacemaker และอธิบายคุณลักษณะต่างๆ

ไฟล์การกำหนดค่าสุดท้าย /etc/keepalved/keepalved.conf สำหรับ proxy-serv01 :

vrrp_script chk_squid_service { script "/usr/sbin/squid -k check" interval 3} vrrp_instance proxy_ip1 { state MASTER interface eth0 virtual_router_id 1 priority 255 virtual_ipaddress {            2  10      10            192 . 10                              track_script {  chk_squid_service }}vrrp_instance proxy_ip2 { state BACKUP interface eth0 virtual_router_id 2 priority 100 virtual_ipaddress { 192.168.2.102/24 dev eth0 label eth0:2 _} script_interface { _ eth1 ไฟล์การกำหนดค่าสุดท้าย} /keepalved.conf สำหรับ proxy-serv02 :
vrrp_script chk_squid_service { script "/usr/sbin/squid -k check" interval 3}vrrp_instance proxy_ip1 { state BACKUP interface eth0 virtual_router_id 1 priority 100 virtual_ipaddress {    192.16. . . .10       1    1                                                                                  track_script {  chk_squid_service }}vrrp_instance proxy_ip2 { state MASTER อินเทอร์เฟซ eth0 virtual_router_id 2 priority 255 virtual_ipaddress {  192.168.2.102/24 dev eth0 label eth0:2} script_interface { _ eth1 s