【Linux】Nginx+Keepalive实现高可用的简单工作原理

问题:

1.高可用解决什么问题?
解决单点故障的问题------keepalived.
(1)要有备份,从而当一个出现问题时,可以切换到另一个,解决单点故障的问题。
(2)要能够自动切换。
2.为什么要用keepalived?
1>安装和配置都简单,只有一个配置文件
2>keepalived可以实现自动切换,实现主从切换

keepalive缺点:但是如果是大规模的分布式项目的话,一般不用Keepalived,因为它只提供了简单的心跳和切换的功能,但是没有提供集群管理的功能。
优点:比较简单,方便学习和配置。

简介:

  • Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。
  • VRRP协议:
    VRRP全称 Virtual Router Redundancy Protocol,即 虚拟路由冗余协议。可以认为它是实现路由器高可用的容错协议,即将N台提供相同功能的路由器组成一个路由器组(Router Group),这个组里面有一个master和多个backup,但在外界看来就像一台一样,构成虚拟路由器,拥有一个虚拟IP(vip,也就是路由器所在局域网内其他机器的默认路由),占有这个IP的master实际负责ARP相应和转发IP数据包,组中的其它路由器作为备份的角色处于待命状态。master会发组播消息,当backup在超时时间内收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,保证路由器的高可用。
  • 在VRRP协议实现里,虚拟路由器使用 00-00-5E-00-01-XX 作为虚拟MAC地址,XX就是唯一的 VRID (Virtual Router IDentifier),这个地址同一时间只有一个物理路由器占用。在虚拟路由器里面的物理路由器组里面通过多播IP地址 224.0.0.18 来定时发送通告消息。每个Router都有一个 1-255 之间的优先级别,级别最高的(highest priority)将成为主控(master)路由器。通过降低master的优先权可以让处于backup状态的路由器抢占(pro-empt)主路由器的状态,两个backup优先级相同的IP地址较大者为master,接管虚拟IP。
    【Linux】Nginx+Keepalive实现高可用的简单工作原理_第1张图片
  • nginx:支持一个网卡同时有两个IP,就可以配置相同的虚拟IP
    一开始路由器先解析到其中一台Nginx的IP,给他传数据,另一个Nginx因为和他有一样的虚拟IP,所以可以建立起连接,只要第一台正常运行,他们就可以建立一个网络心跳,如果第一台宕掉,则路由器会立马解析另一台nginx的IP,把数据包转发给这台Nginx(这就是keepalived起的作用,实现自动切换,实现高可用)
    【Linux】Nginx+Keepalive实现高可用的简单工作原理_第2张图片
    【Linux】Nginx+Keepalive实现高可用的简单工作原理_第3张图片

双机高可用一般是通过虚拟IP(飘移IP)方法来实现的,基于Linux/Unix的IP别名技术。

双机高可用方法目前分为两种:

1)双机主从模式:

即前端使用两台服务器,一台主服务器和一台热备服务器,正常情况下,主服务器绑定一个公网虚拟IP,提供负载均衡服务,热备服务器处于空闲状态;当主服务器发生故障时,热备服务器接管主服务器的公网虚拟IP,提供负载均衡服务;但是热备服务器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。

2)双机主主模式:

即前端使用两台负载均衡服务器,互为主备,且都处于活动状态,同时各自绑定一个公网虚拟IP,提供负载均衡服务;当其中一台发生故障时,另一台接管发生故障服务器的公网虚拟IP(这时由非故障机器一台负担所有的请求)。这种方案,经济实惠,非常适合于当前架构环境。

今天在此分享下Nginx+keepalived实现高可用负载均衡的主从模式的操作记录:

keepalived可以认为是VRRP协议在Linux上的实现,主要有三个模块,分别是core、check和vrrp。

  • core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
  • check负责健康检查,包括常见的各种检查方式。
  • vrrp模块是来实现VRRP协议的。
    【Linux】Nginx+Keepalive实现高可用的简单工作原理_第4张图片

简单的原理就先介绍到这里啦,小编也是刚学习,继续研究!
注意:keepalived一定要结合我们的Nginx或者MySQL或者其他的服务器中的单点集群,把单点集群复制一份才有意义哟~~

关于Nginx和Keeplive的安装和配置,请查看小编的另外两篇博客:

【Linux】CentOS系统Nginx+Keepalived主从自动切换高可用

【Linux运维】在Centos7下安装Nginx服务器以及SSL模块 且开机自启

你可能感兴趣的:(Linux运维)