centos7编译安装haproxy
sudo yum install -y pcre-devel bzip2-devel gcc gcc-c++ make useradd -s /sbin/nologin -M haproxy #--创建一个不可登录系统,且没有家目录的用户 cd /home/admin/soft wget http://download.openpkg.org/components/cache/haproxy/haproxy-1.8.10.tar.gz tar -zxf haproxy-1.8.10.tar.gz cd haproxy-1.8.10 make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 sudo make install PREFIX=/usr/local/haproxy sudo cp haproxy /usr/sbin/ sudo mkdir -p /usr/local/haproxy/log sudo touch /usr/local/haproxy/log/haproxy.log
# # USE_PCRE=1 开启正则 USE_OPENSSL=1 开启openssl USE_ZLIB=1
# # USE_CPU_AFFINITY=1 为开启haproxy进程与CPU核心绑定,USE_SYSTEMD=1为支持使用 -Ws参数(systemd-aware master-worker 模式)启动Haproxy,从而实现单主进程多子进程运行模式。
准备system启动脚本
sudo cp examples/haproxy.init /etc/init.d/haproxy sudo chmod 755 /etc/init.d/haproxy sudo chkconfig --add haproxy sudo cp contrib/systemd/haproxy.service.in /lib/systemd/system/haproxy.service
准备系统配置文件
# cat /etc/sysconfig/haproxy # Add extra options to the haproxy daemon here. This can be useful for # specifying multiple configuration files with multiple -f options. # See haproxy(1) for a complete list of options. OPTIONS=""
配置各个负载的内核参数
# vim /etc/sysctl.conf net.ipv4.ip_nonlocal_bind = 1 #开启允许绑定非本机的IP,haporxy启动忽视VIP存在 net.ipv4.ip_forward = 1 #内核是否转发数据包
sudo sysctl -p
# 配置内核参数生效
配置文件
sudo mkdir /etc/haproxy sudo mkdir /var/lib/haproxy sudo mkdir /etc/haproxy/conf
# cat /etc/haproxy/haproxy.cfg #--------------全局配置---------------- global log 127.0.0.1 local0 notice #配置全局日志记录,local0为日志设备,notice为输出的日志级别,表示使用本地(127.0.0.1)机器上的rsyslog服务中的local0设备记录日志等级为notice的日志。 #log loghost local0 info #定义haproxy 日志级别 maxconn 20480 #可以接收的最大并发连接数 #chroot /usr/local/haproxy-1.5.15 #工作目录 pidfile /var/run/haproxy.pid #haproxy 进程PID文件 #maxconn 4000 #最大连接数 user haproxy #运行的程序用户 group haproxy #运行的程序用户组 daemon #创建1个进程进入deamon模式运行,以后台形式运行harpoxy #--------------------------------------------------------------------- #common defaults that all the 'listen' and 'backend' sections will #use if not designated in their block #--------------------------------------------------------------------- defaults mode http #所处理的类别,tcp是四层,http是七层,health只会返回OK,若是混合模式则mode不需要设置 log global #定义日志,采用全局定义 option dontlognull #不记录健康检查的日志信息 option httpclose #每次请求完毕后主动关闭http通道 option httplog #日志类别为http日志格式;如果是混合模式,此处还需要加上tcpclog #option forwardfor #后端服务器可以从Http Header中获得客户端ip option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器 balance roundrobin #设置默认负载均衡方式,轮询方式 timeout connect 10s #连接超时 timeout client 10s #客户端连接超时 timeout server 10s #服务器连接超时 timeout check 10s #健康检测的超时时间 maxconn 60000 #最大连接数 retries 3 #3次连接失败就为服务不可用 #--------------统计页面配置------------------ listen admin_stats #为haproxy访问状态监控页面配置,取名为admin_stats bind 0.0.0.0:8189 #监听端口 stats enable #启用监听端口 mode http #http的7层模式 log global # 继承global中log的定义 stats uri /stats #监控页面的url访问路径,即http://ip/stats访问监控页面 stats realm Haproxy\ Statistics #监控页面的密码框提示信息 stats auth admin:admin #监控页面的用户和密码admin,可以设置多个用户名 #stats hide-version #隐藏统计页面上HAProxy的版本信息 stats admin if TRUE #当通过认证才可管理 stats refresh 30s #页面自动刷新时间30s #---------------web设置----------------------- listen webcluster #定义webcluster服务器组。 bind 0.0.0.0:81 #定义haproxy前端部分监听的端口。 mode http #http的7模式 #option httpchk GET /index.html #心跳检测7层访问 log global #继承global中log的定义 maxconn 3000 #server进程可接受的最大并发连接数 balance roundrobin #负载均衡的方式:轮询 cookie SESSION_COOKIE insert indirect nocache #根据cookie轮询 server web01 10.6.76.27:1988 check inter 2000 fall 5 server web02 10.6.76.28:1988 check inter 2000 fall 5 #server web01 192.168.80.102:80 cookie web01 check inter 2000 fall 5 #server web02 192.168.80.103:80 cookie web01 check inter 2000 fall 5 # https://www.cnblogs.com/yangliheng/p/5852494.html
启动
测试
haproxy分发成功了