ການສ້າງ Web Server Load Balance ແບບ Direct Routing (CentOS 6.4)

ການສ້າງ Web Server Load Balance ແບບ Direct Routing (CentOS 6.4)

lvs-direct-routing

 

ຊັບພະຍາກອນທີ່ໃຊ້
ໃນທີ່ນີ້ຜູ້ຂຽນຈະໃຊ້ 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)

21-6-2556 12-39-23

21-6-2556 12-40-55

virtual server

 

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 ກັນ ມີປະສິດທິພາບທີ່ຕ່າງກັນ

 

rs1

rs2

rs3

ເຊິ່ງການ 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