linux load balancing อย่างง่าย ด้วย ZeroShell

linux load balancing อย่างง่าย ด้วย ZeroShell

การเอา internet สองสายมารวมกันนั้น เราไม่สามารถทำให้ความเร็วเพิ่มได้นะครับ อันนี้คือความเป็นจริงที่ต้องยอมรับ แต่ว่า เราทำให้ความเร็วไม่ตกได้ด้วยการเอา internet สองสายมาทำให้เป็นประโยชน์ โดยการแบ่งกันทำงาน ดังนั้น จากปกติรถวิ่งเลนเดียว ก็เพิ่มมาเป็นสองเลน ทำให้วิ่งได้เยอะขึ้นในเวลาเท่าเดิม (แต่วิ่งไปคนละเป้าหมายกัน จึงมารวมกัน เพื่อให้เร็วขึ้นไม่ได้นั่นเอง) โดยปกติเราจะเอามาทำเพื่อเพิ่มความเสถียรของ internet นั่นเอง ถ้าแถวบ้านใครที่มี ADSL มากกว่า 1 เจ้าแล้วล่ะก็ work เลยครับ เพราะว่าถ้าสายนึงหลุดบ่อย หรือชอบสลับกันหลุดเมื่อเรา implement ระบบนี้แล้วก็จะนิ่ง วิ่งยาวไปเลยครับ เพราะว่าสายแรกหลุด ก็วิ่งสายสองทันทีโดยที่เราไม่ต้องแก้ไขอะไรเลย แต่ถ้าสองสายหลุดพร้อมกัน อันนี้ก็ดับสนิทแบบไม่ต้องสืบครับ และการทำแบบนี้ยังเหมาะสำหรับ บริษัท start up ทั่วๆไปด้วยเพราะว่า เราแค่ติดตั้ง internet สามเส้น จ่ายเดือนละประมาณ 1000 บาท รวมกัน 3000 กว่าบาท ก็ได้เน็ตประมาณ 9Mbps มาสามเส้นแล้ว ถูกกว่าไปซื้อ lease line 2Mbps เส้นเดียวซะอีก(เป็นหมื่นต่อเดือน) ความเนียนของ load balancing อาจจะน้อยกว่า lease line แต่ว่าความคุ้มค่า ผมว่ามันคุ้มมากมาย

โดยบทความนี้จะมาเล่าให้ฟัง สำหรับที่ผม implement ขึ้นมานะครับ โดยจะขอเล่า ระบบ ที่มี เพื่อจะได้ไม่ งง ก่อนนะครับ  เพราะว่าตอน config จะพัวพันกับหลายส่วนมาก โดยระบบที่ office ผมนั้น มี internet ADSL 3 เส้น ดังนี้

  1. True ADSL SME package ความเร็ว 7Mbps/512kbps (ตั้ง router ไว้ที่ 192.168.2.1)
  2. TOT home package 7Mbps/512kbps (ตั้ง router ไว้ที่ 192.168.3.1)
  3. 3BB standard package 9Mbps/1Mbps(ตั้ง router ไว้ที่ 192.168.4.1)

PC 1 เครื่อง ที่มีการ์ดแลน ADSL+1 คือ ผมมี ADSL 3แล้ว +1 จึงต้องใช้การ์ดแลน 4 อันนั่นเอง ใช้สำหรับเป็น server เพื่อกระจาย internet โดยเบื้องต้น เราไม่ต้องติดตั้ง linux ก็ได้นะครับ เพราะว่าแค่ใส่ CD แล้วมันจะ boot จาก CD โดยที่ไม่เปลี่ยนแปลงข้อมูลอะไรในเครื่องเลยครับ และที่เหลือก็คือ network switch , wireless access point ตามปกติที่ office เค้ามีใช้กัน ซึ่งพวกนี้ก็แล้วแต่ network ที่ท่านใช้กันแล้วล่ะครับ

เป้าหมายที่ทำ ก็เพื่อให้ office สามารถใช้งาน internet ได้อย่างราบลื่น ราบเรียบมากที่สุด เพราะว่าทุกตำแหน่งใน office กว่า 30 ชีวิต ใช้ internet ในการทำงานทุกคนและเฉลี่ยแล้ว คนนึงใช้อุปกรณ์เชื่อม internet เกือบ 2 ชิ้นเลย เพราะว่าเกือบทุกคนมีมือถือเชื่อมต่อ internet อีก รวมถึงบางคนมีมากกว่าสองเครื่องอีกต่างหาก และ internet ก็ต้องไม่ block อะไรรวมถึง youtube เพราะว่าต้องใช้ในการทำงานด้วย

