keepalived基础讲解

转载:https://www.cnblogs.com/cxbhakim/p/9068833.html

介绍:

  1. Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能,用来防止单点故障。

  2. keepalived 是以 VRRP 协议为实现基础,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

keepalived主要有三个模块,分别是core、check和vrrp。

  • core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
  • check负责健康检查,包括常见的各种检查方式。
  • vrrp模块是来实现VRRP协议的。

 

 使用:

  • 安装

yum -y install keepalived

  •  配置文件详解

keepalived.conf


global_defs {                    # 全局配置
   notification_email {       # 定义报警邮件地址
     [email protected]
   }
   notification_email_from [email protected] # 定义发送邮件的地址
   smtp_server 192.168.200.1 # 邮箱服务器
   smtp_connect_timeout 30   # 定义超时时间
   router_id LVS_DEVEL      # 定义路由器唯一标识
}

## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。
#  如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。
#  如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。
#  其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。
vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
    interval 2 ## 检测时间间隔
    weight -20 ## 如果条件成立,权重-20
}
#虚拟 IP 配置 vrrp
vrrp_instance VI_1 {        # 定义实例
    state MASTER            # 状态参数 master/backup 仅表示说明,主节点为 MASTER, 对应的备份节点为 BACKUP
    interface eth0          # 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同
    virtual_router_id 51    # 虚拟路由的 ID 号, 两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址
    mcast_src_ip 192.168.10.50 ## 本机 IP 地址  
    priority 100            # 优先级决定是主还是备 --> 越大越优先,值范围 0-254,MASTER要比BACKUP高
    nopreempt             # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    advert_int 1            # 主备心跳通讯时间间隔,组播信息发送间隔,两个节点设置必须一样, 默认 1s  
    authentication {        # 认证授权,设置验证信息,两个节点必须一致 
        auth_type PASS #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,
        auth_pass 1111  #据说AH 使用时有问题。验证密码为明文,同一vrrp 实例MASTER 与BACKUP 使用相同的密码才能正常通信。
    }     
    track_script {
    chk_nginx  ## 执行 Nginx 监控的服务
    }
    virtual_ipaddress { # vip,设备之间使用的虚拟ip地址,可以定义多个
        192.168.200.16
    }
}

  • master配置文件

! Configuration File for keepalived

global_defs {
   router_id nginx-01
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.16.99
    }
}

  • backup配置文件

! Configuration File for keepalived

global_defs {
   router_id nginx-02
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.16.99
    }
}

  • 脚本文件:

#!/bin/bash
set -x

A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then

   echo `date`':  nginx is not healthy, try to killall keepalived' >> /etc/keepalived/keepalived.log
   killall keepalived
fi

  • 启动:

systemctl start keepalived

 master服务器  ip addr:

keepalived基础讲解_第1张图片

 正常情况VIP会在master服务器中,当master服务器出现问题,会跑到backup服务器中。

  •  常见报错

 keepalived基础讲解_第2张图片

 报配置文件错误

检查配置文件并没有错误

解决:

因安装好后,我将原有配置文件删除了,重新新建粘贴进去的配置,可能存在语法错误

重新卸载安装,手动修改配置文件

成功启动

你可能感兴趣的:(keepalived)