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高可用配置的更多相关文章

  1. linux中keepalived实现nginx高可用配置

    linux中keepalived实现nginx高可用配置 安装keepalived 运行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd ...

  2. 配置keepalived支持nginx高可用

    实验环境 序号 主机名 IP地址 1 nginx1 192.168.204.11 2 nginx2 192.168.204.12 安装nginx 安装nginx yum install -y epel ...

  3. MariaDB+Keepalived双主高可用配置MySQL-HA

    利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...

  4. keepalived对nginx高可用演练脚本

    keepalived对nginx高可用演练脚本 参考文章:http://deidara.blog.51cto.com/400447/302402/ .安装nginx.keepalived.epel-r ...

  5. Nginx配置upstream实现负载均衡及keepalived实现nginx高可用

    (原文链接:http://www.studyshare.cn/blog-front//blog/details/1159/0 ) 一.准备工作 1.准备两个项目,发布到不同的服务器上,此处使用2个虚拟 ...

  6. keepalived实现nginx高可用

    keepalived是什么 keepalived直译就是保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发 ...

  7. 基于keepalived的nginx高可用

    #nginx,keepalived安装略过 MASTER 节点配置文件(192.168.1.11) vi /etc/keepalived/keepalived.conf global_defs { # ...

  8. 使用Keepalived实现Nginx高可用

    Keepalived是一个路由软件,可以提供linux系统和linux系统上的组件的负载均衡和高可用,高可用基于VRRP(Virtual Router Redundancy Protocol,虚ip) ...

  9. Keepalived+LVS-DR+Nginx高可用故障切换模式

    LVS架构中,不管是NAT模式还是DR模式,当后端的RS宕掉后,调度器依然会把请求转发到宕掉的RS上,这样的结果并不是我们想要的.其实,keepalived就可以解决问题,它不仅仅有高可用的功能,还有 ...

随机推荐

  1. IIS7配置伪静态把后缀名映射为html方案

    1.在IIS新建站点.[创建的时候不用去选择版本和模式,默认即可] 2.选中站点,切换到功能试图,找到“处理程序映射",双击之后,在打开窗口右侧的操作栏目下做如下设置: 1)右边" ...

  2. 应用Strong Name保存.NET应用程序集

    关于Strong Name的主题,网上已经有很多这方面的介绍,你可能最熟悉的印象就是这样 大部分的情况,这样就可以了.如果代码是机密的,还可能用到Delay sign only,这就复杂一些,请查找相 ...

  3. vuejs学习资料

    Vue.js 是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API,让编写动态的UI界面变得轻松简单. 这里是我整理的相关学习资料: vue.js 中文api vue.js gith ...

  4. Java Mail 发送邮件(SSL加密方式,TSL加密方式)

    一.一般配置 发送邮件需要用到  mail包 maven 依赖如下: <!-- https://mvnrepository.com/artifact/javax.mail/mail --> ...

  5. poj3347 Kadj Squares【计算几何】

    Kadj Squares Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3594   Accepted: 1456 Desc ...

  6. 《机器学习实践》程序清单3-7 plotTree函数

    这个plotTree函数,比较聪明,比较简化,比较抽象,作者一定是逐步优化和简化到这个程度的.我是花了小两天时间,断断续续看明白的,还是在参考了另一篇文章以后.这里是链接http://www.cnbl ...

  7. Cocos2d比较好的博客

    1 .http://blog.csdn.net/bill_man/article/details/7202458 学习笔记 2.http://cocos2d-x.org/ 官网 3.http://ww ...

  8. CF1044B Intersecting Subtrees 构造+树论

    正解:构造 解题报告: 传送门 又是一道交互题!爱了爱了! 这题真的,极妙!非常神仙!就非常非常思维题! 直接说解法了吼 说起来实在是简单鸭 就是先问一个对方的联通块中的一个点在我这儿的编号,记为x ...

  9. mysql获取下一篇和上一篇文章的ID

    mysql获取上一篇和下一篇文章的ID只要在当前页面读取上一个和下一个的ID就可以了.假设当前ID为10:搜索上一个的ID:select  id  from table where id<10 ...

  10. oracle行转列,列转行

    多行转字符串这个比较简单,用||或concat函数可以实现 SQL Code select concat(id,username) str from app_userselect id||userna ...