เอาล่ะครับ เมื่อรู้ที่มาที่ไป และทุกเรื่องแล้วก็มาเริ่มกันเลยดีกว่า ผมจะแบ่งเป็นขั้นตอน ติดตั้ง และ ขั้นตอน config นะครับ ซึ่งสำคัญไม่แพ้กันเลย

ติดตั้ง zeroshell boot จาก cd

  1. ให้ download ไฟล์ iso image for CD จาก http://www.zeroshell.net/eng/download/
  2. write ลงแผ่น
  3. ใส่เข้าเครื่อง แล้วตั้งให้เครื่อง boot จากแผ่น ถ้าไม่เจอปัญหาจะ boot เข้าไปถึงหน้าจอของ zeroshell โดยการติดตั้งแบบนี้จะเป็นการติดตั้งชั่วคราว เพื่อทดสอบระบบเท่านั้น เมื่อปิดเครื่องทุกอย่างจะหายไปหมด ถ้าต้องการติดตั้งแบบถาวรต้องติดตั้งบน harddisk ซึ่งผมเขียนไว้ในตอนท้ายของบทความนี้แล้วครับ
    zeroshell desktop

ถ้าถึงหน้านี้ ก็คือ ZeroShell สามารถทำงานบนเครื่องของท่านได้แล้วครับ ไม่มีปัญหา แต่อยากให้ตรวจสอบ ด้วยการกด i ครับ จะแสดงรายชื่อ card network ของท่าน ออกมา ซึ่งควรจะแสดงได้ครบถึงจะถูกต้องครับ อย่างของผมใส่ card 4 ใบ ก็จะแสดง ETH00 ไล่ไปจน ETH03 เลยครับ ตรงนี้สำคัญ เพราะว่าถ้าเห็นไม่ครบ เราก็ config ไม่ได้ด้วยครับ
zeroshell lan interface

