【Linux】haproxy快速搭建简单负载均衡

安装haproxy

代码语言:javascript
复制
yum install haproxy

haproxy配置文件配置

在这里我附上一个写好的配置文件,我会说明下需要改动的点

代码语言:javascript
复制
global
       # log 127.0.0.1 local0 info #[err warning info debug] //日志位置  
        log 127.0.0.1   local3
        maxconn 65535 #并发最大连接数
        daemon #设置成后台运行  
        nbproc 1 #进程数量  
        #pidfile /home/admin/haproxy/logs/haproxy.pid  
	#pidfile /usr/local/haproxy/haproxy.pid

defaults
log global
mode http #默认模式
option httplog #http日志格式
option dontlognull
option forwardfor
option httpclose
retries 2 #三次失败后认为服务器不可用
# option redispatch #如果cookie写入了serverId而客户端不会刷新cookie,当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
maxconn 65535 #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接默认的最大连接数
contimeout 5000 #连接超时
clitimeout 30000 #客户端超时
srvtimeout 30000 #服务器超时

frontend web_in
mode http
maxconn 65535
bind :80
acl is_a hdr_beg(host) -i a.example.com
acl is_b hdr_beg(host) -i 2linux.com
use_backend a_server if is_a
use_backend b_server if is_b
backend a_server
mode http #http 模式
#balance source
stats uri /haproxy
balance leastconn
cookie JSESSIONID prefix
stats hide-version
option httpclose
server hellen_3 192.168.56.119:80 weight 5 check inter 2000 rise 2 fall 3

backend b_server
mode http #http 模式
stats uri /haproxy
balance leastconn
#balance roundrobin
cookie JSESSIONID prefix

    stats   hide-version  
    option  httpclose
    server test_2   192.168.61.129:80 check  weight 5  check inter 2000 rise 2 fall 3 
    server test_3    192.168.61.132:80 check  weight 5  check inter 2000 rise 2 fall 3 

listen stats_auth
bind 192.168.31.81:8080 #集群管理界面访问ip
stats refresh 20s
stats enable
stats uri /admin-status #集群管理界面访问地址
stats auth admin:linux123 #登录用户名
stats admin if TRUE

设置域名对应的组

我们来看frontend web_in这部分

代码语言:javascript
复制
frontend web_in
mode http
maxconn 65535
bind :80
acl is_a hdr_beg(host) -i a.example.com
acl is_b hdr_beg(host) -i 2linux.com
use_backend a_server if is_a
use_backend b_server if is_b

backend b_server
mode http #http 模式
stats uri /haproxy
balance leastconn #使用的分配算法
cookie JSESSIONID prefix
stats hide-version
option httpclose
server test_2 192.168.61.129:80 check weight 5 check inter 2000 rise 2 fall 3
server test_3 192.168.61.132:80 check weight 5 check inter 2000 rise 2 fall 3

这里acl is_b hdr_beg(host) -i 2linux.com 表示2linux.com的访问对应到is_b组,use_backend b_server if is_b,表示is_b组时 对应到backend b_server块的内容。也就是如上图的 backend b_server,在这个块中我们设置其负载均衡的子节点。

设置子节点

代码语言:javascript
复制
backend b_server
mode http #http 模式
stats uri /haproxy
balance leastconn #使用的分配算法
cookie JSESSIONID prefix
stats hide-version
option httpclose
server test_2 192.168.61.129:80 check weight 5 check inter 2000 rise 2 fall 3
server test_3 192.168.61.132:80 check weight 5 check inter 2000 rise 2 fall 3

server test_2 ,server test_3为设置的子节点信息。
server test_2 192.168.61.129:80 check weight 5 check inter 2000 rise 2 fall 3
表示其中一个节点ip为192.168.61.129:80 , 权重weight为5(权重越高请求几率越高) ,check inter 2000 rise 2 fall 3 集群安全检查 2000毫秒检查一次,尝试两次第三次失败将被踢出集群。
如配置我在这里设置了两个节点 129和132.

管理页面

代码语言:javascript
复制
listen stats_auth
bind 192.168.61.130:8080 #集群管理界面访问ip
stats refresh 20s
stats enable
stats uri /admin-status #集群管理界面访问地址
stats auth admin:linux123 #登录用户名
stats admin if TRUE

这块的配置是集群的web管理页面,如配置注释配置即可

测试

我在129和132配置了不同的页面,我们可以访问进行测试。如下图可以看出测试成功

在这里插入图片描述
在这里插入图片描述