keepalived配置

keepalived是一个用于做双机热备(HA)的软件,常和haproxy联合起来做热备+负载均衡,达到高可用。


运行原理


keepalived通过选举(看服务器设置的权重)挑选出一台热备服务器做MASTER机器,MASTER机器会被分配到一个指定的虚拟ip,外部程序可通过该ip访问这台服务器,如果这台服务器出现故障
(断网,重启,或者本机器上的keepalived crash等),keepalived会从其他的备份机器上重选(还是看服务器设置的权重)一台机器做MASTER并分配同样的虚拟IP,充当前一台MASTER的角色。


选举策略

选举策略是根据VRRP协议,完全按照权重大小,权重最大(0~255)的是MASTER机器,下面几种情况会触发选举
1. keepalived启动的时候
2. master服务器出现故障(断网,重启,或者本机器上的keepalived crash等,而本机器上其他应用程序crash不算)
3. 有新的备份服务器加入且权重最大


1、全局配置(global configure)
2、VRRPD配置
3、LVS配置


解压安装


tar -zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/usr/local/keepalived 
make
make install


下面这几步不是必须的,但是为了方便以后的操作建议做了

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

为keepalived创建配置文件存放路径

mkdir -p /etc/keepalived/

 vi   /etc/keepalived/keepalived.conf

修改配置文件

 
[root@dg log] cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived


global_defs {
   notification_email {
     acassen@firewall.loc   // 发生故障时发送的邮箱
   }
   notification_email_from Alexandre.Cassen@firewall.loc  // 使用哪个邮箱发送
   smtp_server 192.168.200.1  // 发件服务器
   smtp_connect_timeout 30
   router_id LVS_DEVEL     标识本节点的字条串,通常为hostname
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}


vrrp_instance VI_1 {
    state master        //设置为主服务器
    interface eth0   //设置网络接口
    virtual_router_id 51    //主备必须一样
    priority 100      //主备机取不同的优先级,主机较大,备机值较小,值越大优先级越高
    advert_int 1    //vrrp multicast广播周期秒数
    authentication {
        auth_type PASS     //VRRP认证方式,主备必须一致
        auth_pass 1111   //密码
    }
    virtual_ipaddress {
     10.10.6.81    
}
}

virtual_server 10.10.6.81 3306 {
    delay_loop 6                     //  每隔6秒查看realserver状态
    lb_algo rr                       //   调度算法为加权最小连接数
    lb_kind DR                      //   调度算法为加权最小连接数
    persistence_timeout 50          //  同一IP 的连接50秒内被分配到同一台realserver
    protocol TCP                   // 用TCP监测realserver的状态

   virtual_server 10.10.6.81 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP


    real_server 10.10.6.86 3306 {
   TCP_CHECK {   
         weight 1
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        }
    }
}


备库的配置

[root@dg2 ~] cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived


global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}


vrrp_instance VI_1 {
    state backup      //主写master  备backup
    interface eth0
    virtual_router_id 51  //必须和主一致
    priority 99           //备必须比主的加权低一点
    advert_int 1           // VRRP Multicast 广播周期秒数
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.6.81           //必须和主保持一致
    }
}

virtual_server 10.10.6.81 3306 {  
    delay_loop 6            //每隔6s查看realserver 状态
    lb_algo rr               //   调度算法为加权最小连接数
    lb_kind NAT           //调度算法为加权最小连接数, lb_kind NAT 说明是nat方式
    persistence_timeout 50   //  同一IP 的连接50秒内被分配到同一台realserver(测试时建议改为0)
    protocol TCP


    virtual_server 10.10.6.81 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 10.10.6.87 3306 {
    TCP_CHECK {
        weight 1
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        }
    }
}

