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

วิธีการตั้งค่า Load Balancer ความพร้อมใช้งานสูงด้วย 'HAProxy' เพื่อควบคุมการรับส่งข้อมูลของเว็บเซิร์ฟเวอร์


HAProxy ย่อมาจาก High Availability proxy เป็นแอปพลิเคชั่นโอเพ่นซอร์สฟรีที่เขียนด้วยภาษาซี แอปพลิเคชัน HAProxy ใช้เป็น TCP/HTTP Load Balancer และสำหรับโซลูชันพร็อกซี การใช้งานแอปพลิเคชัน HAProxy ที่พบบ่อยที่สุดคือการกระจายปริมาณงานไปยังเซิร์ฟเวอร์หลายเครื่อง เช่น เว็บเซิร์ฟเวอร์ เซิร์ฟเวอร์ฐานข้อมูล ฯลฯ ซึ่งจะช่วยปรับปรุงประสิทธิภาพโดยรวมและความน่าเชื่อถือของสภาพแวดล้อมเซิร์ฟเวอร์

แอปพลิเคชันที่มีประสิทธิภาพและรวดเร็วนี้ถูกใช้โดยองค์กรที่มีชื่อเสียงระดับโลกหลายแห่ง ซึ่งรวมถึงแต่ไม่จำกัดเพียง Twitter, Reddit, GitHub และ Amazon พร้อมใช้งานสำหรับแพลตฟอร์ม Linux, BSD, Solaris และ AIX

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

สำหรับบทความนี้ เรากำลังใช้เวอร์ชันเสถียรล่าสุดของ HAProxy เช่น 1.5.10 ที่เผยแพร่เมื่อวันที่ 31 ธันวาคม 2014 และเรายังใช้ CentOS 6.5 สำหรับเรื่องนี้ด้วย การตั้งค่า แต่คำแนะนำด้านล่างยังใช้ได้กับการแจกแจง CentOS/RHEL/Fedora และ Ubuntu/Debian

การตั้งค่าสภาพแวดล้อมของฉัน

ที่นี่เซิร์ฟเวอร์ HAProxy ของตัวโหลดบาลานซ์ของเรามีชื่อโฮสต์เป็น websrv.tecmintlocal.com พร้อมที่อยู่ IP 192.168.0.125

การตั้งค่าเซิร์ฟเวอร์ HAProxy
Operating System	:	CentOS 6.5
IP Address		: 	192.168.0.125
Hostname		: 	websrv.tecmintlocal.com
การตั้งค่าเซิร์ฟเวอร์เว็บไคลเอ็นต์

อีกสี่เครื่องนั้นเปิดใช้งานและทำงานกับเว็บเซิร์ฟเวอร์เช่น Apache

Web Server #1 :	CentOS 6.5 [IP: 192.168.0.121] - [hostname: web1srv.tecmintlocal.com]
Web Server #2 :	CentOS 6.5 [IP: 192.168.0.122] - [hostname: web2srv.tecmintlocal.com]
Web Server #3 :	CentOS 6.5 [IP: 192.168.0.123] - [hostname: web3srv.tecmintlocal.com]
Web Server #4 :	CentOS 6.5 [IP: 192.168.0.124] - [hostname: web4srv.tecmintlocal.com]

ขั้นตอนที่ 1: การติดตั้ง Apache บนเครื่องไคลเอนต์

1. ก่อนอื่น เราต้องติดตั้ง Apache ในเซิร์ฟเวอร์ทั้งสี่ตัว และแบ่งปันไซต์ใดไซต์หนึ่ง เพื่อติดตั้ง Apache ในเซิร์ฟเวอร์ทั้งสี่ที่นี่ เราจะใช้คำสั่งต่อไปนี้

yum install httpd		[On RedHat based Systems]
apt-get install apache2	[On Debian based Systems]

2. หลังจากติดตั้งเว็บเซิร์ฟเวอร์ Apache บนคอมพิวเตอร์ไคลเอนต์ทั้งสี่เครื่อง คุณสามารถตรวจสอบเซิร์ฟเวอร์ใดก็ได้ว่า Apache ทำงานอยู่หรือไม่โดยการเข้าถึงผ่านทางที่อยู่ IP ในเบราว์เซอร์

