Keepalived使用和配置

安装

编译安装最新版本

yum -y install openssl-devel gcc

下载并解压https://www.keepalived.org/software/keepalived-2.0.20.tar.gz

cd keepalived-2.0.20

./configure --prefix=/usr/local/keepalived

make && make install

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp keepalived/etc/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig

chmod +x /etc/init.d/keepalived

chkconfig --add keepalived

systemctl enable keepalived

配置分析

全局配置

全局定义

global_defs {   # 全局定义配置块
   notification_email {
     root@localhost     # 电子邮件收件人
   }
   notification_email_from keepalived@localhost # 发邮件的地址
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id app1   # 当前主机标识,不必是主机名,在局域网内应该是唯一的。
   vrrp_mcast_group4 224.1.1.93     # 组播地址,默认为224.0.0.18
   # vrrp_mcast_group6 ff02::93     # v6组播地址,默认为ff02::12
   # vrrp_strict    # 严格遵守vrrp协议 没有VIP 单播邻居 VRRP2有IPV6地址 引起VIP不通,注释掉
   vrrp_skip_check_adv_addr     # 默认是不跳过检查。检查收到的VRRP通告中的所有地址可能会比较耗时,设置此命令的意思是,如果通告与接收的上一个通告来自相同的master路由器,则不执行检查(跳过检查)。 建议跳过
   vrrp_garp_master_delay 10    # 当转换为MASTER状态时,延迟多少秒发送第二组的免费ARP。默认为5s,0表示不发送第二组免的免费ARP。 抓包可见,作用待分析
   vrrp_garp_master_repeat 1    # 当转换为MASTER状态时,在一组中一次发送的免费ARP数量。默认是5.
   vrrp_garp_lower_prio_delay 10  # 当MASTER收到更低优先级的通告时,延迟多少秒发送第二组的免费ARP。抓包可见,作用待分析
   vrrp_garp_lower_prio_repeat 1    # 当MASTER收到更低优先级的通告时,在一组中一次发送的免费ARP数量

   vrrp_garp_interval 0 #适用于上游交换机无法处理被ARP/NA淹没的情况,网桥应该没用
   vrrp_gna_interval 0  # 接口上主动发送的NA消息之间的延迟时间 

   # script_user <username> # 运行脚本的用户,默认为keepalived_script, 没有的话是root。
   # preempt or nopreempt 默认是非抢占模式, # 需要分析
}

Linkbeat接口

静态跟踪组

静态地址

静态路由

静态规则

BFD配置

VRRPD CONFIGURATION

VRRP脚本

该脚本周期性执行,退出码记录在所有VRRP instances中,注意:至少有一个VRRP实例调用它并且优先级不能为0.优先级范围是1-254.

vrrp_script <SCRIPT_NAME> {
          ...
    }

script <STRING>:指定要执行的脚本的路径。
interval <INTEGER>:指定两次脚本执行的间隔。单位是秒。默认为1s。
timeout <INTEGER>:指定在多少秒后,脚本被认为执行失败。
weight <-254 --- 254>:调整优先级。默认为2.
rise <INTEGER>:执行成功多少次才认为是成功。
fall <INTEGER>:执行失败多少次才认为失败。
user <USERNAME> [GROUPNAME]:运行脚本的用户和组。
init_fail:假设脚本初始状态是失败状态。

VRRP跟踪文件

VRRP同步组

所有相关的VRRP实例定义在一起,作为一个VRRP Group,如果组内的任意一个实例出现问题,都可以实现Failover。

 vrrp_sync_group VG_1 {
    group {
     inside_network     # vrrp instance name
     outside_network    # vrrp instance name
     ...
    }
    ...
}

VRRP免费ARP和未经请求的邻居通告延迟组

VRRP实例

vrrp_instance <string> {
   ... 
}
state: MASTER|BACKUP    # 指定该keepalived节点的初始状态。
interface   # vrrp实例绑定的接口,用于发送VRRP包。
virtual_router_id # 1-255 用于区分vrrpd多个实例
priority    # 优先级,优先级高的为master
advert_int  # VRRP通告间隔,默认1s
authentication    {
    auth_type PASS | AH # (简单密码 | AH-IPSEC) 推荐使用简单密码
    auth_pass 1111
}
virtual_ipaddress {
     <IPADDR> [/ <MASK>] [brd <IPADDR>] [dev <STRING>] [作用域<SCOPE>]    # 对应ip address
}
nopreempt   # 设置为不抢占。默认是抢占的,当高优先级的机器恢复后,会抢占低优先级的机器成为MASTER,而不抢占,则允许低优先级的机器继续成为MASTER,即使高优先级的机器已经上线。如果要使用这个功能,则初始化状态必须为BACKUP。
preempt_delay   # 设置抢占延迟。单位是秒,范围是0---1000,默认是0.发现低优先级的MASTER后多少秒开始抢占。

