การตั้งค่าเว็บเซิร์ฟเวอร์โหลดบาลานซ์โดยใช้ 'POUND' บน RHEL/CentOS
POUND เป็นโปรแกรมปรับสมดุลโหลดที่พัฒนาโดยบริษัท ITSECURITY เป็นเครื่องมือพร็อกซีย้อนกลับแบบโอเพ่นซอร์สน้ำหนักเบาซึ่งสามารถใช้เป็นโหลดบาลานเซอร์ของเว็บเซิร์ฟเวอร์เพื่อกระจายโหลดไปยังเซิร์ฟเวอร์ต่างๆ มีข้อดีหลายประการที่ POUND มอบให้กับผู้ใช้ซึ่งสะดวกมากและทำงานได้อย่างถูกต้อง
- รองรับโฮสต์เสมือน
- กำหนดค่าได้
- เมื่อเซิร์ฟเวอร์แบ็กเอนด์ล้มเหลวหรือกู้คืนจากความล้มเหลว เซิร์ฟเวอร์จะตรวจพบโดยอัตโนมัติและพิจารณาการตัดสินใจเรื่องการปรับสมดุลโหลดตามนั้น
- มันปฏิเสธคำขอที่ไม่ถูกต้อง
- ไม่มีเบราว์เซอร์หรือเว็บเซิร์ฟเวอร์ที่ระบุ
มาดูกันว่าแฮ็คนี้จะทำได้อย่างไร
ก่อนอื่น คุณจะต้องมีสถานการณ์เพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับการดำเนินการนี้ให้สำเร็จ ดังนั้นฉันจะใช้สถานการณ์ที่มีเว็บเซิร์ฟเวอร์สองตัวและเซิร์ฟเวอร์เกตเวย์หนึ่งตัวซึ่งจำเป็นต้องสร้างสมดุลระหว่างคำขอที่มาถึงเซิร์ฟเวอร์เกตเวย์ไปยังเว็บเซิร์ฟเวอร์
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 ได้ที่:
- 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]
- -c กำหนดเส้นทางไปยังซ็อกเก็ตของคุณ
- -L/-l กำหนดผู้ฟังสถาปัตยกรรมของคุณ
- -S/-s กำหนดบริการ
- -B/-b กำหนดเซิร์ฟเวอร์แบ็กเอนด์
ดูหน้าคู่มือ poundctl สำหรับข้อมูลเพิ่มเติม
หวังว่าคุณจะสนุกกับการแฮ็กนี้และค้นพบตัวเลือกเพิ่มเติมเกี่ยวกับเรื่องนี้ อย่าลังเลที่จะแสดงความคิดเห็นด้านล่างสำหรับข้อเสนอแนะและแนวคิดใด ๆ เชื่อมต่อกับ Tecmint เพื่อรับวิธีการที่มีประโยชน์และล่าสุด
อ่านเพิ่มเติม: การติดตั้ง XR Crossroads Load Balancer สำหรับเว็บเซิร์ฟเวอร์