285572001 发表于 2018-12-31 07:08:35

keepalived高可用lvs集群,主/备和主/主模型

  利用keepalived高可用lvs集群,主/备和主/主;
  vrrp_script高可用双主nginx;
  

  keepalived主备:lvs-dr工作模型
  网络搭建:
  在前端2台调度器:
  DR1:172.18.11.111
  DR2:172.18.11.112
  VIP:172.18.11.7
  

  后端2台web服务器,运行nginx;
  RS1:172.18.11.11
  RS2:172.18.11.12
  

  搭建web服务器:
  提供简单的测试页面,以便容易观测到哪台RS被调度响应:
  在RS1上:

  ]# yum -y install nginx
  ]# systemctl start nginx.service
  ]# cd /usr/share/nginx/html/
  ]# cp index.html{,.bak}
  ]# vim index.html

   RS2-172.18.11.11
  在RS2上:
]# yum -y install nginx
]# systemctl start nginx.service
]# cd /usr/share/nginx/html/
]# cp index.html{,.bak}
]# vim index.html
   RS2-172.18.11.12
  

  在RS1上为方便设置内核参数,编写自动设置脚本:
  ]# vim skp.sh
http://s2.运维网.com/wyfs02/M00/80/32/wKioL1c7B_njhjPXAABPNYyd9Is219.png
  ]# chmod +x skp.sh
  ]# ./skp.sh start
  查看内核参数,确保生效:
  ]# cat /proc/sys/net/ipv4/conf/all/arp_ignore
  ]# cat /proc/sys/net/ipv4/conf/all/arp_announce
  

  此脚本传递给RS2:
  ]# scp skp.sh root@172.18.11.12:/root
  在RS2主机运行:

  ]# ./skp.sh start
  查看是否arp设置成功
  ]# cat /proc/sys/net/ipv4/conf/all/arp_ignore
  ]# cat /proc/sys/net/ipv4/conf/all/arp_announce
  

  在两个调度器上安装keepalived程序并编辑配置文件
  ]# yum -y install keepalived
  

  分别编辑两个调度器keepalived配置文件
  DR1配置:
  ]# vim /etc/keepalived/keepalived.conf
http://s1.运维网.com/wyfs02/M02/80/36/wKiom1c7G7_hTbinAABg_Z46wY8278.png
http://s4.运维网.com/wyfs02/M01/80/33/wKioL1c7HJXAy7H1AAAeww8mqeQ170.png
  

  DR2配置:
  只需修改state为备用和优先级即可,其它都保存不变:
  ]# vim /etc/keepalived/keepalived.conf
http://s5.运维网.com/wyfs02/M01/80/33/wKioL1c7HTnjRibzAABY2hOp8PM855.png
http://s4.运维网.com/wyfs02/M02/80/36/wKiom1c7HFOC3VyDAAAb2fO6XKU163.png
  

  在两台调度器上安装ipvsadm命令工具;
  安装ipvsadm并查看lvs集群:
  ]# yum -y install ipvsadm
  ]# ipvsadm -Ln
  显示内容:
http://s5.运维网.com/wyfs02/M02/80/33/wKioL1c7HjOyN_bNAAAxVTYGNZ8527.png
  可在DR1查看接口上的VIP,已经获得:
http://s3.运维网.com/wyfs02/M00/80/36/wKiom1c7HVOwuhFCAABiVBxiR48398.png
  

  找一台主机多次执行测试:
  ]# curl http://172.18.11.7
  会发现,访问请求是由两台RS交替响应的服务;即:
http://s1.运维网.com/wyfs02/M01/80/33/wKioL1c7HvfRvqgQAABi0hlBIYA922.png
  

  使DR1掉线即手动停止keepalived服务,观察DR2获得VIP负责集群调度;也可同时手动关闭一台RS上的web服务;仍能正常请求web服务;
  这就是keepalived基于主备工作模式健康状态检测,来提供高可用nginx的lvs集群服务;
  

  

  再做keepalived的主/模式主,来提供高可用nginx的lvs集群服务;
  只不过就是两个vrrp实例,一个是A的主B的备,一个是B的主A的备;
  DR1:172.18.11.111
  DR2:172.18.11.112
  VIP1:172.18.11.7
  VIP2:172.18.11.77
  

  RS1:172.18.11.11
  RS2:172.18.11.12
  

  在DR1上配置keepalived:

