ครั้งที่แล้วพาเล่น Load Balance บน Rancher แบบง่ายๆ ไปแล้ว ครั้งนี้ก็เลยมายกตัวอย่าง HA WordPress กันบ้าง WordPress เป็น CMS เก็บข้อมูลบน Storage 2 ส่วน คือ บน MySQL และบน File System หากต้องการทำ HA สำหรับ WordPress จะต้องกระจายโหลดจาก Load Balance ไปยัง WordPress และการเก็บข้อมูลจะต้องเก็บข้อมูลบน Storage เดียวกันโดยใช้ Distributed Storage เข้ามาช่วย และใช้ MySQL Cluster สำหรับเก็บข้อมูลด้วย เครื่องมือที่ใช้ได้แก่ Gluster,
Percona XtraDB Cluster และ WordPress มาลงมือกันเลย ให้คุณเพิ่ม Docker Host เข้าไปใน Rancher 3 Host ดังนี้


จากนั้นมาเพิ่ม Gluster Server ที่เครื่อง 1 หรือ wordpress 1 ดังนี้

  • Name : gluster1
  • Image : nixel/rancher-glusterfs-server:latest
  • Volume : /gluster_volume:/gluster_volume
  • Security/Host : Full access to the host

กด Create เพิ่ม Gluster Server อีก ที่เครื่อง 2 หรือ wordpress 2 เราจะเพิ่ม Environment Variable เข้าไป 1 ตัวชื่อ GLUSTER_PEER ค่าที่ใช้คือ IP Address ของ Container gluster1 ของผมเป็น 10.42.22.72

  • Name : gluster2
  • Image : nixel/rancher-glusterfs-server:latest
  • Environment Variable : GLUSTER_PEER=10.42.22.72
  • Volume : /gluster_volume:/gluster_volume
  • Security/Host : Full access to the host

เมื่อเพิ่ม Gluster Server ครบ 2 Container แล้วเราจะพบว่า Container ทั้ง 2 จะสร้าง Gluster Volume ให้เราชื่อ ranchervol ให้ตรวจสอบจาก Log

จากนั้นเรามาเพิ่ม MySQL Cluster กัน เราจะใช้ Percona XtraDB Cluster กัน เนื่องจาก Percona XtraDB Cluster ต้องใช้ Node อย่างน้อย 3 Node เพื่อจัดการ Cluster ดังนั้นเราจะต้องเพิ่ม PXC Container 3 Node ดังนี้

เครื่องที่ 1 เพิ่ม Container PXC ลงไปดังนี้

  • Name : pxc1
  • Image : nixel/rancher-percona-xtradb-cluster:latest
  • Environment Variable : PXC_BOOTSTRAP=YES
  • Volume : /var/lib/mysql:/var/lib/mysql
  • Security/Host : Full access to the host

สั่ง Create และ Start Container ให้เปิด Log แล้วคัดลอกค่า PXC_NODES, PXC_SST_PASSWORD and PXC_ROOT_PASSWORD เอาไว้

เครื่องที่ 2 เพิ่ม Container PXC ดังนี้

  • Name : pxc2
  • Image : nixel/rancher-percona-xtradb-cluster:latest
  • Environment Variable :
  • PXC_BOOTSTRAP=NO
  • PXC_NODES=10.42.252.224
  • PXC_SST_PASSWORD=kNmWxvM8ObulAOCBOYrU
  • PXC_ROOT_PASSWORD=yhv8uzTqQ0oc3Q6m3swh
  • Volume : /var/lib/mysql:/var/lib/mysql
  • Security/Host : Full access to the host

ค่า PXC_NODES คือหมายเลข IP Address ของ Container pxc1 ของผมเป็น 10.42.252.224

เครื่องที่ 3 เพิ่ม Container PXC ดังนี้

  • Name : pxc3
  • Image : nixel/rancher-percona-xtradb-cluster:latest
  • Environment Variable :
  • PXC_BOOTSTRAP=NO
  • PXC_NODES=10.42.252.224,10.42.194.242
  • PXC_SST_PASSWORD=kNmWxvM8ObulAOCBOYrU
  • PXC_ROOT_PASSWORD=yhv8uzTqQ0oc3Q6m3swh
  • Volume : /var/lib/mysql:/var/lib/mysql
  • Security/Host : Full access to the host

ค่า PXC_NODES คือหมายเลข IP Address ของ Container pxc1 และ pxc2 ของผมเป็น 10.42.252.224 และ 10.42.194.242

จากนั้นเราจะมาเพิ่ม Service ของ WordPress และ Load Balance กัน กลับไปที่ Stack สร้าง Stack ขึ้นมาใหม่ เพิ่ม Service WordPress ลงไปดังนี้

  • Name : wordpress
  • Scale : 4
  • Image : nixel/rancher-wordpress-ha:latest
  • Environment Variable :
  • GLUSTER_PEER=10.42.22.72,10.42.248.47
  • WORDPRESS_DB_HOSTS=10.42.252.224:3306,10.42.194.242:3306,10.42.68.13:3306
  • WORDPRESS_DB_PASSWORD=yhv8uzTqQ0oc3Q6m3swh
  • Security/Host : Full access to the host

ค่า WORDPRESS_DB_PASSWORD คือค่า PXC_ROOT_PASSWORD สั่ง Create และ Start เราจะพบว่า WordPress จะทะยอย Start และกระจายไปยัง Host ทุกตัว รอจน WordPress ทำงานทั้ง 4 Container ให้ลอง Scale ไปเป็น 10 Container

มาเพิ่ม Load Balance กันต่อ ดังนี้

  • Name : lb-wordpress
  • Scale : 3
  • Source Port : 80
  • Target Port : 80
  • Target Service : wordpress

สั่ง Create และ Start Service เราจะพบว่า Load Balance Service ถูก deploy ไปยัง Host ทั้ง 3 Host แล้ว

เราจะใช้ IP ของ Host ไปตั้งค่า DNS Record สำหรับท่านที่ใช้ Linux แก้ไขไฟล์ /etc/hosts เพื่อทดสอบได้ ติดตั้ง WordPress ในขั้นตอนสุดท้ายก็เป็นอันเรียบร้อย

Comments are closed.