keepalived实现nginx负载均衡
keepalived 实现nginx 负载均衡+主备高可用
概述
nginx作为负载均衡器,所有请求都到nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机,后端web服务将无法提供服务,影响严重。
所以在架构设计中,可以利用nginx的反向代理和负载均衡实现后端应用的负载均衡和高可用性,同时我们还需要考虑Nginx的单点故障。真正做到架构高可用性。
主要考虑以下几点:
1、Nginx服务因为意外现象挂掉
2、服务器宕机导致nginx不可用
目前主流的解决方案就是keepalived+nginx 实现nginx的故障转移,同时做好监控报警。在自动故障转移的同时能通知到相关的应用负责人检查相关应用,排查隐患,彻底解决问题。
keepalived的HA分为抢占模式和非抢占模式,抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP。
使用阿里云epel镜像
两台虚拟机都安装
[root@nginx01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@nginx01 ~]# yum -y install nginx
启动服务和开机自启
[root@nginx01 ~]# systemctl start nginx
[root@nginx01 ~]# systemctl enable nginx
安装keepalived
用刚才实验的俩台虚拟机,暂时不用安装,没有的话按之前安装下
修改keepalived.conf配置文件
nginx-01主机上的keepalived.conf文件的修改
[root@nginx01 ~]# vim /etc/keepalived/keepalived.conf
keepalived.conf配置文件完整内容如下所示:
! Configuration File for keepalivedglobal_defs {router_id nginx01
}
vrrp_script chk_nginx{script "/etc/keepalived/nginx_check.sh"interval 2weight -20}
vrrp_instance nginx {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100}track_script{chk_nginx}
}
重启服务
[root@nginx01 ~]# systemctl restart nginx
把配置文件传给nginx02
[root@nginx01 ~]# scp /etc/keepalived/keepalived.conf 192.168.10.7:/etc/keepalived/
[root@nginx02 ~]#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id nginx02
}
vrrp_script chk_nginx{script "/etc/keepalived/nginx_check.sh"interval 2weight -20}
vrrp_instance nginx {state MASTERinterface ens33virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100}track_script{chk_nginx}
}
重启服务
[root@nginx02 ~]# systemctl restart nginx
创建nginx服务检测脚本
分别在nginx-01和nginx-02服务器的/etc/keepalived
目录下创建nginx_check.sh
脚本,并为其添加执行权限。用于keepalived定时检测nginx的服务状态,如果nginx停止了,会尝试重新启动nginx,如果启动失败,会将keepalived进程杀死,将vip漂移到备用机器上。
[root@nginx01 ~]# vim /etc/keepalived/nginx_check.sh
#!/bin/bashnum=$(ps -C nginx --no-header | wc -l)if [ $num -eq 0 ];thensystemctl start nginx #尝试重新启动nginxsleep 1 #睡眠1秒if [ $(ps -C nginx --no-header | wc -l) -eq 0 ];thenkillall keepalived #若nginx启动失败,将keepalived服务杀死。将vip漂移到其它备份节点fifi
说明:
ps -C nginx --no-header | wc -l一般用于shell脚步编写用
-C <指令名称> 选项用来指定程序的名称
--no-header选项去掉头部
killall命令由软件包psmisc提供,确保两台主机要安装psmisc
[root@nginx-01 ~]# chmod +x /etc/keepalived/nginx_check.sh
[root@nginx01 ~]# scp /etc/keepalived/nginx_check.sh 192.168.10.7:/etc/keepalived/
[root@nginx02 ~]#chmod +x /etc/keepalived/nginx_check.sh
查看进程
[root@nginx01]#ps -ef | grep keepalived
查看进程
[root@nginx02]#ps -ef | grep keepalived
看到如上进程信息,表示keepalived已经启动成功。下面用ip addr
命令查看vip绑定的情况,如下所示:
[root@nginx01 ~]# ip addr show dev ens33
[root@nginx02 ~]# ip addr show dev ens33
vip地址192.168.10.100绑定在nginx01的ens33网卡上。
测试
抢占模式
将nginx-01的keepalived服务和nginx服务停掉,查看vip是否漂移到nginx-02
[root@nginx01 ~]# systemctl stop keepalived
[root@nginx01 ~]# nginx -s stop
下面用ip addr
命令查看vip绑定的情况,如下所示:
[root@nginx01 ~]# ip addr show dev ens33
[root@nginx02 ~]# ip addr show dev ens33
从上面显示可以看出,vip已经成功从nginx-01漂移到了nginx-02。
将nginx-01的nginx服务和keepalived服务启动,查看抢占模式的效果。
[root@nginx01 ~]# nginx
[root@nginx01 ~]# systemctl start keepalived
[root@nginx01 ~]# ip addr show dev ens33
此时再将nginx-01的nginx服务和keepalived服务启动后,由于nginx-01是MASTER且优先级高,所以会将nginx-02的VIP抢占过来。从上面的显示结果可以看到,VIP又漂移到了nginx-01主机。
非抢占模式
和抢占模式的配置相比,只改了两个地方:
在vrrp_instance块下,两个节点各增加了nopreempt指令,表示不争抢vip。
两个节点的state都为BACKUP。
在非抢占模式下,两个keepalived节点都启动后,默认都是BACKUP状态,双方在发送组播信息后,会根据优先级来选举一个MASTER出来。由于两者都配置了nopreempt,所以MASTER从故障中恢复后,不会抢占vip。这样会避免VIP切换可能造成的服务延迟。
改nginx-01和nginx-02的keepalived.conf内容(标红色部分):
重启keepalived systemctl restart keepalived
[root@nginx01 ~]# ip addr show dev ens33
[root@nginx02 ~]# ip addr show dev ens33
停掉nginx01上服务后在查看
[root@nginx01 ~]# ip addr show dev ens33
[root@nginx02 ~]# ip addr show dev ens33
VIP地址漂移到了nginx-02上
再将nginx-01的keepalived服务启动,查看是否抢占VIP
[root@nginx01 ~]# ip addr show dev ens33
[root@nginx02 ~]# ip addr show dev ens33
VIP还在nginx02上面说明没抢占VIP
keepalived实现nginx负载均衡相关推荐
- keepalived介绍和keepalived实现nginx负载均衡机高可用
1. keepalived简介 1.1 keepalived是什么? Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...
- Keepalived+LVS+Nginx负载均衡之高可用
2019独角兽企业重金招聘Python工程师标准>>> 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致 ...
- 解决nginx负载均衡高可用keepalived只针对物理机的问题
在高可用keepalived软件,在默认的情况下仅仅在对方机器宕机或keepalived停掉的时候才会接管业务. 但是在实际工作过程中,例如在nginx负载均衡工作实例中,nginx服务已停止,而ke ...
- nginx+keepalived搭建主从负载均衡并迅速切换
大家都听说过主从服务器或者负载均衡之类的专业术语,作为衡量一个中高级运维工程师的标准,集群和负载是运维工程师必须掌握的技术,然而在一家小公司是根本不会体会到运维的重要性的.首先从理论上讲一下,当用户量 ...
- keepalived高可用+nginx负载均衡
keepalived高可用+nginx负载均衡 1.IP地址规划 hostname ip 说明 KN01 10.4.7.30 keepalived MASTER节点 nginx负载均衡器 KN02 1 ...
- nginx负载均衡(四)----keepalived原理及实现双vip
keepalived原理及实现双vip 一.什么是keepalived? 二.VRRP协议 1.vrrp协议格式 2.相关术语 3.vrrp协议工作原理 4.master选举 4.1备份组中路由器的优 ...
- 企业级Nginx负载均衡与keepalived高可用实战课-老男孩-专题视频课程
企业级Nginx负载均衡与keepalived高可用实战课-2678人已学习 课程介绍 企业级Nginx负载均衡与keepalived高可用实战分享 课程收益 互联网环境最常用 ...
- Nginx负载均衡的详细配置及使用案例
Nginx负载均衡的详细配置及使用案例详解 感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. ...
- Nginx负载均衡集群介绍
第1章 集群介绍 1.1 集群简介 1.1.1 什么是集群 简单说,集群就是一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行 ...
最新文章
- 安装Python第三方库的三个方法
- 推荐一个.NET下转Json的利器,FastJson
- kafka 监控(eagle)
- html自动获取用户位置,HTML5 - 使用Geolocation(地理定位)获取用户的位置
- php的declare命令
- js 原型prototype继承模式
- go语言调用python_Golang中调用Python3
- Ubuntu 下配置 NFS
- CakePHP Pagination (分頁功能) 加入自己的參數
- 在Ajax程序中实现无刷新换肤功能(asp.net2.0)
- 参加双车项目的一些感触
- 英特尔显示器音频_英特尔也玩马甲?有关USB TypeC的冷知识你了解多少
- java throw throws try-catch-finally异常处理
- mysql 根据子查询的结果查询朱标_Python - MySQL数据库操作
- 【转】Linux内存管理(最透彻的一篇)
- 如何监控防火墙后的流量?
- 魔兽争霸3 the oracle,疯狂SQL之魔兽争霸
- 极速office(Word)如何在表格里面插入行或者列
- 用机器学习自制二手房估价模型(附完整过程)
- IDEA导出jar包后运行报错 找不到或无法加载主类
热门文章
- AutoCAD.net首尾相连的线分组连接
- 在凭证保存时 计算机程序能够对,湖北2015会计从业《会计电算化》全真预测卷三...
- 湖大计算机网络复试,湖南大学信息科学与工程学院复试情况
- 分不清ARM和X86架构,来看看服务器的产品形态
- 【阅读笔记】《TDN: Temporal Difference Networks for Efficient Action Recognition》阅读笔记
- 2020美菜网产品经理春招面经
- maven打包报错-There are test failures
- 在字节跳动实习后,程序员是这样写简历的
- 【工具】vue 图片上传(单张/多张)
- afaca 分析报告