keepalived 参数说明

来源:本站原创 网络技术 超过23 views围观 0条评论

>>>keepalived是什么?
         keepalive是HA(High Available)高可用集群的一种实现方案,用来防止系统架构中的单点故障。其是vrrp协议的实现。
>>>vrrp协议工作简介
         vrrp(Virtual Router Redundancy Protocol),即是虚拟路由冗余协议。用于实现多个路由器的高可用性。其工作原理是将一组路由器虚拟成一个虚拟路由器对外提供一个或多个IP地址。在这组路由器当中,实际对外提供IP地址的路由器被称为MASTER,其他路由器除了接收MASTER的存活状态通告以外,不会执行对外的网络功能,被称之为BACKUP。MASTER由选举产生,当MASTER失效时,BACKUP便会称为MASTER,接管原先MASTER的网络功能。
       MASTER的选举方式:
         1、如果对外的虚拟路由器IP就是路由器本身的IP的话,该路由器始终将是MASTER,这时的优先级值为255。
         2、否则如果不具备虚拟IP的话,将进行MASTER选举,各路由器都宣告自己是MASTER,发送VRRP通告信息;
         3、如果收到其他机器的发来的通告信息的优先级比自己高,将转回BACKUP状态;
         4、如果优先级相等的话,将比较路由器的实际IP,IP值较大的优先权高;

>>>keepalived程序架构及重要组件介绍
wKioL1YhB3Tim_-dAAFMoMC1yXo211.jpg
当keepalived启动时,一般会启动一个主进程(master),和两个子进程(checker和vrrp核心模块)
       重要组件:
         1、checkers:用于实现ipvs后端的RealServer健康状态检测
         2、watchDog:linux内核核心中的模块,用于监控keepalived的各进程的健康状态,当keepalived启动后,checkers和vrrp会定期通过linux中的一个套接字向watchdog发送状态通告信息,一旦watchdog接收不到进程的状态信息,master进程会将其杀死并重新启动
         3、VRRP stack:此模块便是keepalived的核心模块,用于实现vrrp协议
         4、IPVS wrappers:根据配置文件生成ipvs规则的组件
 
 
>>>keepalived的配置前提
         1、本机的主机名与hosts中定义的主机保持一致,要与hostname或uname -n命令获得名称一致。
         2、各节点要能互相解析主机名:一般建议通过hosts文件进行解析
         3、各个节点的时间必须同步
 
>>>keepalived的配置详解
配置文件为/etc/keepalived/keepalived.conf ,其主要分为三大部分,每个配置端都需使用花括号"{}"括起来:
         全局配置段:global_defs,配置文件中只能有一个
         vrrp协议配置段:
                            vrrp_instance  (实例配置)
                            vrrp synchronization group (同步组配置,将多个实例捆绑同步进退)
         lvs配置段:virtual_server
       
配置文件主要参数详解:
         //可通过man keepalived.conf 查看更详细的参数信息
全局配置段

global_defs {    ##全局配置段
notification_email {   ##定义故障通知邮箱
acassen@firewall.loc    ##邮箱地址
failover@firewall.loc     ##邮箱地址
sysadmin@firewall.loc  ##邮箱地址
   }
notification_email_from Alexandre.Cassen@firewall.loc         ##发件人地址
smtp_server 192.168.200.1      ##邮件服务器地址
smtp_connect_timeout 30        ##联系邮件服务器的超时时长
router_id nod1           ##当前物理设备在网络中的唯一ID标识
   vrrp_mcast_group4 224.0.0.18         ##定义IPv4的组播地址,可自行定义在224.0.0.0/8网段内
}
 
##默认vrrp工作于抢占模式,即优先级高的会自行抢占为MASTER;
 
脚本配置段