Config zeroshell เพื่อทำ load balance

  1. ให้เครื่องลูกข่าย ตั้ง ip ในวง 192.168.0.xx โดยต้องไม่ใช่ 192.168.0.75 แล้วชี้ gateway ไปที่ 192.168.0.75 และ dns ไปที่เดียวกัน
  2. เปิด web browser เพื่อเปิดเว็บ https://192.168.0.75 ดูดีๆเป็น https นะครับ
  3. login user : admin , password : zeroshell
  4. หัวข้อ System > Setup > Network เราจะเห็นว่า การ์ดแลนที่เหลือที่ไม่ใช่ ETH00 เรายังไม่มี ip เราต้องไปตั้งค่าโดยใส่ ip เข้าไป ของผมมี เน็ต 3 เส้น และการ์ดแลนอีกอันเพื่อ แชร์เน็ตเข้าในวง เลยตั้งค่าได้ดังนี้ครับ (กด ปุ่ม Add ip)
    • True > ETH01 > 192.168.2.3 (ที่ router ผมตั้งเป็น 192.168.2.1)
    • TOT > ETH02 > 192.168.3.3 (ที่ router ผมตั้งเป็น 192.168.3.1)
    • 3BB >  ETH03 > 192.168.4.3 (ที่ router ผมตั้งเป้น 192.168.4.1)
    • การ์ดแลนใบหลัก ที่ใช้ในวง จากเดิม zeroshell ตั้งให้เป็น 192.168.0.75 ผมก็เปลี่ยนให้เป็น 192.168.1.251 แทนเมื่อเราเปลี่ยนข้อนี้แล้ว เราจะต้องเปลี่ยน ip ตัวเอง ให้อยู่ในวง 192.168.1.xx โดยไม่ใช่ 192.168.1.251 และชี้ gateway , dns ไปที่ 192.168.1.251 ด้วยครับ
      add ip ให้ card lan
  5. เปิดหน้า config อีกครั้งที่ https://192.168.1.251 เพราะว่าเราเปลี่ยน ip มาในขั้นตอนที่ 4 แล้ว โดยใช้ username , password เดิม
  6. หัวข้อ System > Setup > Network กดปุ่ม GATEWAY แล้วกรอก gateway หลักที่เราต้องการใช้ ของผม เลือก True จึงใช้ 192.168.2.1
    set default gateway
  7. หัวข้อ NETWORK > Router > NAT แล้วให้เลือก card lan จากฝั่งซ้ายใส่ฝั่งขวา เฉพาะสายที่ต่อกับ ADSL ในที่นี้คือ ETH01, ETH02,ETH03 แล้ว save
    set NAT
  8. หัวข้อ NETWORK > DNS > Forwarders เป็นการตั้ง forward dns server เราจะใช้จากหลายๆที่ ช่องแรกใส่ ANY ช่องที่สองใส่ 203.144.207.29,8.8.8.8,8.8.4.4 โดยเป็นการผสมระหว่าง DNS true กับ google public dns
    set dns name server
  9. หัวข้อ NETWORK > Net Balancer  ในส่วน Gateway list กด Add เพื่อเพิ่ม interface ADSL เพื่อให้ช่วยกันทำงาน โดยแต่ละอันก็ใส่ชื่อและให้ชี้ ip ไปที่ gateway แต่ละตัว โดยกำหนดน้ำหนัก weight ไม่เท่ากัน ในที่นี้ผมอยากให้ TOT ทำงานเป็นอันดับแรก เพราะว่าช่วงที่ set นี้ไม่ค่อย down แล้วมีความเร็วที่เหนือกว่า True นิดหน่อย  ส่วน 3BB เร็วสุดก็จริงแต่ตอนนนี้ down บ่อยมาก แล้วสุดท้าย True ที่น่าจะนิ่งสุด ก็ไว้เป็นสำรองลำดับสุดท้ายเพื่อให้มั่นใจว่าเน็ตจะไม่เน่าหมดพร้อมกัน
    • True , 192.168.2.1 , weight 6
    • TOT , 192.168.3.1 , weight 10
    • 3BB , 192.168.4.1 , weight 8
      set internet load balance
  10. หัวข้อ NETWORK > Net Balancer ด้านซ้ายบนติ้กเลือก ด้านขวาบน เลือก mode Load balancing and Fail over แล้วกด save เมื่อจบขั้นตอนนี้แล้ว ก็ควรจะเปิดเว็บอื่นเล่นเน็ตได้แล้วนะครับ
  11. หัวข้อ NETWORK > DHCP ขวามือบน กด new แล้วตั้ง subnet ผมใช้ 192.168.1.0/255.255.255.0 (ETH00) เพราะว่าจะกระจาย IP ในวงนี้เป็นหลัก ซึ่งการ์ดแลนตัวนี้เป็นตัวหลักที่เชื่อมเครือข่ายภายใน office ทั้งบริษัท จากนั้นก็ตั้ง range ตามใจชอบ แต่ต้องให้อยู่ใน sub net เดียวกันนะครับ แล้วชี้ dns เข้าไปที่ gateway 192.168.1.251 ได้เลย พร้อมแถท dns ของ google อีกเผื่อจะงง
    set dhcp

จบแล้วครับ ที่เหลือ ก็คือ เอาเครื่องไหนมาเสียบ lan แล้วตั้งรับ DHCP ก็จะได้รับแจก ip แล้วเล่นเน็ตได้เลย

แถมอีกนิดคือการตั้ง wireless access point โดยผมเข้าไปตั้ง DHCP ใน wireless access point ให้อยู่ในช่วงที่ไม่ชนกับ zero shell แต่อยู่ใน sub net เดียวกัน แล้วตั้งให้ access point เป็น 192.168.1.252 แล้วชี้ gateway dns ไปที่ 192.168.1.251 ทั้งหมด ก็ต่อ wireless เล่นได้แล้วครับ และแถมอีกข้อสำหรับคนที่ต้องการ config

