Keepalived+Nginx+Tomcat搭建高可用的Web服务(二):双主模式
所有博文均在个人独立博客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
- 点赞
- 收藏
- 分享
- 文章举报
- form表单提交数据编码方式和tomcat接受数据解码方式的思考
- 关于tomcat报错:org.apache.catalina.LifecycleException:
- linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh
- ##WEB阶段 ## Tomcat服务器
- 解决IDEA已经引入tomcat jar包,HttpServletRequest还是红色报错问题(记录日志)
- TomCat快速入门
- Apache 和 tomcat 的整合
- 处理idea启动Tomcat控制台中文乱码问题
- 在CentOS7安装配置Java和Tomcat(gz压缩包方式)
- 在Linux查看tomcat日志的方法
- 深入剖析TOMCAT
- linux安装tomcat7
- Tomcat安装与配置图文教程
- idea创建web项目以及配置Tomcat
- Nginx+Tomcat 静态、动态分离
- Tomcat环境配置以及eclipse服务器配置
- Application可以运行tomcat部署404
- Tomcat settings should be set in Tomcat 4000 Preference Page
- 浅谈负载均衡之【tomcat分布式session共享】
- Tomcat使用线程池配置高并发连接