Haproxy01-安装Haproxy
1、HAProxy安装(二进制)
1.1、部署环境
- 软件版本
- lua:5.4.3
- haproxy:2.5.6
- 系统环境
- 192.168.1.101:CentOSLinuxrelease7.7.1908(Core)
- 192.168.1.102:CentOSLinuxrelease7.7.1908(Core)
- 192.168.1.254:CentOSLinuxrelease7.7.1908(Core)
- 在192.168.1.254上安装haproxy,提供负载均衡能力。在192.168.1.101和192.168.1.102上安装httpd,提供后端服务。
- HAProxy的机器上有两个IP,将10.1.1.12当作外网IP。

1.2、安装httpd提供后端服务
1、安装httpd
//在192.168.1.101和192.168.1.102上安装httpd ]# yum install httpd -y
2、提供测试页
//在192.168.1.101上执行 ]# cat > /var/www/html/index.html << EOF <h1>192.168.1.101, test1</h1> EOF //在192.168.1.102上执行 ]# cat > /var/www/html/index.html << EOF <h1>192.168.1.102, test2</h1> EOF
3、启动httpd服务
//在192.168.1.101和192.168.1.102上执行 ]# systemctl start httpd.service
4、测试后端服务是否可用
//在192.168.1.254上执行 ]# curl http://192.168.1.101:80 <h1>192.168.1.101, test1</h1> ]# curl http://192.168.1.102:80 <h1>192.168.1.102, test2</h1>
1.3、安装HAProxy
- 在192.168.1.254上安装HAProxy
1.3.1、安装LUA
]# yum -y install gcc gcc-c++ openssl-devel systemd-devel -y ]# wget http://www.lua.org/ftp/lua-5.4.3.tar.gz ]# tar zvfx lua-5.4.3.tar.gz ]# mkdir -p /apps/lua-5.4.3/ ]# cd lua-5.4.3/ ]# make linux ]# make install INSTALL_TOP=/apps/lua-5.4.3/
1.3.2、安装HAProxy
1、安装HAProxy
]# wget https://www.haproxy.org/download/2.5/src/haproxy-2.5.6.tar.gz ]# tar zvfx haproxy-2.5.6.tar.gz ]# cd haproxy-2.5.6/ ]# mkdir /apps/haproxy-2.5.6/ ]# make TARGET=linux-glibc USE_LUA=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_PCRE=1 USE_ZLIB=1 LUA_LIB=/apps/lua-5.4.3/lib LUA_INC=/apps/lua-5.4.3/include ]# make install PREFIX=/apps/haproxy-2.5.6/
2、创建系统服务
]# cd /apps/ ]# ln -s haproxy-2.5.6 haproxy ]# cat > /usr/lib/systemd/system/haproxy.service << EOF [unit] Description=HAProxy Load Balancer After=syslog.target network.target [Service] ExecStartPre=/apps/haproxy/sbin/haproxy -f /apps/haproxy/haproxy.cfg -c -q ExecStart=/apps/haproxy/sbin/haproxy -Ws -f /apps/haproxy/haproxy.cfg ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target EOF ]# systemctl daemon-reload
3、配置HAProxy
- 创建配置文件haproxy.cfg
- listen段可以独立完整的定义前端和后端。但这里使用listen只是为了配置HAProxy的状态页面,所以就没有定义后端服务器,HAProxy的状态页面与后端无关。
- frontend和backend配合使用。
- frontend定义一个前端。
- backend定义一组后端服务器。
]# cat > /apps/haproxy/haproxy.cfg << EOF
global
###后台运行
#以守护进程的方式运行harpoxy
daemon
#将所有守护进程的pid写入文件
pidfile /apps/haproxy/haproxy.pid
###安全加固:隔离和删除特权
#增加了安全级别,以防未知的漏洞被利用。指定的目录为 空目录 且任何用户都没有 写权限
chroot /apps/haproxy/empty
#运行haproxy的用户
user haproxy
#运行haproxy的用户组
group haproxy
#通过服务管理器将日志发送到127.0.0.1进行日志记录[error warring debug info]
log 127.0.0.1 local3 info
#每个进程的最大并发连接数(注意,在某些平台上,“select”轮询器不能可靠地使用超过1024个文件描述符)
maxconn 4096
#重新加载后,旧进程的存在时间不能超过这个时间
hard-stop-after 5m
#默认情况下,所有文件名都相对于包含该配置文件的目录
default-path config
#如果在加载配置文件时有任何报错,就拒绝启动(保持配置清洁)
zero-warning
#定义当前节点的名称,用于HA场景中多haproxy进程共享同一个IP地址时
node node_name1
#当前实例的描述信息
description 'global_hh1'
defaults
#设置haproxy的代理模式(7层代理http,4层代理tcp)
mode http
#日志遵循global的配置
log global
#启用HTTPS请求、会话状态和计时器的日志记录
option httpslog
#启用空连接日志记录
option dontlognull
#如果后端服务器需要获得客户端的真实IP,需要配置此参数,将可以从Http Header中获得客户端IP(插入X-Forwarded-For头)
option forwardfor
#每次请求完毕后主动关闭http通道,HA-proxy不支持keep-alive模式
option httpclose
#在服务端,每次请求完毕后主动关闭http通道,HA-proxy不支持keep-alive模式
option http-server-close
#在连接失败的情况下启用会话重新分配(当后端服务器挂了之后,将请求强制分配到其他健康的后端服务器)
option redispatch
#健康状态检测,3次连接失败就认为该后端服务器不可用
retries 3
#一次健康状态检测的超时时间
timeout check 2000
#等待完成HTTP请求的最大时间
timeout http-request 10s
#在队列中等待连接槽空闲的最大时间
timeout queue 15s
#haprox将用户请求转发到后端服务器后,等待后端服务器响应的超时时间
timeout connect 10s
#haproxy作为客户端,和后端服务器之间的空闲超时时间
timeout client 1m
#haproxy作为服务器,和用户之间的空闲连接超时时间
timeout server 1m
#等待新的HTTP请求出现的最大时间(默认持久连接超时时间)
timeout http-keep-alive 2m
#设置隧道客户端和服务器端的最大不活动时间。(for websocket)
timeout tunnel 4h
#每个进程的最大并发连接数,优先级比global中的高
maxconn 2048
listen stats
bind :18080
#开启haproxy的状态页面
stats enable
#通过这个url访问haproxy的状态页面
stats uri /haproxystatus
#访问haproxy的状态页面的用户名和密码,可以设置多个用户名
stats auth admin1:admin1
stats auth admin2:admin2
#启用管理后端服务器(在状态页面上启动/禁用后端服务器)
stats admin if TRUE
#设置haproxy的状态页面的提示信息
stats realm Haproxy\ status
#设置监控页面刷新时间:5s
stats refresh 10s
#隐藏监控页面的HAproxy版本信息
stats hide-version
#default段中开启了日志,no log关闭日志
#no log
frontend frontend_hh1
#当前实例的描述信息
description "frontend frontend_hh1"
#设置监听端口,即haproxy提供的web服务端口
bind :80
#默认的后端服务器是server_hh1
default_backend server_hh1
backend server_hh1
#在后端中使用的负载平衡算法。
balance roundrobin
###添加一个后端服务器。
#check开启健康状态检查,inter检查的时间间隔,rise几次成功的检查就认为后端服务器可用,fall几次失败的检测就认为后端服务器不可用。
server httpA 192.168.1.101:80 check inter 1500 rise 3 fall 2 weight 1
#添加一个后端服务器。
server httpB 192.168.1.102:80 check inter 1500 rise 3 fall 2 weight 1
EOF
- 配置chroot
]# mkdir /apps/haproxy/empty/ ]# chmod 000 /apps/haproxy/empty/
- 创建启动用户haproxy
]# useradd -r haproxy ]# usermod -G haproxy haproxy
- 开启haproxy日志
]# vim /etc/rsyslog.conf $ModLoad imudp #去掉注释 $UDPServerRun 514 #去掉注释 local3.* /apps/haproxy/logs/haproxy.log #添加 ]# systemctl restart rsyslog ]# chown haproxy.haproxy -R /apps/haproxy/
1.4、启动HAProxy
1、检查配置文件
]# /apps/haproxy/sbin/haproxy -c -f /apps/haproxy/haproxy.cfg
2、启动HAProxy
systemctl enable haproxy.service systemctl start haproxy.service systemctl stop haproxy.service systemctl restart haproxy.service
3、测试HAProxy
- 在其他机器访问HAProxy
]# curl http://10.1.1.12:80 <h1>192.168.1.101, test1</h1> ]# curl http://10.1.1.12:80 <h1>192.168.1.102, test2</h1>
- 登录HAProxy的状态页面(http://10.1.1.12:18080/haproxystatus)

1
# #

浙公网安备 33010602011771号