ต่อจาก Juju #05 – วิธีกระจายงานไปยัง MySQL แบบ Master-Master เมื่อสร้าง MySQL แบบ Master-Master Replication ได้แล้ว ก็มาเชื่อมกับ HAProxy เพื่อให้ Application ที่เขียน มองเห็นทั้งระบบเป็นชิ้นเดียว

IP Address ของระบบต่างๆเป็นดังนี้
haproxy : 10.107.107.71

mysql-master1: 10.107.107.35

mysql-master1: 10.107.107.83

ขั้นตอนการติดตั้ง

  1. ที่ mysql-master1 ต้องสร้าง 2 Users ขึ้นมา ชื่อ haproxy_check และ haproxy_root ด้วยคำสั่งต่อไปนี้
    mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) -e "INSERT INTO mysql.user (Host,User) values ('10.107.107.71','haproxy_check'); FLUSH PRIVILEGES;"
    
    mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) -e "GRANT ALL PRIVILEGES ON *.* TO 'haproxy_root'@'10.107.107.71' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES;"
  2. ที่ haproxy
    ติดตั้ง mysql-client ด้วยคำสั่ง

    sudo apt-get install mysql-client

    ทดสอบด้วยคำสั่ง

    mysql -h 10.107.107.35 -u haproxy_root -ppassword -e "SHOW DATABASES;"
    mysql -h 10.107.107.83 -u haproxy_root -ppassword -e "SHOW DATABASES;"

    แก้ไขไฟล์ /etc/haproxy/haproxy.cfg โดยเพิ่มบรรทัดต่อไปนี้ท้ายไฟล์ [3]

    frontend mysql-cluster
     bind *:3306
     mode tcp
     default_backend mysql-backend
    
    backend mysql-backend
     mode tcp
     balance roundrobin
     server mysql-master1 10.107.107.35:3306 check
     server mysql-master2 10.107.107.83:3306 check

    และสุดท้าย ทดสอบด้วยคำสั่งต่อไปนี้

    for i in `seq 1 6`; do 
       mysql -h 127.0.0.1 -u haproxy_root -ppassword -e "show variables like 'server_id'"; 
    done
    

    ควรจะได้ผลประมาณนี้

  3. จากนั้นก็สามารถพัฒนา Application โดยใช้ IP Address ของ haproxy ซึ่งในที่นี้คือ 10.107.107.71 และ Port 3306 ได้แล้ว ซึ่งเบื้องหลัระบบจะทำการ Replication กันเองทั้งหมด

Reference:

[1] https://www.digitalocean.com/community/tutorials/how-to-set-up-mysql-master-master-replication

[2] https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing–3

[3] https://serversforhackers.com/load-balancing-with-haproxy

 

Share the Post:

Related Posts

ทำความรู้จักกับ Outlook บนเว็บ

Post Views: 5 Outlook เป็นเครื่องมือจัดการอีเมลและปฏิทินที่ทรงพลัง ซึ่งช่วยให้คุณมีระเบียบและเพิ่มความสามารถในการทำงาน ด้วยอินเทอร์เฟซที่ใช้งานง่าย คุณสามารถจัดการกล่องขาเข้าของคุณ นัดหมาย และทำงานร่วมกับเพื่อนร่วมงานได้อย่างง่ายดาย ฟีเจอร์ที่แข็งแกร่งของ Outlook รวมถึงแม่แบบอีเมลที่ปรับแต่งได้ ความสามารถในการค้นหาขั้นสูง และการผสานรวมที่ไร้รอยต่อกับแอปพลิเคชัน Microsoft Office อื่นๆ ไม่ว่าคุณจะเป็นมืออาชีพที่ยุ่งอยู่หรือเป็นนักเรียนที่ต้องจัดการกับภารกิจหลายอย่าง Outlook

Read More

[บันทึกกันลืม] JupyterHub Authenticated with OIDC

Post Views: 36 ต่อจากตอนที่แล้ว [บันทึกกันลืม] JupyterHub ด้วย Docker คราวนี้ ถ้าต้องการให้ ยืนยันตัวตนด้วย OpenID เช่น PSU Passport เป็นต้น ก็ให้ทำดังนี้ ในไฟล์ jupyterhub_config.py ใส่

Read More