1、Haproxy 实现七层负载**
Keepalived + Haproxy + nginx 先是两台nginx服务器配置不同网站发布页面,便于区分 然后Haprox给nginx做负载均衡 最后keepalived给Haproxy做高可用 [root@kakaops ~]# yum -y install haproxy /etc/haproxy/haproxy.cfg global //关于进程的全局参数 log 127.0.0.1 local2 info #日志服务器,local2是日志轮转指定的 pidfile /var/run/haproxy.pid #pid文件 maxconn 4000 #最大连接数 user haproxy #用户 group haproxy #组 daemon #守护进程方式后台运行 nbproc 1 #工作进程数量 cpu内核是几就写几 defaults eeeeeeeeeeeeeee用于为其它配置段提供默认参数 listen 是frontend和backend的结合体 frontend 虚拟服务VIrtual Server backend 真实服务器Real Server 调度器可以同时为多个站点调度,如果使用frontend、backend的方式: frontend1 backend1 frontend2 backend2 frontend3 backend3 Keepalived + Haproxy 拓扑结构 [vip: 192.168.246.17] [LB1 Haproxy] [LB2 Haproxy] 192.168.246.169 192.168.246.161 [httpd] [httpd] 192.168.246.162 192.168.246.163 一、Haproxy实施步骤 1. 准备工作(集群中所有主机) [root@ha-proxy-master ~]# cat /etc/hosts 127.0.0.1 localhost 192.168.246.169 ha-proxy-master 192.168.246.161 ha-proxy-slave 192.168.246.162 test-nginx1 192.168.246.163 test-nginx2 2. RS配置 配置好网站服务器,测试所有RS,所有机器安装nginx [root@test-nginx1 ~]# yum install -y nginx [root@test-nginx1 ~]# systemctl start nginx [root@test-nginx1 ~]# echo "test-nginx1" >> /usr/share/nginx/html/index.html # 所有nginx服务器按顺序输入编号,方便区分。 3. 调度器配置Haproxy(主/备)都执行 [root@ha-proxy-master ~]# yum -y install haproxy [root@ha-proxy-master ~]# cp -rf /etc/haproxy/haproxy.cfg{,.bak} [root@ha-proxy-master ~]# sed -i.bak -r '/^[ ]*#/d;/^$/d' /etc/haproxy/haproxy.cfg haproxy的原来的配置文件清空,用下面给的 [root@ha-proxy-master ~]# vim /etc/haproxy/haproxy.cfg global log 127.0.0.1 local2 info pidfile /var/run/haproxy.pid maxconn 4000 #优先级低 user haproxy group haproxy daemon #以后台形式运行ha-proxy nbproc 1 #工作进程数量 cpu内核是几就写几 defaults mode http #工作模式 http ,tcp 是 4 层,http是 7 层 log global retries 3 #健康检查。3次连接失败就认为服务器不可用,主要通过后面的check检查 option redispatch #服务不可用后重定向到其他健康服务器。 maxconn 4000 #优先级中 contimeout 5000 #ha服务器与后端服务器连接超时时间,单位毫秒ms clitimeout 50000 #客户端超时 srvtimeout 50000 #后端服务器超时 listen stats bind *:8080 stats enable stats uri /haproxy #使用浏览器访问 http://192.168.246.169/haproxy,可以看到服务器状态 stats auth qianfeng:123 #用户认证,客户端使用elinks浏览器的时候不生效 frontend web mode http bind *:80 #监听哪个ip和什么端口 option httplog #日志类别 http 日志格式 acl html url_reg -i \.html$ #1.访问控制列表名称html。规则要求访问以html结尾的url use_backend httpservers if html #2.如果满足acl html规则,则推送给后端服务器httpservers default_backend httpservers #默认使用的服务器组 backend httpservers #名字要与上面的名字必须一样 balance roundrobin #负载均衡的方式 server http1 192.168.246.162:80 maxconn 2000 weight 1 check inter 1s rise 2 fall 2 server http2 192.168.246.163:80 maxconn 2000 weight 1 check inter 1s rise 2 fall 2nginx-server-1 192.168.138.132 nginx-server-2 192.168.138.135
3、负载均衡访问验证和监控界面访问验证 http://192.168.138.133:8080/haproxy 注意,我们监听的是8080端口,浏览器默认是80端口 宕机一台nginx,刷新页面发现,监控页面http1显示宕机