ค้นหาเว็บไซต์

การตั้งค่าเว็บเซิร์ฟเวอร์โหลดบาลานซ์โดยใช้ 'POUND' บน RHEL/CentOS


POUND เป็นโปรแกรมปรับสมดุลโหลดที่พัฒนาโดยบริษัท ITSECURITY เป็นเครื่องมือพร็อกซีย้อนกลับแบบโอเพ่นซอร์สน้ำหนักเบาซึ่งสามารถใช้เป็นโหลดบาลานเซอร์ของเว็บเซิร์ฟเวอร์เพื่อกระจายโหลดไปยังเซิร์ฟเวอร์ต่างๆ มีข้อดีหลายประการที่ POUND มอบให้กับผู้ใช้ซึ่งสะดวกมากและทำงานได้อย่างถูกต้อง

  1. รองรับโฮสต์เสมือน
  2. กำหนดค่าได้
  3. เมื่อเซิร์ฟเวอร์แบ็กเอนด์ล้มเหลวหรือกู้คืนจากความล้มเหลว เซิร์ฟเวอร์จะตรวจพบโดยอัตโนมัติและพิจารณาการตัดสินใจเรื่องการปรับสมดุลโหลดตามนั้น
  4. มันปฏิเสธคำขอที่ไม่ถูกต้อง
  5. ไม่มีเบราว์เซอร์หรือเว็บเซิร์ฟเวอร์ที่ระบุ

มาดูกันว่าแฮ็คนี้จะทำได้อย่างไร

ก่อนอื่น คุณจะต้องมีสถานการณ์เพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับการดำเนินการนี้ให้สำเร็จ ดังนั้นฉันจะใช้สถานการณ์ที่มีเว็บเซิร์ฟเวอร์สองตัวและเซิร์ฟเวอร์เกตเวย์หนึ่งตัวซึ่งจำเป็นต้องสร้างสมดุลระหว่างคำขอที่มาถึงเซิร์ฟเวอร์เกตเวย์ไปยังเว็บเซิร์ฟเวอร์


Pound Gateway Server : 172.16.1.222
Web Server 01 : 172.16.1.204
Web Server 02 : 192.168.1.161

ขั้นตอนที่ 1: ติดตั้ง Pound Load Balancer บนเซิร์ฟเวอร์เกตเวย์

1. วิธีที่ง่ายที่สุดในการติดตั้ง Pound คือการใช้แพ็คเกจ RPM ที่คอมไพล์ไว้ล่วงหน้า คุณสามารถค้นหา RPM สำหรับการแจกแจงแบบ RedHat ได้ที่:

  1. http://www.invoca.ch/pub/packages/pound/

หรืออีกวิธีหนึ่ง สามารถติดตั้ง Pound ได้อย่างง่ายดายจากที่เก็บ EPEL ดังที่แสดงด้านล่าง


yum install epel-release
yum install Pound

หลังจากติดตั้ง Pound แล้ว คุณสามารถตรวจสอบได้ว่าติดตั้งแล้วหรือไม่โดยใช้คำสั่งนี้


rpm –qa |grep Pound

2. ประการที่สอง คุณต้องมี เว็บเซิร์ฟเวอร์สองเครื่อง เพื่อสร้างสมดุลระหว่างโหลด และตรวจสอบให้แน่ใจว่าคุณมีตัวระบุที่ชัดเจนเพื่อทดสอบการกำหนดค่าปอนด์ว่าทำงานได้ดี

ที่นี่ฉันมีเซิร์ฟเวอร์สองเครื่องที่มีที่อยู่ IP 172.16.1.204 และ 192.168.1.161

เพื่อความสะดวกในการใช้งาน ฉันได้สร้าง python SimpleHTTPServer เพื่อสร้างเว็บเซิร์ฟเวอร์ทันทีบนเซิร์ฟเวอร์ทั้งสองเครื่อง อ่านเกี่ยวกับ python SimpleHTTPServer

ในสถานการณ์ของฉัน ฉันมี webserver01 ทำงานบน 172.16.1.204 ผ่านพอร์ต 8888 และ webserver02 ทำงานบน 192.168.1.161 ผ่านพอร์ต 5555

ขั้นตอนที่ 2: กำหนดค่าปอนด์โหลดบาลานเซอร์

