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


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

  1. Supports virtual hosts.
  2. Configurable.
  3. When a backend server is failed or recovered from a failure, it detects it automatically and bases its load balancing decisions according to that.
  4. It rejects incorrect requests.
  5. No specified browser or webservers.

มาดูวิธีทำให้แฮ็คนี้สำเร็จ

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

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: กำหนดค่า Pound Load Balancer

3. ตอนนี้ถึงเวลาทำการกำหนดค่าให้เสร็จสิ้น เมื่อคุณติดตั้ง pound สำเร็จแล้วมันจะสร้างไฟล์ config ของปอนด์ใน/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: การวางแผนรายละเอียดกรณีฉุกเฉิน

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

“Emergency
           Address 192.168.5.10
           Port        8080
   End”

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

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

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

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

Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c defines path to your socket.
  2. -L / -l defines the listener of your architecture.
  3. -S / -s defines the service.
  4. -B / -b defines the backend servers.

ดูข้อมูลเพิ่มเติมได้ที่หน้า man poundctl

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