วิธีตั้งค่า HAProxy เป็น Load Balancer สำหรับ Nginx ใน CentOS 8

Withi Tang Kha Haproxy Pen Load Balancer Sahrab Nginx Ni Centos 8



High Availability Proxy หรือที่เรียกโดยย่อว่า HAProxy เป็นตัวโหลดบาลานเซอร์ที่มีน้ำหนักเบาและรวดเร็ว ซึ่งเพิ่มเป็นสองเท่าของพร็อกซีเซิร์ฟเวอร์ ในฐานะโหลดบาลานซ์ มันมีบทบาทสำคัญในการกระจายทราฟฟิกเว็บขาเข้าไปยังเซิร์ฟเวอร์หลายเว็บโดยใช้เกณฑ์บางอย่าง ในการทำเช่นนี้ จะช่วยให้มั่นใจว่ามีความพร้อมใช้งานสูงและทนทานต่อข้อผิดพลาดในกรณีที่มีคำขอพร้อมกันมากเกินไปซึ่งอาจโอเวอร์โหลดเว็บเซิร์ฟเวอร์เดียว

HaProxy ถูกใช้โดยไซต์ยอดนิยม เช่น Tumblr, GitHub และ StackOverflow ในคู่มือนี้ เราจะแนะนำคุณตลอดการติดตั้ง HAProxy ในการตั้งค่าเว็บเซิร์ฟเวอร์ที่ขับเคลื่อนด้วย Nginx

การตั้งค่าแล็บ

3 อินสแตนซ์ของเซิร์ฟเวอร์ CentOS 7 ดังที่แสดง







ชื่อโฮสต์            ที่อยู่ IP

load_balancer      3.17.12.132
server_01           3.19.229.234
server_02          3.17.9.217

ขั้นตอนที่ 1: แก้ไขไฟล์ /etc/hosts สำหรับโหลดบาลานเซอร์

ในการเริ่มต้น ให้เข้าสู่ระบบโหลดบาลานเซอร์และแก้ไขไฟล์ /etc/hosts เพื่อรวมชื่อโฮสต์และที่อยู่ IP ของเว็บเซิร์ฟเวอร์ทั้งสองดังที่แสดง



$ เพราะ / เป็นต้น / เจ้าภาพ
3.19.229.234   server_01
3.17.9.217     เซิร์ฟเวอร์-02



เมื่อเสร็จแล้ว ให้บันทึกการเปลี่ยนแปลงและออกจากไฟล์กำหนดค่า





ตอนนี้ไปที่แต่ละเว็บเซิร์ฟเวอร์และอัปเดต / etc / โฮสต์ ไฟล์ที่มีที่อยู่ IP และชื่อโฮสต์ของโหลดบาลานเซอร์

3.17.12.132   ตัวจัดสรรภาระงาน

หลังจากนั้น ให้ยืนยันว่าคุณสามารถ ping ตัวจัดสรรภาระงานจาก server_01



และเช่นเดียวกันจาก server_02

นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณสามารถ ping เซิร์ฟเวอร์จากโหลดบาลานเซอร์ได้

สมบูรณ์แบบ ! เซิร์ฟเวอร์ทั้งหมดสามารถสื่อสารกับโหลดบาลานเซอร์ได้!

ขั้นตอนที่ 2: ติดตั้งและกำหนดค่า HA Proxy บนโหลดบาลานเซอร์

เนื่องจาก HA Proxy พร้อมใช้งานจากพื้นที่เก็บข้อมูลอย่างเป็นทางการของ CentOS เราจึงจะติดตั้งโดยใช้ตัวจัดการแพ็คเกจ yum หรือ dnf

แต่เช่นเคยให้อัปเดตระบบก่อน

# ยำปรับปรุง

ถัดไป ติดตั้ง HA Proxy ตามภาพ

# ยำติดตั้ง แฮพร็อกซี่

เมื่อติดตั้งสำเร็จ ให้ไปที่ไดเรกทอรี haproxy

# ซีดี / เป็นต้น / แฮพร็อกซี่

แนวทางปฏิบัติที่ดีที่สุดกำหนดให้เราต้องสำรองข้อมูลไฟล์การกำหนดค่าก่อนที่จะทำการแก้ไขใดๆ ดังนั้นสำรองข้อมูล haproxy.cfg ไฟล์โดยการเปลี่ยนชื่อ

# เอ็มวี haproxy.cfg haproxy.cfg.bak

