|
Load Balance and redundancy สำหรับในส่วนนี้ ระบบของบริษัทใหญ่ๆ
อาจนำไปใช้ประโยชน์ได้น่ะครับ ในกรณีต้องการ แบ่งการทำงานของ application เช่น mail ,web , dns เพื่อไม่ให้เครื่องใดเครื่องทำงานหนักเกินไป รวมถึงเมื่อเกิดเครื่องใดเครื่องหนึ่งมีปัญหาระหว่างให้ใช้งาน ก็สามารถสลับการทำงานไปเครื่องอื่นๆ ที่เรา
ทำการ สร้าง ระบบ failover ไว้ได้
ลงใน freebsd 6.2 ทดสอบกับโดยใช้งานผ่าน เว็บ
หลักการก็คือ ดังนี้ครับ ต้องใช้เครื่อง อย่างน้อย 2 เครื่อง
10.0.1.148:8009 config เป็น เว็บ (lb1.pl.com) 10.0.1.148:80 config เป็น pen (loadbalance1) 10.0.1.149:8009 config เป็น เว็บ (lb2.pl.com) 10.0.1.149:80 config เป็น pen (loadbalance2) 10.0.1.150 config เป็น virtual ip ที่ให้ เป็นเว็บ application
~~~ ( net ) ~~~ | | | ---------- | switch | ---------- / / VIP --------- -------- | lb1 | | lb2 | --------- --------
โดยที่เรากำหนด ให้ เว็บนั้นไป listen port 8009 เพราะว่า ตัว services pen ก็ listening port 80 เหมือนกันดังนั้นอาจจะเกิดการชนกันได้ แล้วจะทำให้ service pen ไม่ทำงานน่ะครับ
เริ่มแรกทำการลง os ทั้ง2เครื่องให้เสร็จก่อนครับ
application ที่ใช้ มี 2 ตัวคือ 1.pen ใช้เป็นตัวควบคุมการ loadbalance ซึ่งรายละเอียดหาอ่านได้ที่ http://siag.nu/pen/ 2.freevrrpd เป็นตัวจำลอง vip ให้เรา รวมถึงเป็น virtual gateway แล้วทำการ switch ไปเครื่องๆ อื่นเพื่อป้องกันการเกิด failover รายละเอียดอ่านได้ที่ http://romana.now.ie/writing/vrrpforhostservices.html
เริ่มแรกเลย ลง pen ก่อนครับโดยที่ install ผ่าน portใน freebsd โดยที่ config เหมือน
กันทั้ง 2 เครื่องเลยน่ะครับ
#cd /usr/ports/net/pen #make install clean
โดยที่ config ที่ไฟล์ดังนี้
#cd /etc/supervise/pen สร้างไฟล์ #cat > run เพิ่มดังนี้
#!/bin/sh
exec 2>&1 exec pen -d -u pen -j /var/chroot/pen -C localhost:8888 -f -r 80 10.0.1.148:8009 10.0.1.149:8009
เปลี่ยน สิทธิ์
#chmod 755 run
#cd log #cat > run
เพิ่มดังนี้
#!/bin/sh exec /usr/local/bin/setuidgid penlog /usr/local/bin/multilog s999999 n20 /var/log/pen
เปลี่ยนสิทธิ์ #chmod 755 run
สั่ง Start up pen services.
#mkdir /service
#cd /service #ln -s /etc/supervise/pen #echo "csh -cf '/usr/local/bin/svscanboot &'" >> /etc/rc.local #csh -cf '/usr/local/bin/svscanboot &' #sleep 5 && svstat pen
ต่อมา config ที่ตัว freevrrpd
#cd /usr/ports/net/freevrrpd #make install clean
เข้าไป config ที่ไฟล์ /usr/local/etc/freevrrpd.conf โดยที่ #cp /usr/local/etc/freevrrpd.conf.sample /usr/local/etc/freevrrpd.conf #vi /usr/local/etc/freevrrpd.conf
##ส่วนของ Server lb1.pl.com ก็ config ตามนี้น่ะครับ [VRID] serverid=1 interface=fxp0 #ชื่อ interface ของ card lan ในเครื่องครับ priority=255 #255 เป็น master node addr=10.0.1.150/23 #address ของ virtual ip ที่เราต้องการให้เป็น และส่วนหลัง /
นั้นเป็น subnet mask ที่เป็นรูปแบบ CIDR useVMAC=yes spanningtreelatency=40
----------------------------- ##ส่วนของ Server lb2.pl.com ก็ config ตามนี้น่ะครับ [VRID] serverid=1 interface=dd0 #ชื่อ interface ของ card lan ในเครื่องครับ priority=255 #255 เป็น master node addr=10.0.1.150/23 #address ของ virtual ip ที่เราต้องการให้เป็น และส่วนหลัง /
นั้นเป็น subnet mask ที่เป็นรูปแบบ CIDR useVMAC=yes spanningtreelatency=40
แค่นี้ครับ
ต่อจากนั้น มา config ส่วนของ apache ครับ
#vi /usr/local/etc/apache22/httpd.conf ##ส่วนของ lb1.pl.com ก็ config ตามนี้น่ะครับ Listen 10.0.1.148:8009
##ส่วนของ lb2.pl.com ก็ config ตามนี้น่ะครับ Listen 10.0.1.149:8009
--------------------------------- ทำการ configuration log VRRP ไปไว้ที่ไฟล์ของมันเอง ทั้ง 2 เครื่องเลยครับ
#touch /var/log/freevrrpd.log #cat >> /etc/syslog.conf
เพิ่ม !freevrrpd *.* /var/log/freevrrpd.log
-------------------------------------
สำหรับการตามดู error log ของ "pen" จะดูได้ที่
#tail -f /var/log/pen/current
สำหรับการตามดู error log ของ "freevrrpd" จะดูได้ที่
#tail -f /var/log/freevrrpd.log
ครับ
ลอง access เว็บดู แล้วดู log ตามไปด้วยน่ะครับ จะได้เห็นการเปลี่ยนแปลงของทั้ง 2 เครื่องโดยที่จะมี lan ของ ip 10.0.1.150 เพิ่มขึ้นมาทั้ง 2 เครื่อง
สำหรับ step ต่อไปก็คงพัฒนาเป็น application อื่นน่ะครับแล้วก็ใช้ nat ให้ผ่านไป วง
dmz ด้านหลังบ้าน ยังไงก็รอติดตามน่ะครับ
ถ้าทำแล้ว มีปัญหาก็สอบถามได้น่ะครับ
|