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.sh

การนำไปใช้งาน

เนื่องจากเป็น 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 เดิม สามารถใช้งานได้ทันที ไม่ต้องตั้งค่าอะไรเพิ่มเติม

Comments

โหลดไม่ได้ครับ แก้ไขด้วยครับ ขอบคุณครับ

พอดีฝากไว้ที่ Server ใน ม.ขอนแก่นครับ มีปัญหาเรื่องไฟ (ไฟดับ บ่อยหน่อย)
ยังไม่ได้ เสนอให้เขาซื้อ UPS ใหม่ครับ

ช่วงไหนโหลดไม่ได้ ก็น่าจะเป็นเพราะไฟดับครับ :P
___
Neutron: Linux Addict!

งง script เหมือนกันนะครับช่วย เรียบเรียงให้มัน เข้าใจง่ายหน่อยได้มั้ยครับ

เหอ ๆ นี่ขนาดผมเรียบเรียงมาแล้วรอบนึงนะครับ
ถ้าเอาตัวต้นแบบมาให้ดูกัน สงสัยจะหนักกว่านี้

จริง ๆ หลักการของ Script ไม่มีอะไรมากครับ
แค่เช็ค ppp connection แล้วจับทั้งหมดมาทำ routing

___
Neutron: Linux Addict!

พอดีผมนำตัวนี้ไปใช้ที่โรงเรียนแบบไม่ได้แก้ไขอะไร
เครื่องเป็น Gateway ไม่มี Squid ใช้เล่น net กับ msn แต่พบปัญหาว่าเข้า Hotmail ช้ามาก และก็ msn เข้ายากมาก ติดๆหลุดๆ
ไม่ทราบว่าจะแก้ไขยังไงดีครับ ดู Script แล้วงงมากเลยครับ

ขอรับไปศึกษาครับ CC 4.3 กับ ClearOS work มัยครับ??

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้