keepalive的双主模式

首先需要同步时间,时间不同步的话就很可能会出错
然后下载keepalived安装包,默认在base的yum里面
安装完后我们编辑配置文件/etc/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost  #接收信息的邮件地址
   }
   notification_email_from keepalive@localhost   #邮件来自于谁,可以不存在
   smtp_server 127.0.0.1 #邮件服务器可以是自己;
   smtp_connect_timeout 30 #邮件服务器链接超时时长
   router_id rt1  #router标识一个组内不同的router
   vrrp_mcast_group4 224.0.0.1  #组播地址
}

vrrp_instance VI_1 {  #组名VI_1
    state MASTER 
    interface ens33   
    virtual_router_id 51   #整个虚拟组的id,同组配置须保持一致
    priority 100
    advert_int 1 #一秒检查一次
    authentication {
        auth_type PASS #simple认证
        auth_pass 12345678  #最大支持8位
    }
    virtual_ipaddress {
        #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE>
        192.168.31.240/24 dev ens33 label ens33:0
    }
}                    

然后将配置文件传给另一台主机
scp keepalived.conf [email protected]:/etc/keepalived/
在这一台主机里我们只需要简单的修改几项
router_id rt2
state BACKUP
ppriority 95 #低一点

配置到这里就结束了,很简单。接下来我们就可以开始测试了
先在backup机上开启keepalive进程

可以看到已经拿到地址了
现在我们在master上开启进程
image.png
发现被更高的优先级抢走了
然后我们可以抓包查看他们互相通告的信息
image.png
但如果这样配置的话就只有一台在工作,另一台一直是备用的,我们可以在主机上分别配置两个虚拟路由器,假如A,B两台主机我们想要让他们同时工作起来,可以让A为第一个虚拟路由器的master,则B就是第二个虚拟路由器的master然后我们就有了两个VIP,但是有了两个VIP其他主机怎么与我们通信实现负载均衡呢,这个时候我们就需要一个新的调度器,但我们配置keepalive本来就是为了增强调度器的冗余安全性,如果引入了新的节点岂不是本末倒置。
这时我们可以使用DNS服务,DNS本来就是主从互备不存在单点性且只需要我们在一个域名里添加两条A记录就可以达到轮询负载均衡的目的。
编辑配置文件增加一个虚拟路由器配置:

#RT1上添加一段
vrrp_instance VI_2 {
    state BACKUP
    interface ens33 
    virtual_router_id 52
    priority 96
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 98765432
    }
    virtual_ipaddress {
        192.168.31.241/24 dev ens33 label ens33:1                                           
    }

#RT2上添加一段
vrrp_instance VI_1 {
    state MASTER 
    interface ens33 
    virtual_router_id 52
    priority 100 
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 98765432
    }
    virtual_ipaddress {
        192.168.31.241/24 dev ens33 label ens33:1                                           
    }
}

然后我们抓包看
image.png
每一台主机都分别获取到了一个IP地址如果我们down了其中一台主机,则ip地址会跑到另一台上,测试一下看看
image.png
则简单的实验就完成了
我们可以定义发生变化时执行指定的脚本

通知脚本的使用方式:
示例通知脚本:
#!/bin/bash
#
contact='root@localhost'

notify() {
		local mailsubject="$(hostname) to be $1, vip floating"
		local mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
		echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
		master)
			notify master
			;;
		backup)
			notify backup
			;;
		fault)
			notify fault
			;;
		*)
                        echo "Usage: $(basename $0) {master|backup|fault}"
			exit 1
			;;
esac		
#脚本的调用方法,写在虚拟路由器中
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"	

猜你喜欢

转载自blog.csdn.net/weixin_44288087/article/details/85268473