Туркии, ки ба таҷҳизоти хориҷӣ барои овоздиҳӣ барои роҳбар дар кластер Galera танзим кардан чӣ таҷриба доред?
sobes.tech AI
Ҷавоб аз AI
ประสบการณ์ในการตั้งค่าระบบเครื่องมือภายนอกสำหรับการลงคะแนนเสียงเพื่อผู้นำในคลัสเตอร์ Galera ไม่มีอยู่ ใน Galera ผู้นำไม่ได้ถูกกำหนดโดยเครื่องมือภายนอก; โหนดทั้งหมดในคลัสเตอร์มีสิทธิเท่าเทียมกันและสามารถประมวลผลคำขอเขียนพร้อมกัน (โดยปฏิบัติตามกฎของการทำซ้ำ) กลไกการเลือก "ผู้นำ" หรือโหนดหลักสำหรับงานเฉพาะ (เช่น การตรวจสอบหรือการดำเนินการทางการบริหาร) มักจะถูกดำเนินการในระดับของแอปพลิเคชัน ตัวโหลดบาลานเซอร์ หรือโดยใช้เครื่องมือภายนอกสำหรับการตรวจสอบและการจัดการลำดับขั้น แต่ไม่ใช่เป็นเครื่องมือในตัวสำหรับ การลงคะแนนเสียงเพื่อผู้นำในบริบทของการทำงานของ Galera
สำหรับการจัดการคลัสเตอร์ Galera และการเลือกโหนดสำหรับงานเฉพาะ สามารถใช้:
- ProxySQL / HAProxy: ตัวโหลดบาลานเซอร์ที่สามารถส่งเส้นทางทราฟฟิกไปยังโหนดที่กำหนดตามสถานะของมัน
- Keepalived / Pacemaker: เครื่องมือสำหรับรับประกันความพร้อมใช้งานสูงที่สามารถกำหนด IP เสมือนให้กับโหนดที่ใช้งานอยู่
- เครื่องมือสำหรับการตรวจสอบ (เช่น Prometheus + Alertmanager): ช่วยในการติดตามสถานะของโหนดและตัดสินใจ (เช่น การเปลี่ยนเส้นทางทราฟฟิก)
ในบริบทของ Galera สิ่งสำคัญคือ:
- การมีเสียงข้างมาก (quorum) เพื่อหลีกเลี่ยงสถานการณ์ split-brain
- การตั้งค่า wsrep_cluster_address และ wsrep_sst_auth อย่างถูกต้อง
- การทำ SST (State Snapshot Transfer) เมื่อเพิ่มโหนดใหม่
ถ้าหน้าที่คือการกำหนด "โหนดที่ healthiest" สำหรับการดำเนินการทางการบริหาร นี่เป็นเรื่องของการตรวจสอบและการเลือกตามเมตริก มากกว่าการลงคะแนนเสียงเพื่อผู้นำใน Galera
ตัวอย่างการใช้ ProxySQL เพื่อส่งเส้นทางทราฟฟิกไปยังโหนดเดียว (สำหรับงานเฉพาะ):
-- เพิ่มโหนด Galera ทั้งหมดเข้าใน ProxySQL
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10, 'node1', 3306), (10, 'node2', 3306), (10, 'node3', 3306);
-- สร้างกฎสำหรับส่งเส้นทางคำขออ่านไปยังโหนดทั้งหมด (hostgroup 10)
INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup) VALUES (10, 10);
-- สร้าง hostgroup แยกสำหรับ "โหนดบริหาร" (เช่น, node1)
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (20, 'node1', 3306);
-- กฎสำหรับส่งคำขอเฉพาะ (เช่น, SHOW STATUS) ไปยัง "โหนดบริหาร" (hostgroup 20)
INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup) VALUES (1, 1, 'SHOW STATUS', 20);
-- โหลดการเปลี่ยนแปลงเข้าสู่ runtime และบันทึก
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
LOAD MYSQL REPLICATION HOSTGROUPS TO RUNTIME;
SAVE MYSQL REPLICATION HOSTGROUPS TO DISK;
ในตัวอย่างนี้ เราไม่ได้ "ลงคะแนนเสียง" สำหรับผู้นำ แต่ใช้ ProxySQL สำหรับการกำหนดเส้นทางทราฟฟิกไปยังโหนดที่กำหนด ซึ่งอาจถูกตีความว่าเป็นการเลือกโหนดสำหรับการดำเนินงานเฉพาะ
ตัวอย่างการใช้ Keepalived สำหรับ IP เสมือน:
#!/bin/bash
# โค้ดตัวอย่างสำหรับสคริปต์ตรวจสอบสุขภาพด้วย Keepalived
# สคริปต์นี้จะรันบนแต่ละโหนดใน Galera
GALERA_STATUS=$(mysql -h 127.0.0.1 -e "SHOW STATUS LIKE 'wsrep_local_state';" | grep wsrep_local_state | awk '{print $2}')
GALERA_QUORUM=$(mysql -h 127.0.0.1 -e "SHOW STATUS LIKE 'wsrep_cluster_status';" | grep wsrep_cluster_status | awk '{print $2}')
if [ "$GALERA_STATUS" -eq 4 ] && [ "$GALERA_QUORUM" == "Primary" ]; then
# โหนดนี้ซิงค์แล้ว (4) และอยู่ในกลุ่มหลัก
exit 0 # สุขภาพดี
else
exit 1 # ไม่สุขภาพดี
fi
# โค้ดตัวอย่างสำหรับการกำหนดค่าของ Keepalived (บล็อก vrrp_script)
vrrp_script check_galera {
script "/etc/keepalived/scripts/check_galera.sh"
interval 2 # ตรวจสอบทุก 2 วินาที
timeout 3 # เวลาหมดอายุหลังจาก 3 วินาที
weight 50 # เพิ่มความสำคัญเป็น 50 ถ้าสคริปต์สำเร็จ
}
vrrp_instance VI_1 {
state BACKUP # สถานะเริ่มต้น
interface eth0 # อินเทอร์เฟซเครือข่าย
virtual_router_id 51 # ID เฉพาะสำหรับ VRRP
priority 100 # ลำดับความสำคัญของโหนดนี้ (สูงกว่า = มีแนวโน้มเป็น MASTER)
advert_int 1 # ช่วงเวลาประกาศ
authentication {
auth_type PASS
auth_pass your_password
}
virtual_ipaddress {
192.168.1.100 # IP เสมือน
}
track_script {
check_galera # ติดตามสคริปต์ตรวจสอบ
}
}
ที่นี่ Keepalived ใช้สคริปต์ตรวจสอบสถานะของ Galera และกำหนด IP เสมือนให้กับโหนดที่ "สุขภาพดี" เท่านั้น ซึ่งช่วยให้มีจุดเชื่อมต่อเดียวกับคลัสเตอร์สำหรับการเขียน แต่ไม่ใช่ระบบลงคะแนนเสียงสำหรับผู้นำ ภายใน Galera นี่คือระบบเลือกโหนดที่ใช้งานอยู่สำหรับ IP เสมือน
ประสบการณ์ของฉันเกี่ยวข้องกับการตั้งค่าและบำรุงรักษากลไกเหล่านี้เพื่อให้แน่ใจว่ามีความพร้อมใช้งานสูงและการจัดการทราฟฟิกในคลัสเตอร์ Galera.