配置步骤

配置步骤

1、安装

yum -y install epel-release
yum -y install haproxy

2、编辑配置文件

vim /etc/haproxy/haproxy.cfg
配置文件中分五部分内容:

  • global: 设置全局配置参数,属于进程的配置,通常是和操作系统相关。
  • defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件;
  • frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend;
  • backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器;
  • Listen :frontend和backend的组合体。
global 							#全局配置信息
        	log 127.0.0.1 local3 info	#日志服务器
        	maxconn 4096			#最大连接数
                uid nobody				#用户身份
        #       uid 99
                gid nobody				#组身份
        #       gid 99
        	daemon					#守护进程方式后台运行
        	nbproc 1				#工作进程数量
        	pidfile /run/haproxy.pid	#haproxy进程ID存储位置

        defaults						#默认设置
        	log		   global
        	mode	   http			#工作模式 http ,tcp 是 4 层,http是 7 层
        	maxconn 2048			#最大连接数
        	retries 	3				#健康检查。3 次连接失败就认为服务器不可用
        	option	redispatch		
#如果 cookie 写入了 serverId 而客户端不会刷新 cookie,当serverId 对应的服务器挂掉后,强制定向到其他健康的服务器
        	contimeout	5000		#连接超时时间,单位毫秒ms
        	clitimeout	    50000		#客户端超时
        	srvtimeout	    50000		#服务器超时
        #timeout connect 5000
        #timeout client 50000
        #timeout server 50000
            option abortonclose		#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
            stats uri /admin?status		#设置统计页面的uri为/admin?stats
            stats realm Private lands	#设置统计页面认证时的提示内容
            stats auth admin:password	
#统计页面认证的用户和密码,如果要设置多个,另起一行写入即可。客户端使用elinks浏览器时不生效
            stats hide-version			#隐藏统计页面上的haproxy版本信息
        
        frontend http-in				#前端配置块。面对用户侧
        	bind 0.0.0.0:80			#监听地址和端口
        	mode http
        	log global
        	option httplog			#日志类别 http 日志格式
        	option httpclose			
#打开支持主动关闭功能,每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现
             acl html url_reg  -i  \.html$
#1、访问控制列表名称html。规则要求访问以html结尾的url时。use_backend  <服务器组>  if  <ACL名字>
             use_backend html-server if  html	#2、如果满足acl html规则,则推送给后端服务器 html-server
             default_backend html-server	#3、默认的后端服务器是 html-server
        
        backend html-server			#后端服务器名称为  html-server
        	mode http
        	balance roundrobin		#负载均衡的方式
        	option httpchk GET /index.html	#健康检查
        	cookie SERVERID insert indirect nocache	#客户端的 cookie 信息,允许插入serverid到cookie中,此处cookie号不同
        	server html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5	
#服务器ID,避免rr算法将客户机请求转发给其他服务器 ,对后端服务器的健康状况检查间隔为2000毫秒,连续2次健康检查成功,则认为是有效的,连续5次健康检查失败,则认为服务器宕机
        	server html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5

示例(修改三个服务器地址即可):

global 
    
    log         127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
 
    stats socket /var/lib/haproxy/stats
 
defaults 
       log        global 
       mode       tcp 
       option     tcplog 
       option     dontlognull 
       retries    3 
       option redispatch 
       maxconn 2000 
       contimeout      5s 
       clitimeout      120s 
       srvtimeout      120s 
 
listen rabbitmq_cluster 0.0.0.0:80#作为代理的服务器的IP和端口
       mode      tcp 
       balance roundrobin 
       server rabbit1  192.168.229.11:15672 check inter 5000 rise 2 fall 2 
       server rabbit2  192.168.229.12:15672 check inter 5000 rise 2 fall 2        
       server rabbit3  192.168.229.13:15672 check inter 2000 rise 2 fall 3


listen monitor
    bind 0.0.0.0:8100#监控页面的访问端口
    mode http
    option httplog
    stats enable
    stats uri /rabbitmqstats
    stats refresh 30s
    stats auth admin:admin       

3、添加域名解析

vim /etc/hosts

192.168.209.13 web1
192.168.209.14 web2

4、启动

systemctl start haproxy.service

查看日志

cat /var/log/messages

至此完成

❤️ 转载文章请注明出处,谢谢!❤️