Keepalived实现主备切换

Posted 秋风飒飒吹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keepalived实现主备切换相关的知识,希望对你有一定的参考价值。

目前有一个需求:有两台机器,上面部署了相同的服务,平时情况下,由master处理请求;master宕机后,由backup处理请求;master重连后,重新由backup处理请求。

实现的方式有很多,我这里由keepalived简单实现。

安装keepalived

yum install -y conntrack-tools libseccomp libtool-ltdl
yum install -y keepalived

相关配置

这里有两台服务器:

ip 角色 端口
192.168.1.73 master 8080
192.168.1.74 backup 8080
vip:192.168.1.76 虚拟ip 8080

192.168.1.73的代码:

@RestController
public class TestController {

    @GetMapping("/test")
    public String test(){
        return "test1";
    }
}

192.168.1.74的代码:

@RestController
public class TestController {

    @GetMapping("/test")
    public String test(){
        return "test2";
    }
}

192.168.1.73配置:

vi /etc/keepalived/keepalived.conf

global_defs {
   router_id kpd
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 51
    priority 250
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass ceb1b3ec013d66163d6ab
    }
    virtual_ipaddress {
        192.168.1.76
    }
}

注意vrrp_instance代码块中的interface跟下面红框内容一致:

image-20210530142905391

192.168.1.74配置:

vi /etc/keepalived/keepalived.conf

global_defs {
   router_id kpd
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 51
    priority 249
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass ceb1b3ec013d66163d6ab
    }
    virtual_ipaddress {
        192.168.1.76
    }
}

启动服务:

systemctl start keepalived.service
systemctl enable keepalived.service

测试keepalived

先看192.168.1.73的ip

image-20210530143226128

这里vip落到了192.168.1.73上面,说明master配置没有问题。

访问:192.168.1.76:8080/test,返回的是73服务器的结果,间接说明master节点工作。

image-20210530143345192

现关闭192.168.1.73服务器

shutdown -h now

查看192.168.1.74服务器:

image-20210530143517785

vip落到了192.168.1.74服务器,backup开始工作,继续访问:192.168.1.76:8080/test,返回74服务器的代码,至此无问题。

image-20210530143605910

重新开启192.168.1.73服务器:查看vip变化

image-20210530143810640

这里vip又重新落到192.168.1.73这台master服务器,启动73后台java服务,并访问192.168.1.76:8080/test

image-20210530143910873

master重新提供服务。

以上是关于Keepalived实现主备切换的主要内容,如果未能解决你的问题,请参考以下文章

keepalived实现redis主备切换

keepalived实现对mysql主从复制的主备自动切换

Keepalived中Master和Backup主备切换机制浅析

keepalived主备切换后的arp问题

Keepalived主备切换时执行脚本

keepalived裂脑导致主备无法切换 #yyds干货盘点#