Keepalived+Nginx+Tomcat搭建高可用的Web服务(二):双主模式

2 篇文章 0 订阅
2 篇文章 0 订阅

前一篇博文中使用keepalived实现nginx的高可用,并且演示的是主备模式,这种方式有一台机器一直作backup使用,有50%的资源被浪费。而双主模式中,两台主机互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担。

本篇博文将主要演示Keepalived+Nginx的双主模式

Keepalived+Nginx+Tomcat双主模式

环境准备

Ubuntu 16.04 LTS
Keepalived v1.2.19 (03/13,2017)
Niginx nginx/1.10.3
Tomcat v8.0

准备4台虚拟机,两台Nginx和两台Tomcat,另外两个VIP(虚拟IP),192.168.224.150和192.168.224.151

虚拟机IP说明
Nginx1+Keepalived (Master)192.168.224.101Nginx Server 1 Master for 192.168.224.150,Backup for 192.168.224.151
Nginx2+Keepalived (Master)192.168.224.102Nginx Server 2 Master for 192.168.224.151,Backup for 192.168.224.150
Tomcat1192.168.224.103Tomcat Web Server 1
Tomcat2192.168.224.104Tomcat Web Server 2

其他配置和前篇博文一样,区别只是keepalived配置不一样

101机器中keepalived.conf配置如下

vrrp_script chk_nginx {
 script "/etc/keepalived/check_nginx.sh" //检测nginx进程的脚本
 interval 2
 weight -20
}

global_defs {
 notification_email {
      //可以添加邮件提醒
 }
}
vrrp_instance VI_1 {
 state MASTER //主服务器
 interface ens33
 virtual_router_id 51
 mcast_src_ip 192.168.224.101
 priority 250
 advert_int 1

 authentication {
        auth_type PASS
        auth_pass 123456
 }
 track_script {
        chk_nginx
 }
 virtual_ipaddress {
        192.168.224.150
 }
}

vrrp_instance VI_2 {
 state BACKUP //从服务器
 interface ens33
 virtual_router_id 52
 mcast_src_ip 192.168.224.101
 priority 240
 advert_int 1

 authentication {
        auth_type PASS
        auth_pass 123456
 }
 track_script {
        chk_nginx
 }
 virtual_ipaddress {
        192.168.224.151
 }
}

102机器中keepalived.conf配置如下

vrrp_script chk_nginx {
 script "/etc/keepalived/check_nginx.sh" //检测nginx进程的脚本
 interval 2
 weight -20
}

global_defs {
 notification_email {
      //可以添加邮件提醒
 }
}
vrrp_instance VI_1 {
 state BACKUP //从服务器
 interface ens33
 virtual_router_id 51
 mcast_src_ip 192.168.224.102
 priority 240
 advert_int 1

 authentication {
        auth_type PASS
        auth_pass 123456
 }
 track_script {
        chk_nginx
 }
 virtual_ipaddress {
        192.168.224.150
 }
}

vrrp_instance VI_2 {
 state MASTER //主服务器
 interface ens33
 virtual_router_id 52
 mcast_src_ip 192.168.224.102
 priority 250
 advert_int 1

 authentication {
        auth_type PASS
        auth_pass 123456
 }
 track_script {
        chk_nginx
 }
 virtual_ipaddress {
        192.168.224.151
 }
}

注意观察配置,我们添加了一个vrrp_instance VI_2,绑定了新的VIP192.168.224.151,然后设置了virtual_router_id为52跟VI_1(51)区分开来,VI_2和VI_1的state两台机器配置刚好相反,互为主备。

两台服务器分别启动keepalived和nginx,观察,VIP(150)已经绑定到101机器上,VIP(151)已经绑定到102机器上
浏览器多次刷新并访问http://192.168.224.150/
可以看到页面上IP交替显式103和104,并且显示NGINX-1,则表明是机器(101)在转发web请求
浏览器多次刷新并访问http://192.168.224.151/
可以看到页面上IP交替显式103和104,并且显示NGINX-2,则表明是机器(102)在转发web请求

关闭101机器上的keepalived和nginx来模拟101宕机,查看102的IP信息,发现150,151都绑定到了102机器上
浏览器多次刷新并访问http://192.168.224.150/http://192.168.224.151/
可以看到页面上IP交替显式103和104,并且显示NGINX-2,则表明是机器(102)在转发两个VIP的web请求

重新启动101机器上的keepalived和nginx,查看101的IP信息,发现150已经重新绑定到101机器上
浏览器多次刷新并访问http://192.168.224.150/
可以看到页面上IP交替显式103和104,并且显示NGINX-1,则表明是机器(101)在转发web请求

从上面的测试结果可以看出,使用两个VIP,将两台机器互作主备,可以100%利用上两台机器,当其中一台机器挂掉后,两个VIP均能通过另一台机器提供服务,达到服务的高可用性。
我们在用双主模式时,对于每台机器我们也应该给足够的余量,避免一台机器挂之后,另一台机器处理不了所有的请求,导致第二台机器接着挂掉,引起“雪崩效应”。

[参考资料]
http://blog.csdn.net/lexang1/article/details/52386909
https://www.cnblogs.com/kevingrace/p/6146031.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值