ถัดไป ดำเนินการต่อและเปิดไฟล์กำหนดค่า

เพราะ haproxy.cfg

ตรวจสอบให้แน่ใจว่าคุณได้ทำการแก้ไขตามที่แสดง

#------------------------------------------------- --------------------
# การตั้งค่าส่วนกลาง
#------------------------------------------------- --------------------
ทั่วโลก
บันทึก         127.0.0.1 ท้องถิ่น2 #บันทึกการกำหนดค่า

โครต / เคยเป็น / lib / แฮพร็อกซี่
ไฟล์ pid / เคยเป็น / วิ่ง / haproxy.pid
แม็กซ์คอนน์ 4000
ผู้ใช้        haproxy #Haproxy ทำงานภายใต้ผู้ใช้และกลุ่ม 'haproxy'
กลุ่ม       แฮปร็อกซี
ภูต

# เปิดซ็อกเก็ตยูนิกซ์สถิติ
ซ็อกเก็ตสถิติ / เคยเป็น / lib / แฮพร็อกซี่ / สถิติ

#------------------------------------------------- --------------------
# ค่าเริ่มต้นทั่วไปที่ส่วน 'ฟัง' และ 'แบ็กเอนด์' ทั้งหมดจะทำ
# ใช้หากไม่ได้กำหนดไว้ในบล็อกของพวกเขา
#------------------------------------------------- --------------------
ค่าเริ่มต้น
โหมด                    http
log     ส่วนกลาง
ตัวเลือก                  httplog
ตัวเลือก                 dontlognull
ตัวเลือก http-ปิดเซิร์ฟเวอร์
ตัวเลือกไปข้างหน้าสำหรับ       ยกเว้น 127.0.0.0 / 8
ตัวเลือก                 จัดส่งซ้ำ
ลองใหม่ 3
หมดเวลา http-request 10 วินาที
คิวหมดเวลา             1m
หมดเวลาเชื่อมต่อ         10 วินาที
หมดเวลาไคลเอ็นต์             1m
หมดเวลาเซิร์ฟเวอร์          1m
หมดเวลา http-keep-alive 10 วินาที
ตรวจสอบการหมดเวลา           10 วินาที
แม็กซ์คอนน์ 3000

#------------------------------------------------- --------------------
#การกำหนดค่าการตรวจสอบ HAProxy
#------------------------------------------------- --------------------
ฟังการตรวจสอบ haproxy3 * : 8080 #Haproxy Monitoring ทำงานบนพอร์ต 8080
โหมด http
ตัวเลือกไปข้างหน้าสำหรับ
ตัวเลือก httpclose
สถิติ เปิดใช้งาน
สถิติการแสดงตำนาน
รีเฟรชสถิติ 5 วินาที
สถิติยูริ / สถิติ #URL สำหรับการตรวจสอบ HAProxy
สถานะของอาณาจักร Haproxy\ สถิติ
สถิติรับรองความถูกต้อง Password123: Password123 #User และ Password สำหรับการเข้าสู่แดชบอร์ดการตรวจสอบ
ผู้ดูแลระบบสถิติ ถ้า จริง
default_backend แอปหลัก #นี่เป็นตัวเลือกสำหรับการตรวจสอบแบ็กเอนด์

#------------------------------------------------- --------------------
# การกำหนดค่าส่วนหน้า
#------------------------------------------------- --------------------
ส่วนหน้าหลัก
ผูก * : 80
ตัวเลือก http-ปิดเซิร์ฟเวอร์
ตัวเลือกไปข้างหน้าสำหรับ
default_backend แอปหลัก

#------------------------------------------------- --------------------
# BackEnd ปัดเศษเป็นอัลกอริทึมสมดุล
#------------------------------------------------- --------------------
แอปแบ็กเอนด์หลัก

วงเวียนสมดุล #อัลกอริทึมสมดุล

ตัวเลือก httpchk HEAD / เอชทีทีพี / 1.1 \r\nโฮสต์:\ localhost
#Check แอปพลิเคชันเซิร์ฟเวอร์พร้อมใช้งานแล้ว - รหัสสถานะ 200

เซิร์ฟเวอร์ server_01 3.19.229.234: 80 ตรวจสอบ #งินx1

เซิร์ฟเวอร์ server_02 3.17.9.217: 80 ตรวจสอบ #งินx2

อย่าลืมแก้ไขชื่อโฮสต์และที่อยู่ IP ของเว็บเซิร์ฟเวอร์ตามที่ระบุในสองบรรทัดสุดท้าย บันทึกการเปลี่ยนแปลงและออก

