您的位置:首页 > 运维架构 > Tomcat

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

2020-02-16 22:22 330 查看

所有博文均在个人独立博客http://blog.mozhu.org首发,欢迎访问!

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

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

环境准备

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.101 Nginx Server 1 Master for 192.168.224.150,Backup for 192.168.224.151
Nginx2+Keepalived (Master) 192.168.224.102 Nginx Server 2 Master for 192.168.224.151,Backup for 192.168.224.150
Tomcat1 192.168.224.103 Tomcat Web Server 1
Tomcat2 192.168.224.104 Tomcat 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均能通过另一台机器提供服务,达到服务的高可用性。 我们在用双主模式时,对于每台机器我们也应该给足够的余量,避免一台机器挂之后,另一台机器处理不了所有的请求,导致第二台机器接着挂掉,引起“雪崩效应”。

[参考资料]

https://www.geek-share.com/detail/2683636380.html https://www.geek-share.com/detail/2692193360.html

转载于:https://my.oschina.net/mozhu/blog/1583570

  • 点赞
  • 收藏
  • 分享
  • 文章举报
站内首发文章 chengwu4352 发布了0 篇原创文章 · 获赞 0 · 访问量 406 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: