HAProxy 搭建 Web 群集笔记
一、HAProxy 简介
HAProxy(High Availability Proxy)是一款使用C语言编写的*及开放源代码软件,提供高可用性、负载均衡以及基于TCP和HTTP的应用程序代理。它非常适用于负载大的web站点,能够支持数以万计的并发连接请求,其可靠性和稳定性可与硬件级的F5负载均衡设备相媲美。
1. HAProxy 主要特性
- 高可靠性和稳定性:支持高并发连接,最大可支持40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s。
- 多种负载均衡算法:支持多达8种负载均衡算法,如RR(轮询)、LC(最少连接)、SH(基于源地址的哈希)等。
- 会话保持:支持Session会话保持,可以根据Cookie、源地址等实现请求粘性。
- 灵活的代理功能:支持四层和七层代理转发,能够实现动静分离。
- 强大的健康检查:默认支持主动的TCP端口、HTTP URL、脚本等方式的健康检查。
- 详细的日志和统计:提供丰富的日志和统计接口,方便监控和管理。
2. 常见的负载均衡策略
- RR(Round Robin):轮询调度,按顺序分配请求到不同的服务器。
- LC(Least Connections):最小连接数算法,根据服务器当前连接数动态分配请求。
- SH(Source Hashing):基于来源访问调度算法,根据源IP或Cookie等信息分配请求。
二、HAProxy 搭建 Web 群集步骤
1. 环境准备
假设我们有以下三台服务器:
- HAProxy 服务器:IP 地址为 192.168.238.10
- Nginx 服务器1:IP 地址为 192.168.238.20
- Nginx 服务器2:IP 地址为 192.168.238.30
2. 安装 Nginx 服务器
步骤:
-
在 Nginx 服务器上安装编译工具和开发包。
bash复制代码
yum install -y pcre-devel zlib-devel gcc gcc-c++ make
-
解压并编译安装 Nginx。
bash复制代码
tar zxvf nginx-1.15.0.tar.gz -C /opt/
cd /opt/nginx-1.15.0
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
make && make install
-
配置 Nginx 并启动服务。
bash复制代码
cd /usr/local/nginx/html
echo "this is Nginx Server 1" > test.html
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx
netstat -ntap | grep nginx
3. 安装 HAProxy
步骤:
-
关闭防火墙,将 HAProxy 安装包传到 /opt/ 目录下。
bash复制代码
systemctl stop firewalld
setenforce 0
tar zxvf haproxy-1.5.19.tar.gz -C /opt/
-
安装依赖包并编译安装 HAProxy。
bash复制代码
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
cd /opt/haproxy-1.5.19
make TARGET=linux2628 ARCH=x86_64 # 根据实际内核版本调整
make install
-
配置 HAProxy。
bash复制代码
mkdir /etc/haproxy
cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
vim /etc/haproxy/haproxy.cfg
配置文件(部分示例):
ini复制代码
global
log /dev/log local0 info
maxconn 4096
defaults
mode http
log global
option httplog
option dontlognull
retries 3
timeout connect 10s
timeout client 1m
timeout server 1m
listen webcluster 0.0.0.0:80
option httpchk GET /test.html
balance roundrobin
server inst1 192.168.238.