天天看点

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

LVS+KeepAlived+Nginx高可用实现方案

概念

LVS

  • 什么是lvs

    LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

  • 宗旨
    1. 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.
    2. 很好的可伸缩性(Scalability)
    3. 很好的可靠性(Reliability)
    4. 很好的可管理性(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)

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

安装ipvsadm

用于查看lvs转发及代理情况的工具

只需要在192.168.200.128及192.168.200.129上安装即可

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

防火墙

直接关闭所有防火墙,这种方式仅仅用于测试;不推荐用于实际项目

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

配置nginx服务器

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

192.168.1.130和192.168.1.131这两台服务器上配置即可

保存并设置脚本的执行权限,执行脚本

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

如果看到红框内的效果,说明脚本已经执行成功了

两台虚拟机配置内容相同

配置keepalived

配置MASTER

进入192.168.200.128服务器

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

配置BACKUP

进入192.168.200.129服务器

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

配置注意项

router_id

后面跟的自定义的ID在同一个网络下是一致的

state

state后跟的MASTER和BACKUP必须是大写;否则会造成配置无法生效的问题

interface

网卡ID:可以使用以下方式查询

ip a

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

priority

主备优先级

MASTER中配置的priority必须比BACKUP大

authentication

主备之间的认证方式

一般使用PASS即可;主备的配置必须一致;否则无法通讯,会导致裂脑;密码不能大于8位

virtual_ipaddress

配置的VIP;允许配置多个

启动keepalived

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

如果网卡下出现192.168.200.200(VIP)说明主已经启动成功

检查备keepalived 启动后的配置情况

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

备服务器的网卡下没有出现192.168.200.200(VIP)的ip,说明备服务正常

注:如果这里也出现了VIP,那么说明裂脑了,需要检查防火墙是否配置正确;是否允许了vrrp的多播通讯

LVS管理工具-ipvsadm

ipvsadm -Ln
           

查看当前配置的虚拟服务和各个RS的权重

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

测试

正常代理转发

使用windows宿主机进行测试

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

请求虚拟IP查看转发的服务

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

KeepAlived高可用测试

停掉主keepalived

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

vip漂移至备服务器

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

此时网页访问192.168.200.200依然能够正常访问

重启主keepalived

主服务恢复之后,vip又会自动漂移回主服务

LVS监控真实服务测试

查看最新的虚拟ip对应的RealServer的情况

ipvsadm -l
           
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

可以看出192.168.200.130和192.168.200.131两台正式服务都还在

测试停掉192.168.200.130

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

再次查看虚拟ip对应的RealServer的情况

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

恢复192.168.1.130

lvs又会自动监控并加入192.168.1.130

LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案
LVS+KeepAlived+Nginx高可用实现方案LVS+KeepAlived+Nginx高可用实现方案

文章参考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