Keepalived保证Nginx高可用配置
Keepalived保证Nginx高可用配置
部署环境
keepalived-1.2.18
nginx-1.6.2
VM虚拟机redhat6.5-x64:192.168.1.201、192.168.1.201
Xshell4
部署方案
主备部署
nginx:201、202 /etc/nginx/nginx.conf相同配置
keepalived:201-master、202-backup 虚拟IP设置为192.168.1.120
部署步骤
一、修改201、202上的分别安装nginx和keepalived
参考:
nginx:https://www.cnblogs.com/cac2020/p/9524197.html
keepalived:https://www.cnblogs.com/cac2020/p/9525550.html
二、编辑201、202 nginx首页 用于区分 启动Nginx
vim /usr/local/nginx/html/index.html
/usr/local/nginx/sbin/nginx


三、查看网卡两台主机网卡
ip a

四、配置keepalived.conf
201:vim /etc/keepalived/keepalived.conf
global_defs {
router_id ##标识节点的字符串,通常为hostname
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ##执行脚本位置
interval ##检测时间间隔
weight - ## 如果条件成立则权重减20(-)
}
## 定义虚拟路由 VI_1为自定义标识。
vrrp_instance VI_1 {
state MASTER ## 主节点为MASTER,备份节点为BACKUP
## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这里是eth6)
interface eth0
virtual_router_id ## 虚拟路由ID号 同一个集群主备要一致
mcast_src_ip 192.168.1.201 ## 本机ip地址
priority ##优先级配置(-254的值)
Nopreempt ##
advert_int ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication {
auth_type PASS
auth_pass ## 真实生产环境下对密码进行匹配
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.120 ## 虚拟ip(vip),可以指定多个
}
}
202:vim /etc/keepalived/keepalived.conf
global_defs {
router_id 202
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval
weight -
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id
mcast_src_ip 192.168.1.202
priority ##优先级配置
advert_int
authentication {
auth_type PASS
auth_pass
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.120
}
}
动态检查脚本/etc/keepalived/nginx_check.sh:
## keepalived 会定时执行脚本并且对脚本的执行结果进行分析,动态调整vrrp_instance的优先级。这里的权重weight 是与下面的优先级priority有关,如果执行了一次检查脚本成功,则权重会-20,也就是由100 - 20 变成了80,Master 的优先级为80 就低于了Backup的优先级90,那么会进行自动的主备切换。
如果脚本执行结果为0并且weight配置的值大于0,则优先级会相应增加。
如果脚本执行结果不为0 并且weight配置的值小于0,则优先级会相应减少。
当脚本执行成功,keepalived被关闭,当nginx修复后需要手工启动keepalived 才能使该主机nginx可用
#!/bin/bash
A=`ps -C nginx --no-heading|wc -l`
if [ $A -eq ];then
/usr/local/nginx/sbin/nginx
sleep if [ `ps -C nginx --no-heading |wc -l` -eq ];then killall keepalived
fi
fi
脚本赋权:chmod +x /etc/keepalived/nginx_check.sh
五、重启keepalived
service keepalived restart
重新查看ip a 多了一个虚拟IP:192.168.1.120

参考:
https://blog.csdn.net/u012410733/article/details/57078407
https://blog.csdn.net/l1028386804/article/details/52577875
Keepalived保证Nginx高可用配置的更多相关文章
- linux中keepalived实现nginx高可用配置
linux中keepalived实现nginx高可用配置 安装keepalived 运行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd ...
- 配置keepalived支持nginx高可用
实验环境 序号 主机名 IP地址 1 nginx1 192.168.204.11 2 nginx2 192.168.204.12 安装nginx 安装nginx yum install -y epel ...
- MariaDB+Keepalived双主高可用配置MySQL-HA
利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...
- keepalived对nginx高可用演练脚本
keepalived对nginx高可用演练脚本 参考文章:http://deidara.blog.51cto.com/400447/302402/ .安装nginx.keepalived.epel-r ...
- Nginx配置upstream实现负载均衡及keepalived实现nginx高可用
(原文链接:http://www.studyshare.cn/blog-front//blog/details/1159/0 ) 一.准备工作 1.准备两个项目,发布到不同的服务器上,此处使用2个虚拟 ...
- keepalived实现nginx高可用
keepalived是什么 keepalived直译就是保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发 ...
- 基于keepalived的nginx高可用
#nginx,keepalived安装略过 MASTER 节点配置文件(192.168.1.11) vi /etc/keepalived/keepalived.conf global_defs { # ...
- 使用Keepalived实现Nginx高可用
Keepalived是一个路由软件,可以提供linux系统和linux系统上的组件的负载均衡和高可用,高可用基于VRRP(Virtual Router Redundancy Protocol,虚ip) ...
- Keepalived+LVS-DR+Nginx高可用故障切换模式
LVS架构中,不管是NAT模式还是DR模式,当后端的RS宕掉后,调度器依然会把请求转发到宕掉的RS上,这样的结果并不是我们想要的.其实,keepalived就可以解决问题,它不仅仅有高可用的功能,还有 ...
随机推荐
- 【JSP】EL函数和自定义EL函数
简介 EL原本是JSTL1.0中的技术(所以EL和JSTL感情如此好就是自然的了),但是从JSP2.0开始,EL就分离出来纳入了JSP的标准了.但是EL函数还是和JSTL技术绑定在一起.下面将介绍如何 ...
- 【笔记】javascript权威指南-第六章-对象
对象 //本书是指:javascript权威指南 //以下内容摘记时间为:2013.7.28 对象的定义: 1.对象是一种复合值:将很多值(原始值或者对象)聚合在一起,可以通过名字访问这些值. ...
- 2018牛客网暑期ACM多校训练营(第三场) A - PACM Team - [四维01背包][四约束01背包]
题目链接:https://www.nowcoder.com/acm/contest/141/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...
- JSTL 学习
对于页面访问数据的统计,可以使用内置对象的相应方法进行计数工作,这个对象要在jsp对象的整个生命周期中setAttribute()和getAttribute()application.setAttri ...
- Kettle 4.2源码分析第一讲--Kettle 简介
Pentaho Data Integration(PDI)简介 1. PDI结构简介 图 1‑1 PDI核心组件 Spoon是构建ETL Jobs和Transformations的工具.Spoon可以 ...
- 没有动态库链接:可执行的文件大小一个就有几百兆 Dynamic-Link Libraries
dynamic link library Dynamic-Link Libraries (Windows) https://msdn.microsoft.com/en-us/library/windo ...
- jdb--gdb---java 远程调试(java application与web application)
命令比较 gdb jdb bt where del clear stop brea ...
- django model field validator 设置
转自:http://blog.csdn.net/cwjcwj520/article/details/17330845 例子为想在创建用户名的时候验证输入字符是否有效,并且插入了even_field为C ...
- $("this") $(this) 区别
1.$("this")是使用标签选择器,查找名为this的标签2.$(this)取出当前对象并转换为jQuery对象3.$(this)是jquery对象,能调用jquery的方法, ...
- 2018/03/15 每日一个Linux命令 之 mv
Linux mv命令用来为文件或目录改名.或将文件或目录移入其它位置. mv [参数] [要移动/更名的文件] [移动路径/要更改名字] 平常用的很多了,这里就不多讲解了,只介绍两个重要参数就好了 - ...