ขั้นตอนต่อไปคือการกำหนดค่า Rsyslog เพื่อให้สามารถบันทึกสถิติ HAProxy

# เพราะ / เป็นต้น / rsyslog.conf

ตรวจสอบให้แน่ใจว่าคุณไม่ได้แสดงความคิดเห็นบรรทัดด้านล่างเพื่ออนุญาตการเชื่อมต่อ UDP

$Modโหลด โคลน
$UDPServerRun 514

จากนั้น ดำเนินการต่อและสร้างไฟล์คอนฟิกูเรชันใหม่ haproxy.conf

# เพราะ / เป็นต้น / rsyslog.d / haproxy.conf

วางบรรทัดต่อไปนี้ บันทึกและออก

local2.=ข้อมูล / เคยเป็น / บันทึก / haproxy-access.log #สำหรับบันทึกการเข้าถึง
local2.notice / เคยเป็น / บันทึก / haproxy-info.log #สำหรับข้อมูลบริการ - แบ็กเอนด์ ตัวโหลดบาลานซ์

เพื่อให้การเปลี่ยนแปลงมีผล ให้รีสตาร์ท rsyslog daemon ดังที่แสดง:

# systemctl รีสตาร์ท rsyslog

จากนั้นเริ่มและเปิดใช้งาน HAProxy

# systemctl เริ่ม rsyslog
# systemctl เปิดใช้งาน rsyslog

ตรวจสอบว่า HAProxy กำลังทำงานอยู่

# rsyslog สถานะ systemctl

ขั้นตอนที่ 3: ติดตั้งและกำหนดค่า Nginx

ตอนนี้เหลือส่วนเดียวคือการติดตั้ง Nginx ลงชื่อเข้าใช้แต่ละเซิร์ฟเวอร์และอัปเดตแพ็คเกจระบบก่อน:

# ยำปรับปรุง

ถัดไป ติดตั้ง EPEL (แพ็คเกจเสริมสำหรับ Enterprise Linux)

# ยำติดตั้ง ปล่อยความอบอุ่น

ในการติดตั้ง Nginx ให้รันคำสั่ง:

# ยำติดตั้ง จิงซ์

ถัดไป เริ่มและเปิดใช้งาน Nginx

# systemctl เริ่ม nginx
# systemctl เปิดใช้งาน nginx

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

สำหรับ server_01

# เสียงสะท้อน 'server_01 สวัสดี ยินดีต้อนรับเข้าสู่เว็บเซิร์ฟเวอร์เครื่องแรก' > index.html

สำหรับ server_02

# เสียงสะท้อน 'server_02 สวัสดี ยินดีต้อนรับเข้าสู่เว็บเซิร์ฟเวอร์ที่สอง' > index.html

เพื่อให้การเปลี่ยนแปลงมีผล ให้รีสตาร์ท Nginx

# systemctl รีสตาร์ท nginx

ขั้นตอนที่ 4: ทดสอบว่าโหลดบาลานเซอร์ทำงานอยู่หรือไม่

ในที่สุดเราก็มาถึงจุดที่เราต้องการดูว่าการกำหนดค่าทำงานหรือไม่ ดังนั้นให้ลงชื่อเข้าใช้ load balancer และรันคำสั่ง curl ซ้ำๆ

# ขด 3.17.12.132

คุณควรได้รับเอาต์พุตสำรองบนเทอร์มินัลที่แสดงค่าของ index.html จาก server_01 และ server_02

ตอนนี้มาทดสอบโดยใช้เว็บเบราว์เซอร์ เรียกดูที่อยู่ IP ของตัวจัดสรรภาระงานของคุณ

http: // load-balancer-ที่อยู่ IP

หน้าแรกจะแสดงเนื้อหาจากเว็บเซิร์ฟเวอร์ใดๆ


ตอนนี้รีเฟรชหน้าเว็บและตรวจดูว่าแสดงเนื้อหาจากเว็บเซิร์ฟเวอร์อื่นหรือไม่

สมบูรณ์แบบ ! โหลดบาลานซ์กำลังกระจายทราฟฟิก IP อย่างเท่าเทียมกันระหว่างสองเว็บเซิร์ฟเวอร์ !
สรุปบทช่วยสอนนี้เกี่ยวกับวิธีการติดตั้งและกำหนดค่า HAProxy บน CentOS 8 เราจะขอบคุณคำติชมของคุณเป็นอย่างมาก