mkdir -p /home/cpic/zyj/haproxy
cd /home/cpic/zyj/haproxy
在当前目录下新建haproxy.cfg
vim haproxy.cfg
内容如下:
global
log 127.0.0.1 local2
chroot /usr/local/etc/haproxy #锁定运行目录
pidfile /var/run/haproxy.pid
maxconn 4000 #每个haproxy进程的最大并发连接数,要考虑到ulimit -n的大小限制
user root #运行haproxy的用户
group root #运行haproxy的用户组
daemon
nbproc 2 #开启的haproxy进程数,与CPU保持一致
#nbthread 4 #指定每个haproxy进程开启的线程数,默认为每个进程一个线程
#cpu-map 1 0 #绑定haproxy 进程至指定CPU
#cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
#maxsslconn 100000 #SSL每个haproxy进程ssl最大连接数
maxconnrate 100000 #每个进程每秒最大连接数
spread-checks 3 #后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间
defaults
mode tcp #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
log global
retries 3
timeout connect 10s #连接超时
timeout client 1m #客户端超时
timeout server 1m #服务器超时
########统计页面配置########
listen admin_status
bind 0.0.0.0:9999 #监听端口
mode http #http的7层模式
option httplog #采用http日志格式
#log 127.0.0.1 local0 err
maxconn 10
stats refresh 30s #统计页面自动刷新时间
stats uri /status #统计页面url
stats realm Haproxy \ statistic #统计页面密码框上提示文本
stats auth admin:HA@2020 #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息
frontend main
bind *:5000 # 指定前端端口
mode tcp
default_backend master
backend master # 指定后端机器及端口,负载方式为轮询
balance roundrobin
mode tcp
server mycat_201 192.168.1.201:8066 check weight 1 maxconn 2000 check inter 2000 rise 2 fall 3
server mycat_46 192.168.10.46:8066 check weight 1 maxconn 2000 check inter 2000 rise 2 fall 3
192.168.1.201:8066和192.168.10.46:8066是我部署的mycat服务。haproxy和mycat之间通过tcp通信,所以mode配置的tcp。
之所以新建haproxy.cfg文件,是因为docker部署的haproxy容器没有默认的配置文件,直接启动的话会报错。
docker pull haproxy:2.1
docker run -d --name haproxy -p 5000:5000 -p 9999:9999 -v /home/cpic/zyj/haproxy:/usr/local/etc/haproxy haproxy:2.1
5000和9999这两个端口都是在haproxy.cfg文件里配置的。
通过docker logs -f haproxy看看服务是否成功启动了。
使用Navicat for mysql建立连接,地址用haproxy所在宿主服务器的ip地址,端口用5000。用户名和密码使用mycat的即可。