为了账号安全,请及时绑定邮箱和手机立即绑定

Keepalived+Nginx双机主备实现Nginx高可用

标签:
Nginx

在项目中,我们使用Nginx实现反向代理和负载均衡,大大的提高了系统的并发量,但是一旦当Nginx宕机了,会导致整个服务不可用,所以,也必须实现Nginx的高可用。

Keepalived基于VRRP(虚拟路由冗余协议)协议,使用虚拟IP,解决单点故障。Keepalived可以配置一个Master(主机)和多个Backup(备用机),虚拟IP一开始绑定的是Master,当Master宕机之后,虚拟IP会自动跟Backup绑定,如果有多个Backup,会通过选举获取权重最大的Backup,当Master恢复后,虚拟IP又会自动和Master绑定。需要注意的是Master和Backup的硬件配置最后保持一样,如果Master的硬件配置很高,而Backup的硬件配置很差,会导致当Master宕机之后,大量请求同时到达Backup,把Backup也压垮

Keepalived+Nginx双机主备是指在两台服务器上部署Nginx,一主一备(一个Master,一个Backup),Keepalived虽然可以实现Nginx的高可用,但是也有一个很大的缺点,就是只有一台Nginx会提供服务,正常情况下Backup会一直空闲,造成资源浪费

Keepalived不仅仅只能和Nginx搭配使用,还能和Redis等中间件一起使用,实现高可用


Keepalived+Nginx双机主备原理图:

5fbb2ba80001996c19201080.jpg

需要在Master和所有的Backup上都安装上Keepalived

Keepalived Master节点配置

使用whereis keepalived命令查看keepalived的安装路径

https://img1.sycdn.imooc.com/63f9f89100011dee03520060.jpg

进入到/etc/keepalived目录,可以看到目录下有keepalived.conf.sample文件,将keepalived.conf.sample拷贝一份,改名为keepalived.conf

https://img3.sycdn.imooc.com/63f9f8fc0001e09b04800178.jpg

Master节点配置

# 全局配置
global_defs {
   # 路由id:当前安装keepalived的节点标识符,保证全局唯一
   router_id KEEPALIVED_MASTER
}

vrrp_instance VI_1 {
    # j节点状态,Master表示是主节点,Backup表示是备用节点,Master节点只能有一个,Backup可以有多个
    state MASTER
    # 该实例绑定的网卡,可以通过 ip addr命令查看网卡
    interface ens33
    # 虚拟节点的id,需要保证主备节点一致即可
    virtual_router_id 51
    # 权重,master权重一般高于backup,如果有多个Backup,谁的权重高,当Master挂掉后,谁就是Master
    priority 100
    # 主备之间同步检查时间间隔,单位秒
    advert_int 2
    # 认证权限密码,防止非法节点进入,Master和Backup需要保持一直
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟出来的ip,可以有多个(vip)
    virtual_ipaddress {
        192.168.48.150
    }
}

使用whereis keepalived查看keepalived的安装路径

https://img2.sycdn.imooc.com/63f9fe0200013e4b03540060.jpg

进入到/usr/local/keepalived,启动keepalived

https://img1.sycdn.imooc.com/63f9ff530001196104300125.jpg

查看keepalived是否启动成功

https://img4.sycdn.imooc.com/63f9ff870001c88105550080.jpg

此时,就可以看到服务器已经绑定了虚拟ip

https://img4.sycdn.imooc.com/63f9ffcc0001cdfd07440398.jpg

如果在nginx中对虚拟IP配置了反向代理,就可以在浏览器通过虚拟IP直接访问到Nginx首页

https://img4.sycdn.imooc.com/63fa02670001f96b04330148.jpg

https://img1.sycdn.imooc.com/63fa027700011e6f10160412.jpg


Keepalived Backup节点配置

# 全局配置
global_defs {
   # 路由id:当前安装keepalived的节点标识符,保证全局唯一
   router_id KEEPALIVED_BACKUP
}

vrrp_instance VI_1 {
    # j节点状态,Master表示是主节点,Backup表示是备用节点,Master节点只能有一个,Backup可以有多个
    state BACKUP
    # 该实例绑定的网卡,可以通过 ip addr命令查看网卡
    interface ens33
    # 虚拟节点的id,需要保证主备节点一致即可
    virtual_router_id 51
    # 权重,master权重一般高于backup,如果有多个Backup,谁的权重高,当Master挂掉后,谁就是Master
    priority 80
    # 主备之间同步检查时间间隔,单位秒
    advert_int 2
    # 认证权限密码,防止非法节点进入,Master和Backup需要保持一直
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟出来的ip,可以有多个(vip)
    virtual_ipaddress {
        192.168.48.150
    }
}



Keepalived 高可用测试

修改Master和Backup nginx中的index.html内容,加入IP地址用于区分Master和Backup

https://img1.sycdn.imooc.com//63fa0c27000190ce06790417.jpg

此时在浏览器中通过虚拟IP访问Nginx首页,显示的是Master节点的内容

https://img1.sycdn.imooc.com//63fa0c5d00012c7311570441.jpg

当停掉Master服务器,或者关闭Master的Keepalived模拟Master宕机的情况,此时再在浏览器中通过虚拟IP访问Nginx首页,显示的是Backup节点的内容

https://img1.sycdn.imooc.com//63fa0cf6000123d911390469.jpg

当Master节点恢复后,访问的又是Master节点的内容


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消