HAProxy对于高可用性,负载平衡一个非常快速和可靠的解决方案,它支持基于HTTP的TCP和应用。现在,天最大化网站的正常运行时间是交通繁忙的网站非常关键。这是不可能的,单个服务器设置。然后,我们需要一些高可用性环境,可以方便地与单台服务器故障管理。
本文将帮助你在Ubuntu,Debian和LinuxMint设置HAProxy的负载均衡环境。这将配置一个
4层负载平衡 (
传输层 )。这将加载和传输请求平衡的基础上的IP地址和端口号不同-2服务器。
网络详细信息 -
下面是我们的网络服务器。存在与运行的Apache2和侦听端口80和一个HAProxy的服务器3 Web服务器。
Web Server Details:
Server 1: web1.example.com 192.168.1.101
Server 2: web2.example.com 192.168.1.102
Server 3: web3.example.com 192.168.1.103
HAProxy Server:
HAProxy: haproxy 192.168.1.12
第1步 - 安装HAProxy
现在启动安装程序。 SSH您HAProxy的服务器作为特权用户,并使用以下命令安装HAProxy。
$ sudo add-apt-repository ppa:vbernat/haproxy-1.5
$ sudo apt-get update
$ sudo apt-get install haproxy
第2步 - 负载均衡配置与HAProxy
现在编辑HAProxy的缺省配置文件
/etc/haproxy/haproxy.cfg
并开始配置。
# vi /etc/haproxy/haproxy.cfg
默认设置:
你会发现像下面的一些默认配置。如果你没有这个想法够了,你可以保持原样。
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
添加HAProxy的监听器:
现在告诉HAProxy监听新的连接。按照下面的配置HAProxy将192.168.1.12的IP地址的端口80。
frontend Local_Server
bind 192.168.1.12:80
mode http
default_backend My_Web_Servers
添加后端Web服务器:
根据上面的配置HAProxy,现在正在侦听端口80现在定义后端Web服务器,其中HAProxy的发送请求。
backend nodes
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1rnHost:localhost
server web1.example.com 192.168.1.101:80
server web2.example.com 192.168.1.102:80
server web3.example.com 192.168.1.103:80
启用HAProxy的统计(可选)
现在,如果你愿意,你可以通过在HAProxy的配置文件中添加下面的配置使HAProxy的统计数据。
listen stats *:1936
stats enable
stats hide-version
stats refresh 30s
stats show-node
stats auth username:password
stats uri /stats
第3步 - 最终HAProxy的配置文件
最终的配置文件可能看起来像下面。
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend Local_Server
bind 192.168.1.12:80
mode http
default_backend My_Web_Servers
backend My_Web_Servers
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1rnHost:localhost
server web1.example.com 192.168.1.101:80
server web2.example.com 192.168.1.102:80
server web3.example.com 192.168.1.103:80
listen stats *:1936
stats enable
stats hide-version
stats refresh 30s
stats show-node
stats auth username:password
stats uri /stats
第4步 - 重新启动HAProxy
现在,你已经在你的服务器上HAProxy的所有必要的修改。现在,使用以下命令重新启动服务之前,请验证配置文件。
$ haproxy -c -f /etc/haproxy/haproxy.cfg
如果上面的命令返回的输出配置文件是有效的然后重新启动HAProxy的服务
$ sudo service haproxy restart
第5步 - 验证HAProxy的设置
在这个阶段,我们有完整的功能HAProxy的设置。在每个Web服务器节点我有显示服务器的主机名演示index.html页面,所以我们可以很容易地服务器的网页进行区分。 现在访问IP 192.168.0.12的80端口的Web浏览器和命中刷新(如上配置)。你会看到,HAProxy的是由一个发送请求到后端服务器一(按循环算法)。
每次刷新,你可以在HAProxy的是由一个发送请求一个后端服务器。 参考:
http://www.haproxy.org/download/1.5/doc/configuration.txt