ทรัพยากรที่ใช้
ในที่นี้ผู้เขียนจะใช้ CentOS 6.4 ทั้งหมด 5 เครื่อง (VM) โดยตั้งชื่อตาม Diagram ดังนี้
Virtual IP : 192.168.0.215 lvs1 : 192.168.0.216 lvs2 : 192.168.0.217 rs1 : 192.168.0.218 rs2 : 192.168.0.219 rs3 : 192.168.0.220
ขั้นตอนที่ 1 ติดตั้ง Load Balancer
yum install piranha ipvsadm -y
กำหนด Firewall ให้ allow port ตามนี้
Piranha: 3636
HTTP: 80
Hearbeat: 539
เปิดการใช้งาน Piranha
service piranha-gui start
หลังจาก restart หรือ reboot ให้ service เหล่านี้เปิดขึ้นอัตโนมัติ
chkconfig piranha-gui on
chkconfig pulse on
กำหนด password สำหรับ Login เข้าส่วนจัดการของ piranha
piranha-passwd
เปิดให้ทำการ forward packet ผ่านเครื่อง Load Balance ได้ ซึ่งสามารถกำหนดได้ 2 วิธี
echo 1 > /proc/sys/net/ipv4/ip_forwardแก้ไขไฟล์ /etc/sysctl.conf โดยกำหนดให้ net.ipv4.ip_forward = 1
หลังจากนั้น ใช้คำสั่ง
sysctl -p
ขั้นตอนการตั้งค่า Load Balancer ใน Piranha
User : piranha
Password : ***** (จากคำสั่ง piranha-passwd)
Round-Robin Scheduling
กระจายคำร้องเรียงไปตามลำดับของ server ที่มีอยู่ การใช้ algorith
m นี้ ทุก server จะมีความสำคัญเท่ากันหมด ไม่เกี่ยวข้องกับความสามารถของ server หรือความสามารถของ b
andwidth หรือ load แต่อย่างใด รูปแบบการกระจายคำร้องแบบ Round-Robin นี้ จะคล้ายกับ round-robin แบบ DNS แต่จะมีรายละเอียดมากกว่าเนื่องจากรูปแบบ
โครงข่ายของระบบ network และรูปแบบการกระจายคำร้องแบบ Round-Robin นี้ ไม่จะได้รับผลกระทบจากความไม่สมดุลย์จากคำร้องของ DNS cache query
Weighted Round-Robin Scheduling
การกระจายคำร้องขอจะเหมือนกับ round-robin แต่จะซับซ้อนกว่าตรงที่เราสามารถกำหนดน้ำหนักการส่งคำร้องไปยัง server ได้ในแบบ dynamic (ไม่ fix) เช่นเครื่อง server
แต่ละเครื่อง เรามี performance ที่จะรับ request ไม่เท่ากัน ก็สามารถกำหนด weight ได้ ทำให้ request ที่เข้ามา กระจายไปยัง server ได้เหมาะสมที่สุด
การกระจายคำร้องแบบ Weighted Round-Robin Scheduling จะเห็นผล หากเครื่อง server แต่ละตัว มีประสิทธิภาพที่แตกต่างกันมาก ๆ มากว่า server ที่มีประสิทธิภาพที่พอ ๆ กัน
Least-Connection (แบบเชื่อมต่อน้อยสุด)
รูปแบบการกระจายคำร้อง จะส่งไปยังเครื่อง server ที่มีคำร้องที่ยังคงทำงานอยู่น้อยสุด (fewer active connection) เนื่องจากระบบจะตรวจสอบการเชื่อมต่อกับ server แบบ realtive ผ่านทางตาราง IPVS
รูปแบบ Least-Connection เป็นรูปแบบการกระจายคำร้องแบบ dynamic ชนิดหนึ่ง และเหมาะสำหรับลักษณะคำร้องที่มีการเรียกใช้ที่มีความแตกต่างกันมาก ๆ เช่น อยู่ ๆ
ก็มีคำร้องมามาก ๆ อยู่ ๆ ก็เหลือน้อย เป็นต้น โดยรูปแบบการกระจายตัวลักษณะนี้ เหมาะสำหรับกลุ่มของ server ที่มีประสิทธิภาพพอ ๆ กัน
Weighted Least-Connections (Default)
รูปแบบจะเหมือนกับ Least-Connection แต่ว่าเราจะกำหนดทิศทางการกระจาย load ไปยัง server ได้จำเพาะเจาะจงในแต่ละ server ในรูปแบบ weight หรือ factor
ทำให้การกระจาย load มีประสิทธิภาพมากขึ้น เหมาะสำหรับเครื่อง server ที่มา pool กัน มีประสิทธิภาพที่ต่างกัน
ซึ่งการ config piranha ทั้งหมดจะเก็บค่าไว้ที่ไฟล์
/etc/sysconfig/ha/lvs.cf
ซึ่งเราสามารถนำ config ไปใช่กับเครื่อง lvs2 ที่ทำงานเป็น passive ได้
scp /etc/sysconfig/ha/lvs.cf 192.168.0.217:/etc/sysconfig/ha/
หลังจากแก้ค่า config ใน piranha ทุกครั้งเราต้องทำการ restart pulse ซึ่งเป็นตัวจัดการ piranha
ทำการ restart ทั้ง 2 เครื่อง (LVS1,LVS2) ด้วยคำสั่ง
service pulse restart
ในส่วนของ web server
ติดตั้ง arptables_jf ให้กับ rs1 , rs2 , rs3
yum install arptables_jf -y
เครื่อง #rs1:
arptables -A IN -d 192.168.0.215 -j DROP
arptables -A OUT -d 192.168.0.215 -j mangle –mangle-ip-s 192.168.0.218
เครื่อง #rs2:
arptables -A IN -d 192.168.0.215 -j DROP
arptables -A OUT -d 192.168.0.215 -j mangle –mangle-ip-s 192.168.0.219
เครื่อง #rs3:
arptables -A IN -d 192.168.0.215 -j DROP
arptables -A OUT -d 192.168.0.215 -j mangle –mangle-ip-s 192.168.0.220
เซฟค่า config และให้ทำการ auto start ทุกครั้งที่มีการเปิดเครื่อง
service arptables_jf save chkconfig arptables_jf on
หลังจากนั้นทำการ add virtual ip address ทั้ง 3 เครื่อง
ip addr add 192.168.0.215 dev eth0
เปิดไฟล์ /etc/rc.local และเพิ่มคำสั่งไว้ด้านล่างของไฟล์ เพื่อให้เปิดเครื่องทุกครั้งจะทำการ add virtual ip ให้อัตโนมัติ
/sbin/ip addr add 192.168.0.215 dev eth0
หลังจากนี้ทดสอบให้ Client เชื่อมต่อมาที่ 192.168.0.215
LVS1
ดูการ Routing ได้ด้วยคำสั่ง
ipvsadm -L
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.215:80 wlc
-> 192.168.0.218:2525 Route 1 3 1
-> 192.168.0.219:2525 Route 1 2 0
-> 192.168.0.220:2525 Route 1 1 0
ข้อมูลเพิ่มเติม
Direct Routing
Load Balancer Add-On via Direct Routing
Load Balancer Add-On Scheduling Overview