vrrp_script SRIPT_NAME {       ##定义一个名为SCRIPT_NAME(自定义)的脚本,需在实例外部定义,在内部调用
         script "COMMAND"                  ##script关键字,执行引号内的命令
         interval 1          ##此脚本端的运行周期,单位为秒
         weight [-|+]NUMBER       ##执行优先级增加或减少指定个数
}
例如:
vrrp_sript test {
         script "[[ -f /etc/keepalived/down ]] && exit 1 || exit0"
         interval 2
         weight -2
}        ##此脚本意为:每隔两秒检查一下/etc/keepalived/目录下是否存在名为down的文件,若存在则返回失败状态码1,并执行优先级减2
在实例中调用如下:
vrrp_instance VI_1 {
         xxxxx
         xxxxx
         track_script {
                   test
         }
}
 
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
实例配置段

vrrp_instance instance_NAME {      ##实例名在配置文件中不能重复
         state         MASTER或BACKUP        ##定义当前节点默认为主或从节点
         interface eth0 ##自动配置虚拟路由IP的网卡接口
         virtual_router_id 51         ##当前虚拟路由的标识符,必须全局唯一(0-255)
         priority 100      ##定义当前实例的优先级(0-255)
         advert_int 1     ##状态通告周期(秒)—用于主节点向BACKUP节点通告心跳信息
         authentication {       ##消息认证配置
auth_type PASS        ##认证方式(MD5或PASS简单字符认证)
auth_pass 1111       ##认证密码,所有同一虚拟实例节点的必须保持一致
         } 
virtual_ipaddress {  ##自动配置在interface上的(vip)虚拟IP地址,可以是多个
                            <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <作用域> label <LABEL>
                            192.168.200.17/24 dev eth1
                            192.168.200.18/24 dev eth2 label eth2:1
    }
         nopreempt       ##非抢占模式
 
 
 
notify_master "/etc/keepalived/notify.sh master"  ##定义状态转换为master时所执行的脚本(脚本实例后面给出)
notify_backup "/etc/keepalived/notify.sh backup"   ##定义状态转换为backup时所执行的脚本(脚本实例后面给出)
notify_fault "/etc/keepalived/notify.sh fault"    ##定义状态转换为fault时所执行的脚本(脚本实例后面给出)
}
notify脚本示例:(放置在/etc/keepalived/)
#!/bin/bash
# Author: MageEdu <linuxedu@foxmail.com>
# description: An example of notify script
#
 
vip=172.16.100.1
contact=’root@localhost’
 
notify() {
mailsubject="`hostname` to be $1: $vip floating"
mailbody="`date ‘+%F %H:%M:%S’`: vrrp transition, `hostname` changed to be $1"
echo $mailbody | mail -s "$mailsubject" $contact
}
 
case "$1" in
master)
notify master
/etc/rc.d/init.d/haproxy start
exit 0
;;
backup)
notify backup
/etc/rc.d/init.d/haproxy stop
exit 0
;;
fault)
notify fault
/etc/rc.d/init.d/haproxy stop
exit 0
;;
*)
echo ‘Usage: `basename $0` {master|backup|fault}’
exit 1
;;
esac
 
 
LVS配置段:

virtual_server 192.168.200.100 443 {
delay_loop 6    ##RealServer的健康状态探查的时间间隔
lb_algo rr          ##负载均衡的调度算法(Scheduler)
lb_kind NAT      ##LVS类型。支持NAT/DR/TUN
persistence timeout NUMBER ##定义持久连接的时长,单位秒。0为不适用持久连接
nat_mask 255.255.255.0
persistence_timeout 50  ##持久连接超时时间
protocol TCP    ##只能适用TCP,若适用UDP则使用ops参数
         virtualhost STRING ##定义对指定虚拟主机基于HTTP_GET或SSL_GET做健康状态监测
         sorry_server    IP PORT
 
real_server 192.168.201.100 443 { ##定义RealServer
                         notify_up <STRING>|<QUOTED-STRING>     ##RealServer上线执行的脚本
                         notify_down <STRING>|<QUOTED-STRING>         ##RealServer下线执行的脚本
weight 1  ##权重
SSL_GET {
url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc或status_code <INT>
}
url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd或status_code <INT>
}
connect_timeout 3  ##健康状态监测超时时间
nb_get_retry 3                  ##number of get retry
delay_before_retry 3       ##每次重试之前延迟3秒
}
    }
}

文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文链接:http://www.jdccie.com/?p=3563转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
  • 相关文章
  • 为您推荐
  • 各种观点