本文最后更新于2 天前,其中的信息可能已经过时,如有错误请发送邮件到
baicola@126.com
1.haproxy的特点有哪些?
概念:HAProxy是一个开源的、高性能的基于TCP和HTTP应用代理的高可用的、负载均衡服务软件,它支持双机热备、高可用、负载均衡、虚拟主机、基于TCP和HTTP的应用代理、图形界面查看信息等功能
适用场景:高负载、访问量很大、需要会话保持及代理应用代理的业务应用。
特点:
- 健康检查功能:Haproxy 会自动的将该故障服务器摘除,当故障的服务器恢复后,Haproxy还会自动将该服务器自动加入进来提供服务。
- 代理功能: HAProxy的代理模式,可以使得所有应用服务器不会暴露到公共网络上,即后面的节点服务器不需要公网IP地址。
HAProxy支持两种主要代理模式:
- 基于4层TCP应用层代理
- 基于7层httpd代理
2.如可安装部署haproxy+keepalived高可用集群?
服务 | IP | 描述 |
Keepalived vip Haproxy 负载均衡 主服务器 | vip:172.10.10.200 rip:172.10.10.100 | keepalived做为高可用 haproxy做为4层或7层负载均衡 |
Keepalived vip Haproxy 负载均衡 备用服务器 | vip:172.10.10.200 rip:172.10.10.101 | keepalived做为高可用 haproxy做为4层或7层负载均衡 |
web服务器 | 172.10.10.102 | 后端真实服务器 |
web服务器 | 172.10.10.103 | 后端真实服务器 |
1.服务器环境准备
#修改主机名
[root@SMR ~]# hostnamectl set-hostname haproxy_master
[root@SMR1 ~]# hostnamectl set-hostname haproxy_bakup
[root@SMR2 ~]# hostnamectl set-hostname haproxy_web1
[root@SMR3 ~]# hostnamectl set-hostname haproxy_web2
#配置域名解析
cat >> /etc/hosts <<EOF
172.10.10.100 haproxy_master
172.10.10.101 haproxy_bakup
172.10.10.102 haproxy_web1
172.10.10.103 haproxy_web2
EOF
for ((i=100;i<=103;i++));do scp /etc/hosts/ 172.10.10.$i:/etc/hosts ;done
#关闭防火墙和selinx(四台机子)
ystemctl stop firewalld
setenforce 0
#配置时间同步
yum -y install ntp
crontab -e
*/1 * * * * /usr/sbin/ntpdate ntp.aliyun.com
2.安装keepvlied(master 和 backup端)
#安装keepvlied
[root@haproxy_master ~]# yum -y install keepalived
#修改keepvlied配置文件
[root@haproxy_master ~]# echo '' > /etc/keepalived/keepalived.conf
[root@haproxy_master ~]# vim /etc/keepalived/keepalived.conf
[root@haproxy_master ~]# scp /etc/keepalived/keepalived.conf 172.10.10.10
1:/etc/keepalived/keepalived.conf
[root@haproxy_bakup ~]# vim /etc/keepalived/keepalived.conf #修改一手
#编写haproxt状态检测脚本(两台机子都做)
[root@haproxy_master ~]# vim /etc/keepalived/check_haproxy.sh
#!/bin/bash echo "check haproxy" HA=`ps -C haproxy --no-header |wc -l ` if [ $HA -eq 0 ];then #判断haproxy的进程是存在,0无haproxy进程,则haproxy宕机 systemctl stop keepalived fi
[root@haproxy_master ~]# chmod +x /etc/keepalived/check_haproxy.sh
3.安装web(web1 web2)
#安装httpd
Yum -y install htppd
#编写配置文件
[root@haproxy_web1 ~]# echo "server1" > /var/www/html/index.html
[root@haproxy_web1 ~]# systemctl start httpd
You have new mail in /var/spool/mail/root
[root@haproxy_web1 ~]# curl 127.0.0.1
server1
[root@haproxy_web2 ~]# echo "server2" > /var/www/html/index.html
[root@haproxy_web2 ~]# systemctl start httpd
You have new mail in /var/spool/mail/root
[root@haproxy_web2 ~]# curl 127.0.0.1
server2
4.安装haproxy(master和backup)
#安装haproxy(两台机子都做)
yum -y install haproxy
#修改配置文件
[root@haproxy_master ~]# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.abk
[root@haproxy_backup ~]# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.abk
[root@haproxy_master ~]# vim /etc/haproxy/haproxy.cfg
[root@haproxy_master ~]# scp /etc/haproxy/haproxy.cfg 172.10.10.101:/etc/haproxy/haproxy.cfg
listen stats bind 0.0.0.0:880 stats enable stats uri /status stats auth admin:123 # 访问方式: VIP:880 stats refresh frontend web_in bind 0.0.0.0:80 use_backend web backend web balance roundrobin server web1 172.10.10.102:80 check weight 2 server web2 172.10.10.103:80 check weight 8 |
5.测试
#ip飘逸测试+关闭haproxy
[root@haproxy_master ~]# systemctl restart keepalived #记得适用status命令查看一手有没有启动
[root@haproxy_backup ~]# systemctl restart keepalived #记得适用status命令查看一手有没有启动
#查看访问
[root@haproxy_bakup ~]# for ((i=1;i<=10;i++));do curl 172.10.10.200 ;done
注意:此时172.10.10.200 在master端
[root@haproxy_master ~]# systemctl stop haproxy #主机端关闭haproxy
[root@haproxy_master ~]# ip a
[root@haproxy_master ~]# ip a
[root@haproxy_master ~]# for ((i=1;i<=10;i++));do curl 172.10.10.200 ;done #访问
#成功!
#master启动haproxy
[root@haproxy_bakup ~]# systemctl start haproxy