Haproxy 是一款性能出色的负载均衡软件,用于搭建 Web 集群具有很多优势。以下是使用 Haproxy 搭建 Web 集群的一般步骤:
1. 安装 Haproxy
在您的服务器上,可以通过相应的包管理工具进行安装。例如,在基于 Debian 或 Ubuntu 的系统上,可以使用以下命令:
sudo apt-get update
sudo apt-get install haproxy
2. 配置 Haproxy
Haproxy 的主要配置文件通常是 /etc/haproxy/haproxy.cfg 。以下是一个简单的配置示例:
globallog 127.0.0.1 local0log 127.0.0.1 local1 noticemaxconn 4096defaultslog globalmode httpoption httplogoption dontlognulltimeout connect 5000timeout client 50000timeout server 50000frontend http_frontbind *:80default_backend http_backbackend http_backserver web1 192.168.1.101:80 checkserver web2 192.168.1.102:80 check
在上述配置中,frontend 部分定义了前端监听的端口和规则,backend 部分定义了后端的服务器列表和健康检查等。
3. 启动 Haproxy 服务
安装和配置完成后,可以使用以下命令启动 Haproxy 服务:
sudo systemctl start haproxy
4. 检查服务状态
可以使用以下命令检查 Haproxy 服务的状态:
sudo systemctl status haproxy
5. 测试负载均衡效果
您可以通过访问 Haproxy 监听的端口,多次刷新页面,观察请求是否被均衡分发到后端的 Web 服务器上。
例如,如果 Haproxy 监听在 80 端口,您可以在浏览器中输入服务器的 IP 地址,多次刷新查看结果。
请注意,以上只是一个简单的示例,实际的生产环境中可能需要更复杂的配置,例如根据 URL 进行路由、设置会话保持、优化性能等。同时,还需要确保后端的 Web 服务器已正确配置和运行。
[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc*
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz
[root@localhost ~]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/
[root@localhost html]# echo "test web01" > test.html[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# nginx -t
[root@localhost ~]# nginx ##开启nginx进程
[root@localhost ~]# netstat -anpt | grep nginx
2:编译安装Haproxy
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc*
[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz
[root@localhost ~]# cd haproxy-1.5.19/
[root@localhost haproxy-1.5.19]# make TARGET=linux26
[root@localhost haproxy-1.5.19]# make install注释:
linux22 for Linux 2.2
linux24 for Linux 2.4 and above (default)
linux24e for Linux 2.4 with support for a working epoll (> 0.21)
linux26 for Linux 2.6 and above
solaris for Solaris 8 or 10 (others untested)
freebsd for FreeBSD 5 to 8.0 (others untested)
openbsd for OpenBSD 3.1 to 4.6 (others untested)
cygwin for Cygwin
generic for any other OS.
custom to manually adjust every setting
3:Haproxy服务器配置
(1)建立haproxy配置文件
[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy
[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
(2)创建服务脚本
[root@localhost haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy
[root@localhost ~]# chkconfig --add haproxy
(3)Haproxy配置介绍
globallog 127.0.0.1 local0 \\配置日志记录,local0为日志设备,默认是系统日志log 127.0.0.1 local1 notice \\日志级别为notice#log loghost local0 info maxconn 4096 \\最大连接数uid 99 \\用户uidgid 99 \\用户giddaemon \\以守护进程的方式运行#debug \\调试模式,输出启动信息到标准输出#quiet \\安静模式,启动时无输出defaultslog global \\使用globle中定义的日志mode http \\模式为httpoption httplog \\采用http的格式记录日志option dontlognull \\保证HAProxy不记录上级负载均衡发送过来的用于检测状态数据的心跳包retries 3 \\检查节点连接失败的次数,超过3次认为节点不可用# redispatch \\当负载很高时,自动结束当前队列处理比较久的连接maxconn 2000 \\最大连接数contimeout 5000 \\连接超时时间msclitimeout 50000 \\客户端超时时间mssrvtimeout 50000 \\服务器超时时间ms
listen webcluster 0.0.0.0:80 \\定义群集和监听的端口号option httpchk GET /index.html \\检查服务器的index.html文件,心跳检测URL设置balance roundrobin \\负载均衡的调度算法为轮询server inst1 192.168.1.61:80 check inter 2000 fall 3 \\定义在线节点server inst2 192.168.1.62:80 check inter 2000 fall 3 check inter 2000是检测心跳频率(每2000ms检测一次),fall 3是3次失败认为服务器不可用注释:
haproxy共有八种调度算法
1)balance leastconn 最少连接数
2)balance roundrobin 轮询
3)balance source 根据客户端IP进行哈希的方式
4)static-rr 根据权重
5)uri 根据请求的URI
6)url_param 根据请求的URl参数
7)hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
8)rdp-cookie(name) 根据cookie(name)来锁定并哈希每一次TCP请求chroot /usr/share/haproxy \\也就是改变程序执行时所参考的根目录位置,如果有此代码,需要创建此目录关于日志级别
static Level DEBUG
DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。
static Level INFO
INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。
static Level WARN
WARN level表明会出现潜在错误的情形。
static Level ERROR
ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。
static Level FATAL
FATAL level指出每个严重的错误事件将会导致应用程序的退出。
另外,还有两个可用的特别的日志记录级别:
static Level ALL
ALL Level是最低等级的,用于打开所有日志记录。
static Level OFF
OFF Level是最高等级的,用于关闭所有日志记录。
4:启动
[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start
5:测试web群集
刷新页面进行测试
或使用脚本测试
[root@localhost ~]# for i in $(seq 10); do curl http://192.168.1.60/test.html ;done
6:Haproxy的日志
编辑/etc/haproxy/haproxy.conf
[root@localhost ~]# vi /etc/haproxy/haproxy.cfg
globallog 127.0.0.1 local3
编写haproxy日志文件
[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf
$ModLoad imudp
$UDPServerRun 514
local3.* /var/log/haproxy.log
重启haproxy和rsyslog服务
[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]# systemctl restart haproxy
访问网站后查看日志
[root@localhost ~]# cat /var/log/haproxy.log