Haproxy - Web负载均衡解决方案
Haproxy是一款支持虚拟主机提供高可用性、负载均衡以及基于TCP和HTTP应用的代理
一、常用的负载调度算法
1. 轮询[RR]
后端节点有序的轮流分配到任务
2. 最小连接数[LC]
当第一个节点被分配的任务量大于第二节点时任务将被分配到第二个节点上,以此类推
3. 来源访问[SH]
会记录下客户访问的节点,之后当客户再次访问时,就访问那个节点[可以基于IP、Cookie等]
二、Web负载均衡解决方案
1. 拓扑图
一台作为Haproxy以及两台Nginx模拟Web集群
主机 | 操作系统 | IP 地址 | 主要软件 |
---|---|---|---|
Nginx 服务器 1 | CentOS 7 | 192.168.0.10 | nginx |
Nginx 服务器 2 | CentOS 7 | 192.168.0.20 | nginx |
Haproxy 服务器 | CentOS 7 | 192.168.0.50 | haproxy |
2. 部署Nginx服务器
yum -y install pcre pcre-devel zlib zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
wget -P /opt http://nginx.org/download/nginx-1.20.0.tar.gz
cd /opt
tar -zxvf nginx-1.20.0.tar.gz
cd /opt/nginx-1.20.0
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx
make -j && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
ln -s /usr/local/nginx/conf/nginx.conf /etc/nginx.conf
echo '
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/nginx.s