http://192.168.0.121

ขั้นตอนที่ 2: การติดตั้งเซิร์ฟเวอร์ HAProxy

3. ใน Linux สมัยใหม่ส่วนใหญ่ในปัจจุบัน HAPRoxy สามารถติดตั้งได้อย่างง่ายดายจากพื้นที่เก็บข้อมูลพื้นฐานเริ่มต้นโดยใช้ตัวจัดการแพ็คเกจเริ่มต้น yum หรือ apt-get .

ตัวอย่างเช่น หากต้องการติดตั้ง HAProxy บนเวอร์ชัน RHEL/CentOS/Fedora และ Debian/Ubuntu ให้รันคำสั่งต่อไปนี้ ที่นี่ฉันได้รวมแพ็คเกจ openssl ไว้ด้วย เนื่องจากเราจะตั้งค่า HAProxy ด้วยการรองรับ SSL และ NON-SSL

yum install haproxy openssl-devel	[On RedHat based Systems]
apt-get install haproxy		[On Debian based Systems]

หมายเหตุ: ใน Debian Whezzy 7.0 เราจำเป็นต้องเปิดใช้งานพื้นที่เก็บข้อมูล backports โดยการเพิ่มไฟล์ใหม่ backports.list ภายใต้ไดเรกทอรี “/etc/apt/sources.list.d/” ที่มีเนื้อหาดังต่อไปนี้

echo "deb http://cdn.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list.d/backports.list

ถัดไป อัพเดตฐานข้อมูลที่เก็บและติดตั้ง HAProxy

apt-get update
apt-get install haproxy -t wheezy-backports

ขั้นตอนที่ 3: กำหนดค่าบันทึก HAProxy

4. ต่อไป เราต้องเปิดใช้งานคุณลักษณะการบันทึกใน HAProxy สำหรับการดีบักในอนาคต เปิดไฟล์การกำหนดค่า HAProxy หลัก '/etc/haproxy/haproxy.cfg' ด้วยตัวแก้ไขที่คุณเลือก

vim /etc/haproxy/haproxy.cfg

จากนั้น ทำตามคำแนะนำเฉพาะดิสโตรเพื่อกำหนดค่าคุณสมบัติการบันทึกใน HAProxy

บน RHEL/CentOS/Fedora

ใต้ #Global settings ให้เปิดใช้งานบรรทัดต่อไปนี้

log         127.0.0.1 local2
บน Ubuntu/Debian

ใต้ #Global settings ให้แทนที่บรรทัดต่อไปนี้

log /dev/log        local0
log /dev/log        local1 notice 

กับ,

log         127.0.0.1 local2

5. ต่อไป เราต้องเปิดใช้งานการรับ UDP syslog ในไฟล์การกำหนดค่า '/etc/rsyslog.conf' เพื่อแยกไฟล์บันทึกสำหรับ HAProxy ภายใต้ /var/log ไดเรกทอรี เปิดไฟล์ 'rsyslog.conf' ของคุณด้วยโปรแกรมแก้ไขที่คุณเลือก

vim /etc/rsyslog.conf

ไม่พบ ModLoad และ UDPServerRun ที่นี่เซิร์ฟเวอร์ของเราจะรับฟัง พอร์ต 514 เพื่อรวบรวมบันทึกลงใน syslog

Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

6. ต่อไป เราต้องสร้างไฟล์แยกต่างหาก 'haproxy.conf' ภายใต้ไดเร็กทอรี '/etc/rsyslog.d/' เพื่อกำหนดค่า ไฟล์บันทึกแยกต่างหาก

vim /etc/rsyslog.d/haproxy.conf

ผนวกบรรทัดต่อไปนี้เข้ากับไฟล์ที่สร้างขึ้นใหม่

local2.*	/var/log/haproxy.log

สุดท้ายให้เริ่มบริการ rsyslog ใหม่เพื่ออัปเดตการเปลี่ยนแปลงใหม่

service rsyslog restart