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跟下面红框内容一致:

Keepalived实现主备切换

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

Keepalived实现主备切换

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

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

Keepalived实现主备切换

现关闭192.168.1.73服务器

shutdown -h now

查看192.168.1.74服务器:

Keepalived实现主备切换

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

Keepalived实现主备切换

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

Keepalived实现主备切换

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

Keepalived实现主备切换

master重新提供服务。

上一篇:Nginx实战部署常用功能演示(超详细版),绝对给力~~~


下一篇:keepalived+LVS双机热备