global_defs: 全局配置标识,表面下面的区域{}是全局配置
notification_email: 里面填邮箱地址,如果keepalived在发生诸如切换操作时会的发邮件到配置上的邮箱,邮件地址可以多个,每行一个
notification_email_from:表示发送通知邮件时邮件源地址是谁
smtp_server:表示发送email时使用的smtp服务器地址,可以填127.0.0.1
smtp_connect_timeout:连接smtp超时时间
vrrp_instance:各服务器上实例配置域,这里按本服务器的具体情况填值
state:本实例启动状态,MASTER/SLAVE,不管填MASTER/SLAVE,最终还是要看本机器的权重。
interface:实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,这里按本机情况而定
virtual_router_id:这里设置VRID,如果两台机器是同一个备份组,设置一样
priority:设置本节点的优先级,优先级高的为master,不能超过255
advert_int:组播信息发送间隔,同一个备份组两个机器设置必须一样,默认是1S
authentication:验证域,同组的机器auth_type(验证类型)和auth_pass(验证密码)必须一样
virtual_ipaddress:VIP,为master机器设置的虚拟地址,和实例绑定的网卡(interface)设置到一个网段
配置好了就可以直接启动了

虚拟服务器virtual_server定义块


virtual_server:定义一个虚拟服务器,这个ip是virtual_ipaddress中定义的其中一个,后面一个空格,然后加上虚拟服务的端口号。 
1> delay_loop:健康检查时间间隔,单位:秒 
2> lb_algo:负载均衡调度算法,互联网应用常用方式为wlc或rr 
lvs支持8种不同的调度算法轮叫(rr)、加权轮叫(wrr)、最小连接(lc)、加权最小连接(wlc)、基于局部性最小连接(lblc)、带复制的基于局部性最少链接(lblcr)、目标地址散列(dh)和源地址散列(sh).
3> lb_kind:负载均衡转发规则。包括DR、NAT、TUN 3种,一般使用路由(DR)转发规则。 
4> persistence_timeout:http服务会话保持时间,单位:秒 
5> protocol:转发协议,分为TCP和UDP两种


real_server:真实服务器IP和端口,可以定义多个 
1> weight:负载权重,值越大,转发的优先级越高 
2> notify_down:服务停止后执行的脚本 
3> TCP_CHECK:服务有效性检测 
* connect_port:服务连接端口 
* connect_timeout:服务连接超时时长,单位:秒 
* nb_get_retry:服务连接失败重试次数 
* delay_before_retry:重试连接间隔,单位:秒


[root@dg keepalived-1.2.24] /etc/init.d/keepalived  start
Starting keepalived:                                       [  OK  ]


[root@dg keepalived-1.2.24] /etc/init.d/keepalived  start
Starting keepalived:                                       [  OK  ]


[root@dg log]# ps -ef |grep kee
root       2969      1  0 20:25 ?        00:00:00 keepalived -D
root       2970   2969  0 20:25 ?        00:00:00 keepalived -D
root       2971   2969  0 20:25 ?        00:00:00 keepalived -D


[root@dg log]# ip a show|awk '/inet\ /'
    inet 127.0.0.1/8 scope host lo
    inet 10.10.6.86/24 brd 10.10.6.255 scope global eth0
    inet 10.10.6.81/32 scope global eth0
    
    
[root@dg2 ~]#  ip a show|awk '/inet\ /'
    inet 127.0.0.1/8 scope host lo
    inet 10.10.6.87/24 brd 10.10.6.255 scope global eth0    

---主的keepalived关闭,可以发现ip地址飘到从主机上,主的上面开启keepalived打开,会飘回到主的主机上
service keepalived stop
 

可是在mysql停止后,主库的keepalived 也会down 了,主库的vip 飘到备库上了,
但是当主库mysql 恢复后,主库的keepalived不会恢复,所以vip也不会飘到主库上,只有重启主库上的keepalived

注意:

上面两台服务器的keepalived都设置为了BACKUP模式,在keepalived中2种模式,分别是master->backup模式和backup->backup模式。
这两种模式有很大区别。在master->backup模式下,一旦主库宕机,虚拟ip会自动漂移到从库,当主库修复后,keepalived启动后,
还会把虚拟ip抢占过来,即使设置了非抢占模式(nopreempt)抢占ip的动作也会发生。在backup->backup模式下,当主库宕机后虚
拟ip会自动漂移到从库上,当原主库恢复和keepalived服务启动后,并不会抢占新主的虚拟ip,即使是优先级高于从库的优先级别,
也不会发生抢占。为了减少ip漂移次数,通常是把修复好的主库当做新的备库。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值