keepalived
2018-09-01 05:36:17来源:博客园 阅读 ()
简介
keepalived是HA Cluster(High Availability Cluster,高可用集群)的一个服务软件,用来防止单点故障。
keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余协议),以软件的形式实现服务器热备功能。通常情况下是将两台linux服务器组成一个热备组(master-backup),同一时间热备组内只有一台主服务器(master)提供服务,同时master会虚拟出一个共用IP地址(VIP),这个VIP只存在master上并对外提供服务;如果keepalived检测到master宕机或服务故障,备用服务器(backup)会自动接管VIP成为master,keepalived并将master从热备组移除,当master恢复后,会自动加入到热备组,默认再抢占成为master,起到故障转移功能。
高可用集群主要有两种实现模式:主备模式和主主模式:
主备模式:一个或多个VIP,一台主机对外提供服务,另外一台做备用机,当主服务器出现问题,备用服务器接管IP继续提供服务;
主主模式:两个或多个VIP,两台主机都对外提供服务,可以是同一个服务,也可以是不同的服务,这种模式提高了硬件的投入,也对负载均衡起到一定的效果。
keepalived主要有三个模块,分别是ipvs wrapper、checkers、vrrp stack。ipvs wrapper模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析;checkers负责健康检查,包括常见的各种检查方式;vrrp stack模块是来实现VRRP协议的。
配置文件
keepalived的默认配置文件为/etc/keepalived/keepalived.conf,其主程序文件为/usr/sbin/keepalived。keepalived的配置文件的组成主要分为三部分,而每个部分下面又包含着各自的子段,其组成及配置如下:
1、GLOBAL CONFIGURATION:全局配置段,包括 Global definitions、Static routes/address/rules
Global definitions:用于定义全局设置,常用的参数及示例如下:
global_defs {
notification_email { #指定报警邮件发往的邮箱地址
root@localhost
}
notification_email_from keepalived@localhost #指定报警邮件的发件人
smtp_server 127.0.0.1 #指定邮件服务器的地址
smtp_connect_timeout 30 #指定邮件服务器的连接超时时长
router_id node1 #设置路由器的标识
vrrp_mcast_group4 224.0.100.19 #设置vrrp的广播地址,在同一个HA Cluster中要确保其广播地址一致,才能接收到对应的vrrp报文
vrrp_strict #执行严格的vrrp协议检查,下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。
}
Static routes/address/rules:用于配置keepalived中不会被vrrp移除的静态地址、路由或者规则,基本不用。
2、VRRPD CONFIGURATION:vrrp相关配置段
VRRP instance(s):定义vrrp同步组。
vrrp_instance VIP_1 { #定义vrrp实例,VIP_1为自定义实例名 state MASTER|BACKUP #指定此虚拟路由器在vrrp组的角色 interface eno16777736 #绑定物理接口 virtual_router_id 14 #唯一标识id,用于区分vrrp实例,范围为0-255 priority 100 #设定优先级,范围为1-254 advert_int 1 #发送vrrp通告的时间间隔 nopreempt|preempt #设定工作模式为非抢占或抢占模式 preempt_delay 300 #在抢占式模式下,节点上线后触发新选举的延迟时长 authentication { #设置vrrp实例协商的方式及密码 auth_type PASS #定义认证类型为简单密码认证 auth_pass 571f97b2 #定义密码串,最长不超过8个字符 } virtual_ipaddress { #在绑定的物理接口上添加虚拟ip地址 #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL> 10.1.0.91/16 dev eno16777736 } track_interface { #配置需要监控的网络接口,一旦接口出现故障该vrrp实例转为FAULT状态 eth0 eth1 ... } track_script { #调用在vrrp_script中定义的脚本,根据脚本进行监控调整 <SCRIPT_NAME> <SCRIPT_NAME> weight <-254..254> } notify_master <STRING>|<QUOTED-STRING> #当前节点成为主节点时触发的通知脚本 notify_backup <STRING>|<QUOTED-STRING> #当前节点转为备节点时触发的通知脚本 notify_fault <STRING>|<QUOTED-STRING> #当前节点转为fault状态时触发的通知脚本 notify_stop <STRING>|<QUOTED-STRING> #当前节点停止时所触发的通知脚本 }
VRRP script(s):定义周期性执行的脚本,用于检查相应的服务或ip状态。
vrrp_script <SCRIPT_NAME> { #定义周期执行的脚本,vrrp instances会根据脚本的退出码来调整优先级 script <STRING>|<QUOTED-STRING> #定义执行脚本的存放路径 interval INT #定义调用执行脚本的周期,默认为1s timeout <INTEGER> #脚本执行超时时间,脚本执行超时后,则被认为失败 rise <INTEGER> #定义脚本检查成功多少次,才认可当前的状态为正常 fall <INTEGER> #定义检查失败多少次,才认为当前状态为失败 }
3、LVS CONFIGURATION:LVS配置段
Virtual server(s):用于定义虚拟服务器的设置,虚拟服务器可以用ip port、fwmark、virtual server group(s)来定义。
virtual_server IP port | virtual_server fwmark <int> |virtual_server group string { delay_loop <INT> #健康检查的时间间隔 lb_algo rr|wrr|lc|wlc|lblc|sh|dh #lvs调度方法 lb_kind NAT|DR|TUN #集群类型 persistence_timeout <INT> #持久连接时长 protocol TCP|UDP|SCTP #服务协议 sorry_server <IPADDR> <PORT> #备用服务器 real_server <IPADDR> <PORT>{ weight <INT> #指定权重,默认是1 notify_up <STRING>|<QUOTED-STRING> #服务器健康检查成功时执行的脚本 notify_down <STRING>|<QUOTED-STRING> #服务器健康检查失败时执行的脚本 HTTP_GET|SSL_GET { #应用层检测 url { path <URL_PATH> #定义要监控的URL status_code <INT> #健康状态的响应码 digest <STRING> #健康状态的响应的内容的校验码 } nb_get_retry <INT> #重试次数 delay_before_retry <INT> #重试之前的延迟时长 connect_ip <IP ADDRESS> #向哪个IP地址发起健康状态检测请求,默认是real server的ip地址 connect_port <PORT> #向哪个PORT发起健康状态检测请求,默认是real server的端口 bindto <IP ADDRESS> #发起连接的接口的ip地址 bind_port <PORT> #发起连接的接口的地址端口 connect_timeout <INTEGER> #连接请求的超时时长 } TCP_CHECK { connect_ip <IP ADDRESS> #向哪个IP地址发起健康状态检测请求,默认是real server的ip地址 connect_port <PORT> #向哪个PORT发起健康状态检测请求,默认是real server的端口 bindto <IP ADDRESS> #发起连接的接口的ip地址 bind_port <PORT> #发起连接的接口的地址端口 connect_timeout <INTEGER> #连接请求的超时时长 } } }
配置实例:主主模式
#一台主机配置VIP_1、VIP_2互为主备
global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id node1 vrrp_mcast_group4 224.0.100.19 } vrrp_instance VIP_1 { state MASTER interface eno16777736 virtual_router_id 14 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 571f97b2 } virtual_ipaddress { 10.1.0.91/16 dev eno16777736 } } vrrp_instance VIP_2 { state BACKUP interface eno16777736 virtual_router_id 15 priority 98 advert_int 1 authentication { auth_type PASS auth_pass 578f07b2 } virtual_ipaddress { 10.1.0.92/16 dev eno16777736 } } #一台主机配置VIP_1、VIP_2互为主备 global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id node2 vrrp_mcast_group4 224.0.100.19 } vrrp_instance VIP_1 { state BACKUP interface eno16777736 virtual_router_id 16 priority 98 advert_int 1 authentication { auth_type PASS auth_pass 571f97b2 } virtual_ipaddress { 10.1.0.91/16 dev eno16777736 } } vrrp_instance VIP_2 { state MASTER interface eno16777736 virtual_router_id 17 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 578f07b2 } virtual_ipaddress { 10.1.0.92/16 dev eno16777736 } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:熟悉LINUX系统
下一篇:进程间通信——LINUX
- keepalived 实现LVS负载均衡高可用集群(一) 2020-06-04
- Linux系统介绍 2020-06-02
- Linux三阶段之十一:keepalived高可用集群 2020-05-03
- inode和block简介 2020-04-23
- buffer和cache简介 2020-04-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash