1. 源码编译安装haproxy 2.x,配置服务启动脚本。
2. 配置haproxy日志。
3. 配置haproxy实现web服务器负载均衡。
1. 源码编译安装haproxy 2.x,配置服务启动脚本。
1.1 源码编译安装前需要处理LUA依赖问题
1.下载lua安装包
#curl -R -O http://www.lua.org/ftp/lua-5.4.3.tar.gz
2.安装相关依赖包
#yum install gcc gcc-c++ make -y
3.解压
#tar zxf lua-5.4.3.tar.gz -C /usr/local/src/
#cd /usr/local/src/lua-5.4.3/
#make linux test
4.由于与默认版本不一致,故将默认的/usr/bin/lua拷贝至/src/lua。lua版本升级。
#cp src/lua /usr/bin/lua
1.2 下载haproxy包并解压
[root@lvs1 ~]# wget -c https://repo.huaweicloud.com/haproxy/2.4/src/haproxy-2.4.8.tar.gz
[root@lvs1 ~]# tar xf haproxy-2.4.8.tar.gz -C /usr/local/src/
[root@lvs1 ~]# cd /usr/local/src/haproxy-2.4.8/
[root@lvs1 ~]#yum -y install gcc openssl-devel pcre-devel systemd-devel
1.3 编译安装,指定路径并创建软连接。
[root@lvs1 haproxy-2.4.8]# make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.4.3/src/ LUA_LIB=/usr/local/src/lua-5.4.3/src/
指定安装路径:
[root@lvs1 haproxy-2.4.8]# make install PREFIX=/usr/local/haproxy
创建软连接:
[root@lvs1 haproxy-2.4.8]# ln -sv /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
‘/usr/sbin/haproxy’ -> ‘/usr/local/haproxy/sbin/haproxy’
[root@lvs1 haproxy-2.4.8]# ll /usr/sbin/haproxy
lrwxrwxrwx. 1 root root 31 Jan 12 11:36 /usr/sbin/haproxy -> /usr/local/haproxy/sbin/haproxy
1.4 haproxy 启动脚本配置
[root@lvs1 ~]# vim /usr/lib/systemd/system/haproxy.service
[unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /usr/local/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
[root@lvs1 ~]# systemctl daemon-reload
1.5提供启动配置
[root@lvs1 ~]# mkdir /etc/haproxy
[root@lvs1 ~]# vim /etc/haproxy/haproxy.cfg
global
maxconn 10000
chroot /usr/local/haproxy
stats socket /var/run/haproxy.state mode 600 level admin
log 127.0.0.1 local0
user haproxy
group haproxy
daemon
pidfile /var/run/haproxy/haproxy.pid
defaults
option httplog
log global
maxconn 100000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
timeout http-keep-alive 20000ms
timeout queue 15s
timeout tunnel 4h
listen stats
mode http
log 127.0.0.1 local0 err
bind 0.0.0.0:1088
stats enable
log global
stats uri /haproxy-status
stats auth luadmid:123456
listen app1
bind :80
server web1 192.168.150.12:80
server web2 192.168.150.13:80
1.6 创建用户
[root@lvs1 ~]# useradd -r -s /sbin/nologin -d /usr/local/haproxy/ haproxy
[root@lvs1 ~]# systemctl start haproxy.service
1.7 安装WEB服务器
LVS2:
[root@lvs2 ~]# yum install httpd -y
[root@lvs2 ~]# echo "web1 test page, ip :192.168.150.12." > /var/www/html/index.html
[root@lvs2 ~]# systemctl start httpd
LVS3:
[root@lvs3 ~]# yum install httpd -y
[root@lvs3 ~]# echo "web2 test page, ip :192.168.150.13." > /var/www/html/index.html
[root@lvs3 ~]# systemctl start httpd
之后再起第四台服务器进行测试即可。
2. 配置haproxy日志。
2.1 修改haproxy配置:
[root@lvs1 ~]# vim /etc/haproxy/haproxy.cfg
global
maxconn 10000
chroot /usr/local/haproxy
stats socket /var/run/haproxy.state mode 600 level admin
log 127.0.0.1 local2 info
user haproxy
group haproxy
daemon
pidfile /var/run/haproxy/haproxy.pid
defaults
option httplog
log global
maxconn 100000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
timeout http-keep-alive 20000ms
timeout queue 15s
timeout tunnel 4h
listen stats
mode http
log 127.0.0.1 local2 err
bind 0.0.0.0:1088
stats enable
log global
stats uri /haproxy-status
stats auth luadmid:123456
listen app1
bind :80
server web1 192.168.150.12:80
server web2 192.168.150.13:80
listen web_port
bind 192.168.150.11:80
mode http
log global
balance roundrobin
server web1 127.0.0.1:8080 check inter 3000 fall 2 rise 5
2.2修改rsyslog.conf配置:
#vim /etc/rsyslog.conf #去掉以下两列注释:
$ModLoad imudp
$UDPServerRun 514
在添加如下内容:
# Save haproxy messages also to haproxy.log
local2.* /var/log/haproxy.log
2.3启动服务:
#systemctl restart haproxy.service rsyslog
2.4查看生成的日志:
# tail /var/log/haproxy.log
之后再起第四台服务器进行测试即可。
3. 配置haproxy实现web服务器负载均衡。
frontend+backend配置实例
frontend web1
bind :88
log global
mode tcp
use_backend webserver1
backend webserver1
mode tcp
default-server inter 1000 weight 3
server app1 192.168.150.12:80 check
server app2 192.168.150.13:80 check