如何提高服务器可靠性之keepalived应用案例

一、什么是keepalived

keepalived可以实现服务器关键节点的高可靠性,如实现负载均衡节点的双机HA。

二、keepalived的原理是什么

当访问关键节点的时候,比如某个ip 192.168.0.190,我们希望这个节点更加可靠。

可以使用两台主机来承载他的工作,这样即使一台故障,另一台依然能正常提供服务。

如果熟悉网络原理,会发现这个场景特别像vrrp,没错,keepalived就是基于vrrp

三、keepalived部署案例

1、环境

主节点 ServerA : 192.168.0.172

备节点 ServerB : 192.168.0.173

keepalived 虚拟ip : 192.168.0.190

2、实现目标

访问192.168.0.190,由ServerA和ServerB两台主机提供服务,实现双机热备,一台故障,另一台接替工作。

这里ServerA作为主节点,ServerB作为备节点,他们提供web服务

为测试,已经在两台主机部署好Apache,可正常访问

3、步骤

3.1 两个节点均安装keepalived

[root@ServerA ~]# yum install keepalived -y
[root@ServerB ~]# yum install keepalived -y

3.2 配置keepalived的虚拟ip和主从

ServerA为主节点,正常情况由主机A来提供web服务

[root@ServerA ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
vrrp_instance test {
    state MASTER   #主节点#
    interface ens33    #网卡名#
    virtual_router_id 10  #vrrp组id,两个节点必须相同#
    priority 110  #优先级,数字大为主#
    advert_int 1  
    authentication {    #两个节点的验证密钥,需相同#
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {   #虚拟IP#
        192.168.0.190
    }
}
[root@ServerA ~]# 

ServerB为备节点,当主机A故障,ServerB来提供web服务

[root@ServerB ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
vrrp_instance test {
    state BACKUP
    interface ens33
    virtual_router_id 10
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.190
    }
}
[root@ServerB ~]# 

启动服务

[root@ServerA ~]# systemctl start keepalived
[root@ServerB ~]# systemctl start keepalived

查看ip,这时会发现在ServerA上多了虚拟ip,而ServerB没有这个ip

[root@ServerA ~]# ip addr show ens33 | grep inet
    inet 192.168.0.172/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33
    inet 192.168.0.190/32 scope global ens33

 

[root@ServerB ~]#  ip addr show ens33 | grep inet
    inet 192.168.0.173/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33

测试访问虚拟ip

 

模拟ServerA故障,这里断开ServerA的网络即可

[root@ServerA ~]# ifconfig ens33 down

在ServerB查看ip,会发现虚拟ip已经在ServerB上

[root@ServerB ~]#  ip addr show ens33 | grep inet
    inet 192.168.0.173/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33
    inet 192.168.0.190/32 scope global ens33

仍然访问虚拟ip,会发现是由ServerB来提供服务,当然这里只是测试,真正生产环境会保证两个节点的数据相同

tcpdump抓包分析,可看到vrrp通告报文(vrrp原理略)

[root@ServerA ~]# tcpdump -i ens33 -w keepalived.pcap

 

点击了解更多技术资料和免费学习视频请加入讨论群:662736393
欢迎关注百哥IT技术专栏,联系QQ:1443262302
针对本技术点问题,欢迎加Q一起讨论学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值