3. ตอนนี้ก็ถึงเวลากำหนดค่าให้เสร็จสิ้น เมื่อคุณติดตั้งปอนด์สำเร็จแล้ว มันจะสร้างไฟล์ปรับแต่งของปอนด์ใน /etc ซึ่งก็คือ pound.cfg

เราต้องแก้ไขรายละเอียดเซิร์ฟเวอร์และแบ็กเอนด์เพื่อสร้างสมดุลระหว่างโหลดระหว่างเว็บเซิร์ฟเวอร์ ไปที่ /etc และเปิดไฟล์ pound.cfg เพื่อแก้ไข


vi /etc/pound.cfg

ทำการเปลี่ยนแปลงตามที่แนะนำด้านล่าง


ListenHTTP
    Address 172.16.1.222
    Port 80
End

ListenHTTPS
    Address 172.16.1.222
    Port    443
    Cert    "/etc/pki/tls/certs/pound.pem"
End

Service
    BackEnd
        Address 172.16.1.204
        Port    8888
    End

    BackEnd
        Address 192.168.1.161
        Port    5555
    End
End

ไฟล์ pound.cfg ของฉันจะมีหน้าตาเป็นแบบนี้

ภายใต้แท็ก “ListenHTTP ” และ “ListenHTTPS ” คุณต้องป้อน ที่อยู่ IP ของเซิร์ฟเวอร์ที่คุณได้ติดตั้ง POUND

ตามค่าเริ่มต้น เซิร์ฟเวอร์จะจัดการคำขอ HTTP ผ่านพอร์ต 80 และคำขอ HTTPS ผ่านพอร์ต 443 ภายใต้แท็ก “บริการ ” คุณสามารถเพิ่มแท็กย่อยที่เรียกว่า “BackEnd ” ได้ตามต้องการ แท็ก BackEnd มีที่อยู่ IP และหมายเลขพอร์ตที่เว็บเซิร์ฟเวอร์กำลังทำงานอยู่

ตอนนี้ให้บันทึกไฟล์หลังจากแก้ไขอย่างถูกต้องแล้วรีสตาร์ทบริการ POUND โดยใช้คำสั่งใดคำสั่งหนึ่งด้านล่างนี้


/etc/init.d/pound restart 
OR
service pound restart
OR
systemctl restart pound.service

4. ตอนนี้ก็ถึงเวลาตรวจสอบแล้ว เปิดเว็บเบราว์เซอร์สองตัวเพื่อตรวจสอบว่าการกำหนดค่าของเราทำงานได้ดีหรือไม่ ในแถบที่อยู่ให้พิมพ์ที่อยู่ IP ของเกตเวย์ POUND ของคุณและดูว่ามีอะไรปรากฏขึ้น

คำขอแรกควรโหลด webserver01 ตัวแรก และคำขอที่สองจากเว็บเบราว์เซอร์อื่นควรโหลด webserver02 ตัวที่สอง

นอกจากนี้ ลองนึกถึงสถานการณ์เช่น หากคุณมี เว็บเซิร์ฟเวอร์สองเครื่อง ที่ต้องโหลดบาลานซ์ และประสิทธิภาพของเซิร์ฟเวอร์ตัวหนึ่งดีและประสิทธิภาพของตัวอื่นไม่ดีนัก

ดังนั้นเมื่อทำการปรับสมดุลโหลด คุณจะต้องพิจารณาว่าเซิร์ฟเวอร์ใดที่คุณต้องให้น้ำหนักมากกว่า แน่นอนว่าสำหรับเซิร์ฟเวอร์ที่มีสเป็คประสิทธิภาพที่ดี

เพื่อความสมดุลของการโหลด คุณเพียงแค่ต้องเพิ่มพารามิเตอร์ตัวเดียวภายในไฟล์ pound.cfg เรามาดูกันดีกว่า

คิดว่าเซิร์ฟเวอร์ 192.168.1.161:5555 เป็นเซิร์ฟเวอร์ที่ดีกว่า จากนั้นคุณต้องส่งคำขอเพิ่มเติมไปยังเซิร์ฟเวอร์นั้น ใต้แท็ก “BackEnd ” ซึ่งกำหนดค่าไว้สำหรับเซิร์ฟเวอร์ 192.168.1.161 ให้เพิ่มพารามิเตอร์ “ลำดับความสำคัญ ” ก่อนแท็กปิด

ดูตัวอย่างด้านล่าง

ช่วงที่เราใช้สำหรับพารามิเตอร์ “ลำดับความสำคัญ ” อยู่ระหว่าง 1-9 หากเราไม่ได้กำหนดไว้ จะมีการกำหนดค่าเริ่มต้นเป็น 5

จากนั้นโหลดก็จะสมดุลเท่าๆ กัน หากเรากำหนดหมายเลขลำดับความสำคัญ POUND จะโหลดเซิร์ฟเวอร์ที่มีหมายเลขลำดับความสำคัญสูงกว่าบ่อยขึ้น ดังนั้นในกรณีนี้ 192.168.1.161:5555 จะถูกโหลดบ่อยกว่าเซิร์ฟเวอร์ 172.16.1.204:8888

ขั้นตอนที่ 3: การวางแผนการพังทลายในกรณีฉุกเฉิน

แท็กฉุกเฉิน: แท็กนี้ใช้เพื่อโหลดเซิร์ฟเวอร์ในกรณีที่เซิร์ฟเวอร์ส่วนหลังทั้งหมดไม่ทำงาน คุณสามารถเพิ่มไว้หน้าแท็กปิดสุดท้ายของ pound.cfg ได้ดังนี้


“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND ติดตามเสมอว่าเซิร์ฟเวอร์แบ็กเอนด์ใดที่ยังมีชีวิตอยู่และเซิร์ฟเวอร์ใดที่ไม่ทำงาน เราสามารถกำหนดหลังจากผ่านไปกี่วินาทีที่ POUND ควรชำระเงินเซิร์ฟเวอร์แบ็กเอนด์โดยการเพิ่มพารามิเตอร์ “Alive ” ใน pound.cfg

คุณสามารถใช้พารามิเตอร์เป็น “Alive 30 ” เพื่อตั้งค่าเป็น 30 วินาที ปอนด์จะปิดการใช้งานเซิร์ฟเวอร์แบ็กเอนด์ชั่วคราวซึ่งไม่ตอบสนอง เมื่อเราบอกว่าเซิร์ฟเวอร์ไม่ตอบสนองอาจหยุดทำงานหรือไม่สามารถสร้างการเชื่อมต่อได้ในขณะนั้น

POUND จะตรวจสอบเซิร์ฟเวอร์แบ็กเอนด์ที่ถูกปิดใช้งานหลังจากทุกช่วงเวลาที่คุณกำหนดไว้ในไฟล์ pound.cfg ในกรณีที่เซิร์ฟเวอร์สามารถสร้างการเชื่อมต่อได้ จากนั้น POUND ก็สามารถกลับมาทำงานกับเซิร์ฟเวอร์ได้

7. POUND daemon จะถูกจัดการโดยคำสั่ง poundctl การมีสิ่งนั้นทำให้เราไม่จำเป็นต้องแก้ไขไฟล์ pound.cfg และเราสามารถออก Listner Server, BackEnd เซิร์ฟเวอร์และเซสชัน ฯลฯ ผ่านทาง คำสั่งเดียว


Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c กำหนดเส้นทางไปยังซ็อกเก็ตของคุณ
  2. -L/-l กำหนดผู้ฟังสถาปัตยกรรมของคุณ
  3. -S/-s กำหนดบริการ
  4. -B/-b กำหนดเซิร์ฟเวอร์แบ็กเอนด์

ดูหน้าคู่มือ poundctl สำหรับข้อมูลเพิ่มเติม

หวังว่าคุณจะสนุกกับการแฮ็กนี้และค้นพบตัวเลือกเพิ่มเติมเกี่ยวกับเรื่องนี้ อย่าลังเลที่จะแสดงความคิดเห็นด้านล่างสำหรับข้อเสนอแนะและแนวคิดใด ๆ เชื่อมต่อกับ Tecmint เพื่อรับวิธีการที่มีประโยชน์และล่าสุด

อ่านเพิ่มเติม: การติดตั้ง XR Crossroads Load Balancer สำหรับเว็บเซิร์ฟเวอร์