一、直接在Centos服务器上部署haproxy负载均衡
1. haproxy的优点:
负载均衡里比较常用的有nginx,HAproxy,还有linux自带的lvs,一般nginx就够了,不过相比nginx,haproxy还是有不少的优点:
1,haproxy可以代理任何基于TCP的东西--而不仅仅是HTTP。即haproxy工作在第4层或者是第7层,而nginx只能在第7层。
2,相比nginx有非常多的负载均衡算法,包括“最少连接数(least connections)”策略,将后端服务器和最少连接数关联起来;
3,请求可以通过各种各样的东西发送:cookies、URL字符串、客户端IP,等等。
4,提供专用的状态页来告诉你后端服务器的状态、运行时间以及很多齐全的指标。
2. haproxy的下载安装
haproxy下载地址:http://www.haproxy.com 我这里使用的是:haproxy-1.4.22,下载后执行tar,进入目录执行以下命令完成安装。
mkdir /opt/modules/haproxy
make TARGET=linux26 PREFIX=/opt/modules/haproxy install
3. haproxy的主要配置
在haproxy目录下创建配置文件:haproxy.conf 内容如下:
[root@kermit conf]# cat /opt/modules/haproxy/haproxy.conf
global
log 127.0.0.1 local0
maxconn 4096
chroot /opt/modules/haproxy
daemon
nbproc 1
pidfile /opt/modules/haproxy/haproxy.pid
debug
defaults
log 127.0.0.1 local3
mode http
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 65535
balance roundrobin
stats uri /haproxy-stats
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web_proxy *:80
server web1 127.0.0.1:98 check inter 2000 rise 2 fall 5
server web2 127.0.0.1:99 check inter 2000 rise 2 fall 5
4. haproxy的启动和使用
保存好配置文件后,执行命令启动haproxy:
/opt/modules/haproxy/sbin/haproxy -f /opt/modules/haproxy/haproxy.conf &
这里需要注意的是,因为haproxy监听的是 80 端口,所以在启动之前,先确定nginx里不再监听80端口(如上面的配置文件,我服务器上的nginx监听的是98,99端口),这样才能实现haproxy监听80端口,接收到80端口的请求时将这些请求均衡地转发给98,99端口从而实现负载均衡。
如上面说的haproxy第4点优点,haproxy提供专用的状态页。在配置文件中我们能看到有一项配置:stats uri /haproxy-stats 正是这个配置使得我们通过访问 /haproxy-stats来查看haproxy统计信息,截图如下:
二、服务器上使用docker快速搭建Haproxy代理服务
搜索Haproxy镜像,下载aproxy镜像latest版本,我们选择官方镜像。
docker search haproxy#HAProxy - The Reliable, High Performance TCP… STARS 1616 OFFICIAL [OK]docker pull haproxylatest: Pulling from library/haproxy33847f680f63: Pull complete
添加haproxy配置文件,镜像包中也没有找到haproxy配置文件,自己手动添加吧,为了后续方便维护,可以直接将配置目录挂载到容器。
#cat /etc/haproxylisten redisbind 0.0.0.0:6379mode tcpmaxconn 100server rabbitmq 192.168.11.42:6379 # 配置实际要访问的地址tcp-request content accept#启动容器docker run -d --name haproxy_REDIS --net=host /-v /etc/haproxy:/usr/local/etc/haproxy /haproxy
此时即成功启动haproxy代理服务。