PPP Load Balancer Script: ทำเองได้ จ่ายแพงกว่าทำไม ?
PPP Load Balancer Script - 0.1.1
ความสามารถ
- ออกแบบให้ใช้กับ PPP Connection (ADSL - PPPoE, Dial-up - PPP)
- ทำ Load Balance แบบอัตโนมติ
- มีการจัดการกับการเชื่อมต่อที่อาจจะหลุดระหว่างใช้งาน (ใช้ cron เป็นตัวช่วยในการ polling)
- ไม่จำกัดจำนวนการเชื่อมต่อของ PPP และสามารถเพิ่ม หรือลดจำนวนได้ในขณะทำงาน
ข้อจำกัด
- ใช้ cron ในการ polling ซึ่งมีข้อจำกัดเรื่องเวลาต่ำสุดในการ poll คือ 1 นาที เป็นผลให้การทำงานมี Delay ในการจัดการ Load Balance บ้างเล็กน้อย
Source
http://neutron.debianclub.com/neutron/projects/ppp-balance/ppp-balance.s...
การนำไปใช้งาน
เนื่องจากเป็น Script ที่อยู่ในระหว่างการพัฒนา จึงอาจมีข้อผิดพลาดที่ยังตรวจไม่พบอยู่บ้าง แต่จากการทดสอบเป็นเวลาระยะหนึ่งแล้ว Script นี้สามารถใช้งานได้ดี จึงได้นำออกมาเผยแพร่สู่สาธารณชน เพื่อเป็นประโยชน์ต่อผู้ที่มีความสนใจ ซึ่งสามารถนำไปใช้เพื่อศึกษา หรือแม้กระทั่งเชิงการค้า แต่กรุณาคงไว้ซึ่ง License ที่ระบุตัวผู้พัฒนา เพื่อเป็นกำลังใจในการพัฒนางานดี ๆ ต่อไป
วิธีใช้งาน
เตรียมความพร้อมของระบบ (Debian GNU/Linux) โดยติดตั้งโปรแกรมที่จำเป็นต่าง ๆ และทดสอบว่า สามารถใช้งาน PPP connection ได้อย่างปกติก่อนลงมือใช้ Script
# aptitude install iproute
ตรวจสอบระบบว่ามีการเชื่อมต่อ PPP เรียบร้อยหรือยัง ในกรณีของผมต่อเป็น PPPoE ผ่าน ADSL ครับ (ในที่นี้จะไม่ได้พูดถึงวิธีการเชื่อมต่อ PPP)
# ifconfig
...
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
...
...
ppp0 Link encap:Point-to-Point Protocol
inet addr:118.173.xxx.xxx P-t-P:118.173.xxx.xxx Mask:255.255.255.255
...
...
ppp1 Link encap:Point-to-Point Protocol
inet addr:118.173.xxx.xxx P-t-P:118.173.xxx.xxx Mask:255.255.255.255
...
...
จะเห็นว่าเรามีการเชื่อมต่ออยู่ 2 Interface คือ ppp0 กับ ppp1 และเป็นเป้าหมายในการทำ Load Balance ขั้นต่อไปคือ ดึง Script มาใช้งาน
# cd /usr/local/bin # wget http://neutron.debianclub.com/neutron/projects/ppp-balance/ppp-balance.sh
หลังจากนั้น สั่งให้ Script ทำงาน
# ./ppp-balance.sh
... Mon Apr 28 16:46:24 ICT 2008: Updating default route ... Mon Apr 28 16:46:24 ICT 2008: /sbin/ip route add default scope global equalize nexthop via 118.173.xxx.xxx dev ppp0 weight 1 nexthop via 118.173.xxx.xxx dev ppp1 weight 1
ตรวจสอบความถูกต้องในการทำ Load Balance
# ip route
118.173.xxx.xxx dev ppp0 proto kernel scope link src 118.173.xxx.xxx
118.173.xxx.xxx dev ppp1 proto kernel scope link src 118.173.xxx.xxx
172.30.8.0/21 dev eth2 proto kernel scope link src 172.30.8.2
default equalize
nexthop via 118.173.xxx.xxx dev ppp0 weight 1
nexthop via 118.173.xxx.xxx dev ppp1 weight 1หากปรากฏข้อความ default equalize .... แสดงว่าระบบจัดการทำ Load Balance เรียบร้อยแล้ว สามารถทดสอบใช้งาน ได้ตามปกติ
# host www.google.com www.google.com is an alias for www.l.google.com. www.l.google.com has address 74.125.19.103 www.l.google.com has address 74.125.19.99 www.l.google.com has address 74.125.19.147 www.l.google.com has address 74.125.19.104
เป็นอันเรียบร้อยในการทดสอบ ขั้นต่อไปคือ ทำให้ระบบ Polling เพื่อตรวจสอบสถานะการเชื่อมต่อ ว่ามีหลุด มีเปลี่ยนแปลงหรือไม่
สร้าง /etc/cron.d/ppp-balance
*/1 * * * * root /usr/local/bin/ppp-balance.sh >/dev/null 2>&1
สั่ง Restart cron
# /etc/init.d/cron restart
เป็นอันเสร็จกระบวนการ หากเครื่องที่ทำ Load Balance เคยเป็น Internet Gateway เดิม สามารถใช้งานได้ทันที ไม่ต้องตั้งค่าอะไรเพิ่มเติม













Post new comment