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. 【CF633H】Fibonacci-ish II 莫队+线段树

    [CF633H]Fibonacci-ish II 题意:给你一个长度为n的序列$a_i$.m个询问,每个询问形如l,r:将[l,r]中的所有$a_i$排序并去重,设得到的新数列为$b_i$,求$b_1 ...

  2. python nose测试框架全面介绍六--框架函数别名

    之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.pa ...

  3. Android Meterial Design Support Library

    extends:http://inthecheesefactory.com/blog/android-design-support-library-codelab At the moment I be ...

  4. C++类继承示例

    C++的子类与孙子类都实现了虚函数时,孙子类的实现会覆盖掉子类的实现. 继承的最主要的应用就是把不同的类放到一个数组中,然后遍历调用同名函数. 实例如下: #include <iostream& ...

  5. springMVC 几种页面跳转方式

    今天主要写一下响应界面跳转的几种方式 1.在注解的方式中 1.1通过HttpServletResponse的API直接输出(不需要配置渲染器) controller类的主要代码 @Controller ...

  6. block 的细节和本质

    案例1: 普通的局部变量,block内部只会引用它初始的值(block定义那一刻),不能跟踪它的改变 输出:1 案例2: block内部能够一直引用被__block修饰的变量 输出:2 案例3: bl ...

  7. 算法学习之冒泡排序的C实现

    冒泡排序是属于比较类的排序方式,简单易懂,但是效率不是很高,不及快排. #include "stdio.h" #include "time.h" void bu ...

  8. Centos6.5 虚拟机Mongodb创建副本集

    简单副本集的搭建 官方demo的最小化的副本集为Three Member Sets,一个primary和两个secondary.我们先就搭建一个这样的测试环境. 首先建立三个数据目录和日志目录: cd ...

  9. ubuntu14.04下编译支持opengl的opencv

    在学习基于opencv的AR时,编译程序遇到报错,发现opencv不支持opengl.网上原因得知,在编译opencv时,opencv2.4以后的版本中默认ENABLE_OPENGL = NO,只需要 ...

  10. 浏览器指纹 - HTTP cookie 浏览器指纹 欺诈检测 浏览器id hash 浏览器插件信息 canvas 字体信息

    详解浏览器cookie和浏览隐私之间的关系http://www.iefans.net/cookie-yinsi-guanxi/ 详解浏览器cookie和浏览隐私之间的关系 浏览器相关 互联网 2013 ...