内容简介:在上节文章实现了nginx + zuul实现微服务高可以 ,实现原理图片如下
在上节文章 https://blog.csdn.net/oLinBSoft/article/details/85418953 学习笔记:微服务-8 nginx+zuul 实现高可用负载均衡
实现了nginx + zuul实现微服务高可以 ,实现原理图片如下
在这个图中,还是存在单点故障问题,就是ngnix服务只有一台,如何避免这个单点故障呢,可以采用 nginx+keepalived的双机热备 方式实现。
原理图如下:
就是dns解析的ip,指向到一个虚拟的ip上,通过keepalived 软件,一个Master 一个slave 两台都虚拟ip192.168.41.148 但只有一个激活虚拟ip对外服务,两个keepalived会相互检测心跳,当主服务器ip宕机时,备份服务器自动激活虚拟ip,接替虚拟ip的工作。即在同一时刻只有一个192.168.41.148.
安装配置,两台服务器分别安装
1. 两台服务器都安装keepalived 和 nginx
安装nginx参见前文,安装keepalived:
yum install keepalived
2.配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER # 备份服务器是SLAVE
interface ens33 #注意这个是网卡名称
virtual_router_id 51 # master 和 slave 要相同
priority 100 # 优先值 master 和 slave 要不相同
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.49.148 #可以有多个虚拟ip
}
}
3. 启动
systemctl start keepalived
4.启动后查看主服务器的ip
命令 ip addr
启动keepalived 在主服务器看见ip:192.168.49.148,关闭主服务器的keepalived 可以看到备份服务器上会激活ip:192.168.49.148,可以达到服务不中断
5. 可以进一步配置定时检查是否nginx意外停止服务,这是在ip是可用的,但nginx不可用的情况下,需要另外处理
(1)创建文件 /opt/chk_nginx.sh
#!/bin/bash
while true
do
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/sbin/nginx
sleep 4
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl stop keepalived
fi
fi
sleep 4
done
该脚本检测nginx的运行状态,并在nginx进程不存在时尝试重新启动nginx,如果启动失败则停止keepalived,让其它机器接管。
(2)修改为可执行:
chmod 755 /opt/chk_nginx.sh
sh /opt/chk_nginx.sh
(3)让 /opt/chk_nginx.sh 开机在后台执行
这样,其中一个主机宕机或nginx软件宕机都能触发相应处理程序,实现IP漂移。
参考: https://blog.csdn.net/xyang81/article/details/52556886/ Keepalived+Nginx实现高可用(HA)
http://blog.51cto.com/superpcm/2095395 Nginx+Keepalived高可用集群
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Nginx负载均衡高可用
- Nginx负载均衡+Keepalived高可用
- 高可用负载均衡集群之 HAProxy 部署
- Keepalived+Nginx搭建高可用负载均衡集群
- 利用saltstack一键部署高可用负载均衡集群
- 搭建高可用负载均衡器: haproxy+keepalived
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。