Keepalive 高可用环境详解

前言

本篇文章主要介绍keepalive的高可用实现原理,以及keepalive配合Nginx实现高可用环境的详细过程。

keepalive原理

简介

Keepalived软件主要通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。keepalived除了能够管理LVS软件外,还可以作为其他服务(Nginx,Haproxy、MySQL等)的高可用解决方案软件。

主要功能

  • 管理LVS负载均衡软件
  • 实现对LVS集群节点健康检查的功能
  • 作为系统网络服务的高可用功能

keepalive作为高可用故障切换转移原理

在Keppalived服务正常工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的IP资源及服务。而当主Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

VRRP,全称Virtual Router Redundancy Protocol,虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由任务交给某台VRRP路由器的。

在一组虚拟路由器中,只有作为Master的VRRP路由器会一直发送VRRP广播包(VRRP Advertisement messages),此时Backup不会抢占Master。当Master不可用时,Backup就收不到来自Master的广播包了,此时多台Backup中优先级最高的路由器会抢占为Master。这种抢占非常快速的,以保证服务的连续性,处于安全性考虑,VRRP数据包使用了加密协议进行加密。

总结就是下面五句话:
(1)VRRP,全称:Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。
(2)VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的
(3)VRRP是IP多播的方式,实现高可用对之间的通信。
(4)工作时主节点发包,备节点接包,当备节点接受不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对。
(5)VRRP使用了加密协议加密数据,但keepalived官方目前还是推荐用明文的方式配置认证类型和密码

keepalive高可用环境搭建

环境准备

两台服务器(10.11.130.194,10.11.130.196)
web服务:10.11.130.194:8080,10.11.130.196:8080 (步骤忽略)
Nginx服务:10.11.130.194:8989,10.11.130.196:8989(步骤忽略)
VIP:10.11.130.192
keepalive 安装包

安装

解压keepalive的安装包,或安装rpm包,处理相关依赖

进入 /etc/keepalived,修改下面的配置文件keepalived.conf:

global_defs {
    router_id cs_196
}
vrrp_script check_run {
    script "/opt/itxkp/sbin/nginx_check.sh"  #检测的脚本
    interval 5
}
vrrp_sync_group VG1 {
     group {
        VI_1
     }
}
vrrp_instance VI_1 {
     state MASTER  #设置主从,MASTER为主,BACKUP为从
     interface p4p1 # 网卡
     virtual_router_id 100  #主从一定要一样
     priority 100
     advert_int 1
     nopreempt
     authentication {
         auth_type PASS
         auth_pass 123456
     }
     track_script {
         check_run   #检测的脚本
     }
     virtual_ipaddress {
         10.11.130.192  #虚拟ip
     }
}
  1. keepalived.conf 需要赋权664,命令为:chomd 664 keepalived.conf
  2. 其中 /opt/itxkp/sbin/nginx_check.sh 的脚本为健康检测脚本(可百度搜),没有的话 可以创建,需要赋权 777,否则会报错:configure is not a regular non-executable file , 赋权命令:chomd 777 nginx_check.sh
  3. 配置完成,启动服务 systemctl start keepalived.service
  4. 通过 ip addr 命令,可以查看 是否配置成功;

Keepalive 高可用环境详解_第1张图片

  1. 浏览器访问:10.11.130.192:8989
    Keepalive 高可用环境详解_第2张图片

  2. 另外一台服务(10.11.130.196)安装过程同理 ,除了网卡、state 不通外,其他都相同;

  3. 如果将194的Nginx的服务关掉,该VIP会自动飘移至另外一台196上面, ip addr 可以查看;
    Keepalive 高可用环境详解_第3张图片

  4. 浏览器再次访问:10.11.130.192:8989时,此次页面为196提供的服务;可通过 /var/log/message 文件查看keepalive的日志信息;
    Keepalive 高可用环境详解_第4张图片

你可能感兴趣的:(Nginx,keepalive,网络,运维,数据库,keepalive,Nginx)