LVS+KeepAlived+Nginx高可用实现方案
概念
LVS
-
什么是lvs
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
- 宗旨
- 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.
- 很好的可伸缩性(Scalability)
- 很好的可靠性(Reliability)
- 很好的可管理性(Manageability)。
-
特点
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
KeepAlived
-
什么是keepAlived
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。
-
简介
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
为什么要使用
当我们的服务器意外挂了之后,我们要怎么做?
当然是找一台新的机器,替代现有的机器,然后做新的环境部署,端口映射,域名解析等等一系列的工作,再将服务重新启动;但是如果这一系列的操作都是手动完成的,那么等你把这些工作搞好,可能服务已经停止个把小时了
但是如果使用了KeepAlived之后,然后提前将备用机准备好,当主的机器挂掉之后,自动将VIP给你切换到备用机,并且以邮件的形式告诉你说主服务已经挂了,你得赶紧恢复起来;这时候你就可以慢慢的去找主服务的问题,这时候并不会影响到你的正常业务运行。
准备
虚拟机(CentOS 7)
准备了4台虚拟机,用于测试
主机 | ip | 作用 |
主机1 | 192.168.200.128 | Keepalived Master |
主机2 | 192.168.200.129 | Keepalived Backup |
主机3 | 192.168.200.130 | Nginx1 |
主机4 | 192.168.200.131 | Nginx2 |
无 | 192.168.200.200 | VIP |
软件安装
在192.168.1.128及192.168.1.129上安装keepalived
在192.168.1.130及192.168.1.131上安装nginx(这里我做的是lnmp)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1MTN5MDNzcTMyITMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
安装ipvsadm
用于查看lvs转发及代理情况的工具
只需要在192.168.200.128及192.168.200.129上安装即可
防火墙
直接关闭所有防火墙,这种方式仅仅用于测试;不推荐用于实际项目
配置nginx服务器
192.168.1.130和192.168.1.131这两台服务器上配置即可
保存并设置脚本的执行权限,执行脚本
如果看到红框内的效果,说明脚本已经执行成功了
两台虚拟机配置内容相同
配置keepalived
配置MASTER
进入192.168.200.128服务器
配置BACKUP
进入192.168.200.129服务器
配置注意项
router_id
后面跟的自定义的ID在同一个网络下是一致的
state
state后跟的MASTER和BACKUP必须是大写;否则会造成配置无法生效的问题
interface
网卡ID:可以使用以下方式查询
ip a
priority
主备优先级
MASTER中配置的priority必须比BACKUP大
authentication
主备之间的认证方式
一般使用PASS即可;主备的配置必须一致;否则无法通讯,会导致裂脑;密码不能大于8位
virtual_ipaddress
配置的VIP;允许配置多个
启动keepalived
如果网卡下出现192.168.200.200(VIP)说明主已经启动成功
检查备keepalived 启动后的配置情况
备服务器的网卡下没有出现192.168.200.200(VIP)的ip,说明备服务正常
注:如果这里也出现了VIP,那么说明裂脑了,需要检查防火墙是否配置正确;是否允许了vrrp的多播通讯
LVS管理工具-ipvsadm
ipvsadm -Ln
查看当前配置的虚拟服务和各个RS的权重
测试
正常代理转发
使用windows宿主机进行测试
请求虚拟IP查看转发的服务
KeepAlived高可用测试
停掉主keepalived
vip漂移至备服务器
此时网页访问192.168.200.200依然能够正常访问
重启主keepalived
主服务恢复之后,vip又会自动漂移回主服务
LVS监控真实服务测试
查看最新的虚拟ip对应的RealServer的情况
ipvsadm -l
可以看出192.168.200.130和192.168.200.131两台正式服务都还在
测试停掉192.168.200.130
再次查看虚拟ip对应的RealServer的情况
恢复192.168.1.130
lvs又会自动监控并加入192.168.1.130
文章参考https://blog.csdn.net/lupengfei1009/article/details/86514445?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161094810816780262557396%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161094810816780262557396&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-86514445.first_rank_v2_pc_rank_v29&utm_term=centos7keepalived%20lvs%20nginx