问题
nginx解决tomcat高可用的思路,是前面加一层负载服务nginx。这种做法,总会有一个前端负载层存在宕机可能,是死循环
keepalived解决
lvs(Linux虚拟服务器)思想来解决
keepalived的思路,由2台服务器软件虚拟出来一台 虚拟网关vip
此vip由两台机器共同协商生成。当有一台机器宕机时,另一台机器一样能维持vip。这保证了,只要两台机器不同时宕机,vip就存在
keepalived的安装(不能用docker,docker中无法正常工作)
链接: https://pan.baidu.com/s/1KQjXV-eItDvg77KjPH8F6g 提取码: fggy
对应centos6系统
keepalived安装步骤
./configure --prefix=/data/program/keepalived --sysconf=/etc ##因为keepalive启动时候会默认读取/etc/keepalived/keepalived.conf
make && make install
keepalived的配置
打开/etc/keepalived/keepalived.conf,只需要配置如下一段。(其它是多余配置,删除)
启动keepalived
/data/program/keepalived/sbin/keepalived
ip addr命令查看网卡
eth0的网卡上,出现两个ip,244.3是真实ip,244.200是虚拟vip
重复安装第二台
两个配置差异
state BACKUP # 指定keepalived的角色,MASTER为主,BACKUP为备
priority 100 # 优先级,数值越大,处理请求的优先级越高。备用数字小些
测试主备keepalived
正常情况下,vip是在主机器一端的,备用机器244.4上不会出现vip。此时,如果我们杀掉主机器上keepalived,备用机器上会出现vip。如下图下半部分。
主机器keepalived再启动后,备机中vip = 200消失了,如下图
使用keepalived来监控nginx
编辑一个sh监控脚本,sh脚本
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #重启nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行VIP转移
killall keepalived #杀掉,vip就漫游到另一台机器
fi
fi
在配置文件中加入以下两处配置
重启keepalived,测试监控效果,如下图操作
mvvm开发模式里面
- 后台java只提供restful接口,swagger文档展示。
- 后端需要用nginx,把接口显现给前端
- 微服务的概念:从前端到后台,一套业务流程是完整的