ครั้งที่แล้วพาเล่น 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 ดังนี้
Percona XtraDB Cluster และ WordPress มาลงมือกันเลย ให้คุณเพิ่ม Docker Host เข้าไปใน Rancher 3 Host ดังนี้
![](https://lh3.googleusercontent.com/-x5vGdVCyV6c/VhYjfuabgOI/AAAAAAAAVr4/IDYCiuYI7ZM/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252011%25253A44%25253A27.png)
จากนั้นมาเพิ่ม 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
![](https://lh3.googleusercontent.com/-Pq5WHSJTzYc/VhYjevUsYII/AAAAAAAAVr4/SfxHomRpFEQ/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252011%25253A46%25253A38.png)
![](https://lh3.googleusercontent.com/-TUIphO6mtCI/VhYjfSQ-PHI/AAAAAAAAVr4/WjWXy5m4MBU/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252011%25253A48%25253A08.png)
กด 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
![](https://lh3.googleusercontent.com/-gyYsdNIVxBQ/VhYjf2fj5-I/AAAAAAAAVr4/FsBtSBRBse4/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252011%25253A56%25253A34.png)
จากนั้นเรามาเพิ่ม 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
![](https://lh3.googleusercontent.com/-OY-JHMq0ZTg/VhaQup43yjI/AAAAAAAAVsU/huIvuubQo8w/s640-Ic42/Screen%252520Shot%2525202015-10-08%252520at%25252022.49.07.png)
![](https://lh3.googleusercontent.com/-HEiqzMsYc2o/VhaQuhP6GiI/AAAAAAAAVsY/VMQALCsrImk/s640-Ic42/Screen%252520Shot%2525202015-10-08%252520at%25252022.49.19.png)
![](https://lh3.googleusercontent.com/-BCG1KUcljiI/VhaQumj0TAI/AAAAAAAAVsQ/Q3nXVYfjnDg/s640-Ic42/Screen%252520Shot%2525202015-10-08%252520at%25252022.49.42.png)
สั่ง Create และ Start Container ให้เปิด Log แล้วคัดลอกค่า PXC_NODES, PXC_SST_PASSWORD and PXC_ROOT_PASSWORD เอาไว้
![](https://lh3.googleusercontent.com/-S5m_ni5EgAQ/VhYjgF8QEzI/AAAAAAAAVr4/qShSD6rGkZI/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252012%25253A00%25253A14.png)
เครื่องที่ 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
![](https://lh3.googleusercontent.com/-akWOGb345aM/VhYjh6wPdMI/AAAAAAAAVr4/Fz1rJDOT1W8/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252013%25253A43%25253A23.png)
จากนั้นเราจะมาเพิ่ม 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
![](https://lh3.googleusercontent.com/-VJLHjt2z6K8/VhYjhI4JRyI/AAAAAAAAVr4/YC_B8WDKUNs/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252012%25253A59%25253A18.png)
![](https://lh3.googleusercontent.com/-lWm2eoJG7Uc/VhYjhL1WL3I/AAAAAAAAVr4/9RnVUNmSgbM/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252013%25253A02%25253A05.png)
ค่า 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
![](https://lh3.googleusercontent.com/-xVNYBRri4_o/VhYjisGDm8I/AAAAAAAAVr4/uADMF0TdH_g/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252013%25253A47%25253A21.png)
สั่ง Create และ Start Service เราจะพบว่า Load Balance Service ถูก deploy ไปยัง Host ทั้ง 3 Host แล้ว
![](https://lh3.googleusercontent.com/-kqAGHSNnmdo/VhYjjxEFPXI/AAAAAAAAVr4/8ZeUZm8z17w/s640-Ic42/Screenshot%252520from%2525202015-10-08%25252013%25253A48%25253A47.png)
เราจะใช้ IP ของ Host ไปตั้งค่า DNS Record สำหรับท่านที่ใช้ Linux แก้ไขไฟล์ /etc/hosts เพื่อทดสอบได้ ติดตั้ง WordPress ในขั้นตอนสุดท้ายก็เป็นอันเรียบร้อย
![](https://lh3.googleusercontent.com/-CuFthP7g080/VhaSb7CXUgI/AAAAAAAAVs0/5SLXngQQWXM/s640-Ic42/Screen%252520Shot%2525202015-10-08%252520at%25252022.56.49.png)
0 Comments