linux下nginx结合keepalived实现主从切换的配置

 

解决方法:

实现一个主nginx宕机,请求转到另一个nginx中。

1.确保两台nginx已启动,假如端口分别是192.168.0.2:8080和192.168.0.3:8080

2.分别在两台nginx所在的主机192.168.0.2和192.168.0.3中安装keepalived,安装keepalived请参考:http://www.yayihouse.com/yayishuwu/chapter/1649

3.分别再两个主机的/etc/keepalived/下新建一个check_nginx_pid.sh文件,内容如下:

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ];then

/usr/local/nginx/nginx/sbin/nginx                #如果检测到nginx挂掉了就重启nginx

if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移

killall keepalived

fi

fi

4.分别修改两个keepalived的配置文件/etc/keepalived/keepalived.conf

假如把192.168.0.2:8080的nginx的keepalived设置为主,把192.168.0.3:8080的nginx的keepalived设置为备用

主keepalived.conf:

global_defs {

notification_email {

997914490@qq.com

}

notification_email_from sns-lvs@gmail.com

smtp_server smtp.hysec.com

smtp_connection_timeout 30

router_id nginx_master        # 设置nginx master的id,在一个网络应该是唯一的

}

vrrp_script chk_http_port {

script "/etc/keepalived/check_nginx_pid.sh"    #最后手动执行下此脚本,以确保此脚本能够正常执行

interval 2                          #(检测脚本执行的间隔,单位是秒)

weight 2

}

vrrp_instance VI_1 {

state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备

interface eth0            # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)

virtual_router_id 66        # 虚拟路由编号,主从要一直

priority 100            # 优先级,数值越大,获取处理请求的优先级越高

advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

chk_http_port            #(调用检测脚本)

}

virtual_ipaddress {

192.168.0.200            # 定义虚拟ip(VIP),可多设,每行一个

}

}

从keepalived.conf:

global_defs {

notification_email {

997914490@qq.com

}

notification_email_from sns-lvs@gmail.com

smtp_server smtp.hysec.com

smtp_connection_timeout 30

router_id nginx_backup              # 设置nginx backup的id,在一个网络应该是唯一的

}

vrrp_script chk_http_port {

script "/etc/keepalived/check_nginx_pid.sh"

interval 2                          #(检测脚本执行的间隔)

weight 2

fall 3

}

vrrp_instance VI_1 {

state BACKUP                        # 指定keepalived的角色,MASTER为主,BACKUP为备

interface eth0                      # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)

virtual_router_id 66                # 虚拟路由编号,主从要一直

priority 99                         # 优先级,数值越大,获取处理请求的优先级越高

advert_int 1                        # 检查间隔,默认为1s(vrrp组播周期秒数)

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

chk_http_port                   #(调用检测脚本)

}

virtual_ipaddress {

192.168.0.200                   # 定义虚拟ip(VIP),可多设,每行一个

}

}

5.启动两个keepalived,执行service keepalived start启动

6.使用192.168.0.200:8080访问即可,如果正常访问,说明配置正常;

如果此时杀掉主nginx,而且主nginx又重启了(check_nginx_pid.sh配置了重启),说明执行了check_nginx_pid.sh文件,这是正常的;

如果主nginx重启失败,而且192.168.0.200:8080访问失败,说明没转发到备用nginx,检查一下check_nginx_pid.sh是否被正常执行了,不被执行的原因一般来说是权限不够,到/etc/keepalived/目录执行 chmod u+x *即可。

linux下nginx结合keepalived实现主从切换的配置的更多相关文章

  1. Linux下Nginx+Tomcat负载均衡和动静分离配置要点

    本文使用的Linux发行版:CentOS6.7 下载地址:https://wiki.centos.org/Download 一.安装Nginx 下载源:wget http://nginx.org/pa ...

  2. VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三)

    首先启动Nginx 1. 相关浏览 两个 Tomcat 配置:  VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二) Nginx 安装配置启动: VMware Linu ...

  3. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  4. VMware Linux 下 Nginx

    负载   VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三) Weiseditor 2014-11-26 23:42 阅读:1 评论 ...

  5. VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二)

    准备工作 相关浏览: VMware Linux 下 Nginx 安装配置 (一) 1. 选在 /usr/local/ 下创建 softs 文件夹,通过 ftp 命令 把 apache-tomcat-7 ...

  6. Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # y ...

  7. linux下nginx+php+mysql 自助环境搭建

    ++++++++++++++++++++++++++++++++++++++++++++++linux下nginx+php+mysql环境搭建+++++++++++++++++++++++++++++ ...

  8. hadoop搭建杂记:Linux下JDK环境变量的设置(三种配置环境变量的方法)

    Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种 ...

  9. linux下svn(subversion)服务端添加工程及配置权限

    linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...

随机推荐

  1. 科大讯飞语音识别Demo创建

    1.下载官方SDK https://www.xfyun.cn/sdk/dispatcher 2.打开AS,选择import project 3.导入mscV5PlusDemo  4.解决ERROR: ...

  2. G1垃圾收集器原理剖析【官方解读】

    继续基于上一次https://www.cnblogs.com/webor2006/p/11135005.html的官方G1文档进行解读,上一次分析到了这: 话不多说,继续往前读: When perfo ...

  3. JDK源码那些事儿之ArrayBlockingQueue

    线程在JDK中是非常重要的一块内容,所有的应用服务都离不开线程的相关操作,对于大量线程的使用都是推荐使用线程池来进行操作和管理,JDK本身提供的线程池在服务中经常被使用到,以往经常使用Executor ...

  4. Android adb的一些用法

    adb查看包名/Activity名 adb shell "logcat | grep START" adb shell dumpsys activity | find “mFocu ...

  5. Jmeter与搜狗输入法、百度输入法不兼容问题解决方法

    问题:Jmeter 3.3.4.0等版本与最新版搜狗输入法.百度输入法不兼容,输入法悬浮窗口无法实时显示出来. 解决方法:换用微软拼音输入法即可. 微软拼音输入法: 官方下载链接: https://w ...

  6. Django --- 与数据库进行交互

    目录 1.静态文件配置 1.什么是静态文件 2.为什么用户在浏览器中输入的网址能够访问到响应的资源?有时候不能访问? 3.如果想要访问静态资源怎么做? 4.手动开设静态文件访问资源 5.关于两个sta ...

  7. 简述 CGI、FastCGI和php-FPM的区别

    1.CGI是联系webserver 跟php解析器的一个桥梁 2.FastCGI是CGI改良的版本 3.php-FPM 是FastCGI 的进程管理器

  8. 树状数组例题-数星星,简单题easy,校门外的树2,清点人数

    [例1]数星星 天空中有一些星星,这些星星都在不同的位置,每个星星都有个坐标,如果一个星星的左下方(包括正左和正下)有k颗星星,就说这颗星星是k级的. 比如,上图中,星星5是3级的(1,2,4在其左下 ...

  9. sql server set赋值和select 赋值的区别以及使用方法

    sqlserver存储过程中SELECT 与 SET 对变量赋值的区别   (备注:虽然变量赋值使用方法已经不是问题,但是,了解一下select和set赋值的区别,还是提高了不少认识.应该有很多人并不 ...

  10. jq导航

    做外部前端都会用到导航栏应用 一般导航应用会鼠标碰到变颜色  或子导航出现 下面为基本的导航 <div class="header"> <ul style=&qu ...