通知脚本:
    notify_master "/etc/keepalived/master.sh"     # 当成为主模式时候,执行的脚本
    notify_backup "/etc/keepalived/backup.sh"     # 当成为备模式时候,执行脚本
    notify_fault "/etc/keepalived/fault.sh"       # 当成为 fault模式,执行脚本
    notify_stop "/etc/keepalived/stop.sh"   # 当停止VRRP时执行的脚本。

LVS CONFIGURATION

虚拟服务器组

虚拟服务器

暂时用不到,为日后积累

virtual_server IP PORT {
    delay_loop  # 健康检查的时间间隔。
    lvs_sched rr|wrr|lc|wlc|lblc|sh|mh|dh|fo|ovf|lblcr|sed|nq  # LVS调度算法。
    lb_kind NAT|DR|TUN  # LVS模式。
    persistence_timeout 360 # 持久化超时时间,单位是秒。默认是6分钟。
    persistence_granularity # 持久化连接的颗粒度。
    protocol TCP|UDP|SCTP # 4层协议。
    virtualhost <STRING>    # 为HTTP_GET和SSL_GET执行要检查的虚拟主机。如virtualhost www.felix.com    ?
      alpha:在keepalived启动时,假设所有的RS都是down,以及健康检查是失败的。有助于防止启动时的误报。默认是禁用的。
    omega # 在keepalived终止时,会执行quorum_down指令所定义的脚本。

    quorum <INT>  # 默认值1. 所有的存活的服务器的总的最小权重。
    quorum_up <STRING>    # 当quorum增长到满足quorum所定义的值时,执行该脚本。
    quorum_down <STRING>  # 当quorum减少到不满足quorum所定义的值时,执行该脚本。

    real_server IP PORT {
        weight 
        inhibit_on_failure  # 当服务器健康检查失败时,将其weight设置为0,而不是从Virtual Server中移除。
        notify_up <STRING>  # 当服务器健康检查成功时,执行的脚本。
        notify_down <STRING>    # 当服务器健康检查失败时,执行的脚本。
        uthreshold <INT>    # 到这台服务器的最大连接数。
        lthreshold <INT>    # 到这台服务器的最小连接数。
        
        # 健康检查
        HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | DNS_CHECK | MISC_CHECK 
        MISC_CHECK {
             misc_path <STRING> # 外部的脚本或程序路径。
             misc_timeout <INT> # 脚本执行超时时间。
             user USERNAME   # 指定运行该脚本的用户和组。如果没有指定GROUPNAME,则GROUPNAME同USERNAME。
             misc_dynamic   # 根据退出状态码动态调整权重。
                  0,健康检查成功,权重不变。
                  1,健康检查失败。
                 2-255,健康检查成功。权重设置为退出状态码减去2.如退出状态码是250,则权重调整为248
            warmup <INT>   # 指定一个随机延迟,最大为N秒。可防止网络阻塞。如果为0,则关闭该功能。
        }
        # 其中定义好的GET
        url {
              path <STRING>:指定要检查的URL的路径。如path / or path /mrtg2
              digest <STRING>:摘要。计算方式:genhash -s 172.17.100.1 -p 80 -u /index.html
              status_code <INT>:状态码。
            }
    }
}

配置举例

! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id app1

   enable_script_security
   script_user root
   vrrp_mcast_group4 224.1.1.93
   vrrp_skip_check_adv_addr
}

vrrp_script test {
    script "/tmp/test.sh"
    interval 1
    # timeout 1000
    weight -40
    # user root
    rise 2
    fall 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens3
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.0.50/24 dev ens3 label ens3:0
#        172.18.32.195/24 dev ens9 label ens9:0
    }
    track_script {
        test
    }
}

资料链接

参考 https://www.keepalived.org/manpage.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值