设为首页 收藏本站
查看: 1213|回复: 0

[经验分享] keepalived概述

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-11 09:07:37 | 显示全部楼层 |阅读模式
keepalived
    Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个mysql或lvs或nginx服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
    vrrp协议完成地址流动;
    为vip地址所在的节点生成ipvs规则(在配置文件中预先定义);
    为ipvs集群的各RS做健康状态检测;
    基于脚本调用接口通过执行脚本完成脚本中定义的功能,进而影响集群事务;   

HA Cluster配置前提:   
    (1) 各节点时间必须同步;
            ntp, chrony
    (2) 确保iptables及selinux不会成为阻碍;
    (3) 各节点之间可通过主机名互相通信(对KA并非必须);
        建议使用/etc/hosts文件实现;
    (4) 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信;(并非必须)

安装keepalived
    CentOS 6.4以后再base仓库中就已经提供了keepalived软件包,因此可直接使用yum -y install keepalived安装即可


程序环境:
    配置文件:/etc/keepalived/keepalived.conf
    主程序:/usr/sbin/keepalived

配置文件讲解
    keepalived有三类配置区域,注意不是三种配置文件,是一个配置文件里面三种不同类别的配置区域,全局配置(Global Configuration)、VRRPD配置、LVS配置

##########################全局配置#############################

1
2
3
4
5
6
7
8
9
10
global_defs {
   notification_email {
        root@localhost     #指定keepalived在发生故障切换时需要发送的Email地址,可定义多个
   }
   notification_email_from keepalived@localhost    #指定故障切换时的发件人地址
   smtp_server 127.0.0.1                            #指定smtp服务器地址
   smtp_connect_timeout 30                          #指定smtp连接超时时间
   router_id LVS_DEVEL                            #运行keepalived机器的一个标识
   vrrp_mcast_group4 224.0.0.9                      #指定ipv4组播地址
}




##########################VRRP配置##################################
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
vrrp_instance VI_1 {
    state MASTER                  #指定在当前VRRP示例的状态MASTER|BACKUP,如果设置了nopreempt这个值不起作用,主备靠priority决定
    interface eth0                 #设置实例绑定的网卡
    virtual_router_id 51              ##VRID标记 ,路由ID,可通过#tcpdump vrrp查看
    priority 100                  #优先级,高优先级竞选为master
    advert_int 1                  #检查间隔,默认1秒
    nopreempt                    #非抢占(因为默认如果master挂的时候,backup会顶上,当master再好的时候,会再切回去,这样就会造成两次
                            #断开,加上nopreempt的时候,及时master又好了,依旧不会切换,但是要注意两个state 都要是backup)  
                                 
        preempt_delay 300           #抢占式模式下,节点上线后触发新选举操作的延迟时长;                                                     
    authentication {                #设置认证         
        auth_type PASS             #认证方式                           
        auth_pass 1111             #认证密码
    }   
     
    virtual_ipaddress {              #设置vip
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }   
     
    track_interface {               #配置要监控的接口,一旦出现故障则转为FAULT状态
        eth0
        eth1
        ...
    }
    notify_master <STRING>|<QUOTED-STRING>     #当前节点成为主节点时触发的脚本;
    notify_backup <STRING>|<QUOTED-STRING>     #当前节点转为备节点时触发的脚本;
    notify_fault <STRING>|<QUOTED-STRING>      #当前节点转为“失败”状态时触发的脚本;
}




################################LVS配置##################################
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
virtual_server 192.168.200.100 443 {          #VIP 端口
    delay_loop 6                              #健康检查时间间隔
    lb_algo rr                                 #lvs调度算法lrr|wrr|lc|wlc|lblc|sh|dh
    lb_kind NAT                              #负载均衡转发规则NAT|DR|TUN
    nat_mask 255.255.255.0                     #nat掩码
    persistence_timeout 50                     #会话保持时间
    protocol TCP                              #使用的协议
     
    sorry_server <IPADDR> <PORT>              #备用服务器地址,所有realserver失效后启用
     
    real_server 192.168.201.100 443 {          #RIP地址,端口
        weight 1                             #权重,默认为1,0失效
        inhibit_on_failure                     ##在服务器健康检查失效时,将其设为0,而不是直接从ipvs中删除
        notify_up <STRING>|<QUOTED-STRING>    #在检测到server up后执行脚本
        notify_down <STRING>|<QUOTED-STRING>    #在检测到server down后执行脚本
         
        HTTP_GET|SSL_GET {
            url {                                
              path <URL_PATH>             #定义要监控的URL
              status_code <INT>            #判断上述检测机制为健康状态的响应码
              digest <STRING>                    #判断上述检测机制为健康状态的响应的内容的校验码;
            }   
            connect_timeout <INTEGER>            #连接请求的超时时长
            nb_get_retry <INT>                    #重试次数
            delay_before_retry <INT>            #重试之前的延迟时长
            connect_ip <IP ADDRESS>            #向当前RS的哪个IP地址发起健康状态检测请求
            connect_port <PORT>                #向当前RS的哪个PORT发起健康状态检测请求
              bindto <IP ADDRESS>                #发出健康状态检测请求时使用的源地址
              bind_port <PORT>                    #发出健康状态检测请求时使用的源端口
        }   
         
        TCP_CHECK {
            connect_ip <IP ADDRESS>            #向当前RS的哪个IP地址发起健康状态检测请求
            connect_port <PORT>                #向当前RS的哪个PORT发起健康状态检测请求
            bindto <IP ADDRESS>                #发出健康状态检测请求时使用的源地址;
            bind_port <PORT>                    #发出健康状态检测请求时使用的源端口;
            connect_timeout <INTEGER>            #连接请求的超时时长;
        }
    }   
}







运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298698-1-1.html 上篇帖子: Centos6下nginx+keepalived构建高可用web集群 下篇帖子: KEEPALIVED的具体实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表