ปัญหาที่คิดว่าจะเจอ เมื่อ config แล้วยังเล่นเน็ตไม่ได้

  1. ตั้งการ์ดแลนที่รับมาจาก router แต่ละเส้นไม่ตรงกัน เช่น เข้าใจผิด ว่า ETH01 เป็น 3BB ก็ไปตั้ง ETH01 เป็น 192.168.4.3 แล้วชี้ไปที่ 192.168.4.1 ยังนี้ก็มั่วเลยครับ เพราะว่า router ที่เสียบคือ true ซึ่งเป็น 192.168.2.1 และรับลูกข่ายใน sub net 192.168.2.x เท่านั้น พวกนี้เราจะทดสอบด้วยการ ping router แต่ละตัวได้ครับ ถ้าไม่ถูกจะ ping ไปไม่ติด โดยตั้งแล้วทดสอบ ping ทีละตัว ซึ่ง zeroshell กด s เพื่อเข้าไป linux command ได้ครับ
  2. การเชื่อมต่อ ระหว่างการ์ดแลนไป router มีปัญหา อันนี้ผมไม่เจอ เพราะว่าก่อนที่จะ implement ระบบนี้ มีคนอื่น implement เป็น windows server 2003 เอาไว้ แล้วระบบมันทำงานได้แล้ว แต่มันชอบรวน ดังนั้นการเชื่อมต่อของผมจึงไม่มีปัญหาอยุ่แล้ว เลยฉลุย
  3. internet ไม่เชื่อมต่อจริงๆ อันนี้ต้องไล่ให้แม่นๆ นะครับ เปิด router เช็คก่อน ต่อเน็ตหรือยัง อย่าตายน้ำตื้น
  4. ตั้ง ip ชนกันมั่ว อย่าเชียวครับ ดู diagram แล้วลองทำความเข้าใจดูนะครับ
    network dia gram load balance

ขั้นตอนต่อจากนี้ สำหรับคนที่ต้องการติดตั้งลง harddisk นะครับ เพราะว่า ถ้ารันบน CD เราจะเก็บค่าที่เราตั้งเอาไว้ไม่ได้ครับ และแน่นอนว่า การติดตั้ง linux บน harddisk ก็จะเป็นการ format ข้อมูลที่เก็บใน harddisk ไปด้วยครับ

การติดตั้ง ZeroShell บน harddisk

  1. Download ตัว 1GB image for IDE, SATA e USB disks มา จากหน้า download (link อยู่ข้างๆตัว cd version นั่นแหล่ะ)
  2. ตั้งชื่อ zeroshell.img.gz แล้วเอาใส่ flash drive ไว้
  3. เปิดเครื่องด้วยboot เข้า CD ZeroShell คือทำขั้นตอนเดียวกันกับการ boot ด้วย CD ที่ข้างบนของบทความนี้เลย พร้อมทั้งเสียบ flash drive ไว้ด้วย
  4. พิมพ์ fdisk -l เพื่อดูว่ามี harddisk และ flash drive หรือไม่ โดยปกติ Harddisk เราจะพบในชื่อ /dev/hda และ usb flash drive ในชื่อ /dev/sda1 ถ้าไม่ใช่ก็เปลี่ยน command ให้ตรงกับที่ท่านพบด้วยนะครับ
  5. พิมพ์ mkdir /mnt/bee
  6. พิมพ์ mount /dev/sda1 /mnt/bee
  7. พิมพ์ cd /mnt/bee
  8. พิมพ์ gunzip -c zeroshell.img.gz>/dev/hda แล้วรอสักพักนึง จนกลับมาเป็น cursor กระพริบอีกครั้ง และ flash drive หยุดทำงาน(สำหรับคนที่มีสถานะไฟบอก)
  9. พิมพ์ reboot
  10. เอาแผ่นออก และ flash drive ออกด้วย การ reboot ก็จะ boot จาก harddisk แล้วครับ

จบแล้วครับ ระบบนี้ ผม implement ขึ้นมาบน computer virtual ที่รันบน windows server 2003 อีกที (ใช้ VirtualBox) ซึ่งสามารถรับ load จากการใช้งานทั้ง office ได้เป็นอย่างดี ทั้งๆที่เป็น virtual อยู่ก็ตามโดยไม่มีปัญหาเลย หรือมีก็น้อยกว่าเก่าๆมากๆ ขนาดว่าให้โหลดบิท ดู youtube ทดสอบกันด้วย ยังเปิดเว็บได้ลื่นๆอยู่เลย แต่จะมีรวนๆ งงๆ ตอนที่ 3BB down ไปครับ แต่โดยรวมก็ยังใช้งานได้เรื่อยๆครับ แต่ผมเชื่อว่า ถ้าได้ติดตั้งบน computer(หรือ server) จริงปัญหาน่าจะหมดไปครับ เพราะว่า virtual มีการทำงานที่ค่อนข้างช้ากว่าคอมพิวเตอร์จริงระดับหนึ่ง

Create: Modify : 2012-01-05 21:46:20 Read : 16361 URL :