如何在Ubuntu和LinuxMint中安装配置HAProxy负载均衡

如何安装配置HAProxy的负载均衡在Ubuntu和LinuxMint。配置使用harproxy基于Debian的服务器上的多个服务器之间的负载平衡。

HAProxy对于高可用性,负载平衡一个非常快速和可靠的解决方案,它支持基于HTTP的TCP和应用。现在,天最大化网站的正常运行时间是交通繁忙的网站非常关键。这是不可能的,单个服务器设置。然后,我们需要一些高可用性环境,可以方便地与单台服务器故障管理。 HAProxy的 - 设置 - 图 本文将帮助你在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的-web1的 HAProxy的-web2的 HAProxy的-WEB3 每次刷新,你可以在HAProxy的是由一个发送请求一个后端服务器。 参考: http://www.haproxy.org/download/1.5/doc/configuration.txt