http://s1.运维网.com/wyfs02/M00/80/36/wKiom1c7Nr7BDzj8AABSnPLYb1M616.png
http://s2.运维网.com/wyfs02/M00/80/34/wKioL1c7N6nBSgXTAABUnaSX3VY959.png
http://s4.运维网.com/wyfs02/M00/80/34/wKioL1c7N6rRgJ_tAABanmReDas039.png
http://s1.运维网.com/wyfs02/M01/80/36/wKiom1c7NsLQ7Au6AAAOjLuCRds377.png
  注意:centos7中可能没有killall命令需要安装psmisc程序包,才能使用;
  ]# yum -y install psmisc
  

  在DR2上配置keepalived:
http://s4.运维网.com/wyfs02/M00/80/37/wKiom1c7N76wF7wjAABd4WwMEHA759.png
http://s2.运维网.com/wyfs02/M00/80/34/wKioL1c7OLbzHWLhAABJfkxT8pk138.png
http://s1.运维网.com/wyfs02/M02/80/37/wKiom1c7N8-QYDFRAABZi7-n4I0193.png
http://s1.运维网.com/wyfs02/M02/80/34/wKioL1c7OLjxsZ3KAAAGAuTZKyQ612.png
  

  编辑脚本通知机制:
http://s5.运维网.com/wyfs02/M00/80/34/wKioL1c7OY7hVfvpAABG0Mnd3gg806.png
  

  配置RS:
  在RS1上为方便设置内核参数,编写自动设置脚本:
http://s1.运维网.com/wyfs02/M02/80/34/wKioL1c7P6XAhoEnAABhhCH__O4178.png
  注意:此处有一大坑!要在两台RS上分别添加lo:1的本机路由条目:
  以便实现172.18.11.77能够被访问调度:
  ]# ifconfig lo:1 172.18.11.77 netmask 255.255.255.255 broadcast 172.18.11.77
  ]# route add -host 172.18.11.77 dev lo:1
  

]# chmod +x skp.sh
]# ./skp.sh start
查看内核参数,确保生效:
]# cat /proc/sys/net/ipv4/conf/all/arp_ignore
]# cat /proc/sys/net/ipv4/conf/all/arp_announce


此脚本传递给RS2:
]# scp skp.sh root@172.18.11.12:/root
在RS2主机运行:

]# ./skp.sh start
查看是否arp设置成功
]# cat /proc/sys/net/ipv4/conf/all/arp_ignore
]# cat /proc/sys/net/ipv4/conf/all/arp_announce
  

  两台DR上的keepalived都启动,两台RS上的web服务都启动,分别查看两台DR的ip地址:
http://s1.运维网.com/wyfs02/M00/80/34/wKioL1c7QJTQ5ELsAABjUcHRIpA353.png
http://s3.运维网.com/wyfs02/M01/80/37/wKiom1c7P6zSWONoAABaG2ooTO0046.png
  分别获取到不同VIP,即DR1是VIP1的主用,是VIP2的备用,DR2是VIP1的备用,是VIP2的主用;

  

  测试:访问VIP1和VIP2
http://s4.运维网.com/wyfs02/M01/80/34/wKioL1c7QYrSlU9gAACrZtP9-x0235.png
  

  可继续测试,手动停止DR1上的keepalived,查看DR2上的ip地址:
http://s3.运维网.com/wyfs02/M02/80/37/wKiom1c7QRXCNDdEAABugg4SKDQ281.png
  在另一台主机curl测试两个VIP:在一台调度器掉线时,对于两个VIP提供的服务,使用curl测试两个VIP,没有任何影响;
  

  同时,再手动停止RS2的nginx服务,在另一台主机curl测试两个VIP:
http://s5.运维网.com/wyfs02/M00/80/34/wKioL1c7Qw3w5YBFAABkv8drLc8626.png
  此时,一台调度器掉线,一台RS掉线,仍能能保持两个VIP提供客户端的服务;
  实现了keepalived高可用lvs-dr集群调度,双主nginx的应用。
  




页: [1]
查看完整版本: keepalived高可用lvs集群,主/备和主/主模型