HA(High Available), 高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。

1.1. 高可靠软件keepalived

keepalive是一款可以实现高可靠的软件,通常部署在2台服务器上,分为一主一备。Keepalived可以对本机上的进程进行检测,一旦Master检测出某个进程出现问题,将自己切换成Backup状态,然后通知另外一个节点切换成Master状态。

1.2. keepalived安装

下载keepalived官网:http://keepalived.org

将keepalived解压到/usr/local/src目录下

tar -zxvf  keepalived-1.2..tar.gz -C /usr/local/src

进入到/usr/local/src/keepalived-1.2.19目录

cd /usr/local/src/keepalived-1.2.

开始configure

./configure --prefix=/usr/local/keepalived

编译并安装

make && make install

1.3. 将keepalived添加到系统服务中

拷贝执行文件

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

将init.d文件拷贝到etc下,加入开机启动项

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

将keepalived文件拷贝到etc下

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

创建keepalived文件夹

mkdir -p /etc/keepalived

将keepalived配置文件拷贝到etc下

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

添加可执行权限

chmod +x /etc/init.d/keepalived

##以上所有命令一次性执行:

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir -p /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

chmod +x /etc/init.d/keepalived

chkconfig --add keepalived

chkconfig keepalived on

添加keepalived到开机启动

chkconfig --add keepalived

chkconfig keepalived on

1.4. 配置keepalived虚拟IP

修改配置文件: /etc/keepalived/keepalived.conf

MASTER节点

global_defs {

}

vrrp_instance VI_1 {

    state MASTER   #指定A节点为主节点 备用节点上设置为BACKUP即可

    interface eth0    #绑定虚拟IP的网络接口

    virtual_router_id    #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组

    priority    #主节点的优先级(-254之间),备用节点必须比主节点优先级低

    advert_int   #组播信息发送间隔,两个节点设置必须一样

    authentication {    #设置验证信息,两个节点必须一致

        auth_type PASS

        auth_pass 

    }

    virtual_ipaddress {    #指定虚拟IP, 两个节点设置必须一样

        192.168.33.60/    #如果两个nginx的ip分别是192.168.33.,,...,则此处的虚拟ip跟它俩同一个网段即可

    }

}

BACKUP节点 

global_defs {

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 

    priority 

    advert_int 

    authentication {

        auth_type PASS

        auth_pass 

    }

    virtual_ipaddress {

        192.168.33.60/

    }

}

#分别启动两台机器上的keepalived

service keepalived start

测试:

杀掉master上的keepalived进程,你会发现,在slave机器上的eth0网卡多了一个ip地址

查看ip地址的命令:  ip addr

1.5. 配置keepalived心跳检查

原理:

Keepalived并不跟nginx耦合,它俩完全不是一家人

但是keepalived提供一个机制:让用户自定义一个shell脚本去检测用户自己的程序,返回状态给keepalived就可以了

MASTER节点

global_defs {

}

vrrp_script chk_health {

    script "[[ `ps -ef | grep nginx | grep -v grep | wc -l` -ge 2 ]] && exit 0 || exit 1"

    interval     #每隔1秒执行上述的脚本,去检查用户的程序ngnix

    weight -

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 

    priority 

    advert_int 

    authentication {

        auth_type PASS

        auth_pass 

    }

    track_script {

        chk_health

    }

    virtual_ipaddress {

        10.0.0.10/

    }

    notify_master "/usr/local/keepalived/sbin/notify.sh master"

    notify_backup "/usr/local/keepalived/sbin/notify.sh backup"

    notify_fault "/usr/local/keepalived/sbin/notify.sh fault"

}

#添加切换通知脚本

vi /usr/local/keepalived/sbin/notify.sh

#!/bin/bash

case "$1" in

    master)

        /usr/local/nginx/sbin/nginx

        exit 

    ;;

backup)

        /usr/local/nginx/sbin/nginx -s stop

        /usr/local/nginx/sbin/nginx

        exit 

    ;;

    fault)

        /usr/local/nginx/sbin/nginx -s stop

        exit 

    ;;

    *)

        echo 'Usage: notify.sh {master|backup|fault}'

        exit 

    ;;

esac

#添加执行权限

chmod +x /usr/local/keepalived/sbin/notify.sh

global_defs {

}

vrrp_script chk_health {

    script "[[ `ps -ef | grep nginx | grep -v grep | wc -l` -ge 2 ]] && exit 0 || exit 1"

    interval 

    weight -

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 

    priority 

    advert_int 

    authentication {

        auth_type PASS

        auth_pass 

    }

    track_script {

        chk_health

    }

    virtual_ipaddress {

        10.0.0.10/

    }

    notify_master "/usr/local/keepalived/sbin/notify.sh master"

    notify_backup "/usr/local/keepalived/sbin/notify.sh backup"

    notify_fault "/usr/local/keepalived/sbin/notify.sh fault"

}

#在第二台机器上添加notify.sh脚本

#分别在两台机器上启动keepalived

service keepalived start

chkconfig keepalived on

[笔记]使用Keepalived实现Nginx主从热备的更多相关文章

  1. nginx+keepalived简单双机主从热备

    双机主从热备概述 可以两台机子互为热备,平时各自负责各自的服务.在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续 ...

  2. Keepalived+LVS+nginx双机热备

    Keepalived简介 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生. Keepalived采 ...

  3. 如何使用keepalived实现nginx双机热备

    1.linux安装方法:yum -y install keepalived 配置开机启动:sudo chkconfig  keepalived on 查看keepalivede运行日志:/var/lo ...

  4. 《nginx 四》双机主从热备

    lvs+keepalived+nginx实现高性能负载均衡集群 LVS作用 LVS是一个开源的软件,可以实现传输层四层负载均衡.LVS是Linux Virtual Server的缩写,意思是Linux ...

  5. LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡

    前言 首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来:这里表示抱 ...

  6. 【Nginx】(主从热备)LVS+Keepalived+Nginx实现高性能负载均衡集群

    一.LVS 1.1 概述 1.2 Nginx与LVS区别什么 二.Keepalived 2.1 概述 2.2 keepalived和其工作原理 三.LVS+Keepalived+Nginx 搭建双机主 ...

  7. 主从热备+负载均衡(LVS + keepalived)

    前言 淘宝架构师李智慧大牛的书籍<大型网站技术架构>以及旭龙兄的博客  --->[大型网站技术实践]初级篇:借助LVS+Keepalived实现负载均衡. 从上参考而得来本文,本文旨 ...

  8. Lvs+keepalived+mysql主从热备

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  9. keepalived+nginx双机热备+负载均衡

    Reference: http://blog.csdn.net/e421083458/article/details/30092795 keepalived+nginx双机热备+负载均衡 最近因业务扩 ...

随机推荐

  1. Snow and Rainbow

    缘分,让我们走到了一起.让这个美好的时刻美好的回忆记录在这里吧.

  2. 数据库中File权限的危害

    The FILE privilege gives you permission to read and write files on the server host using the LOAD DA ...

  3. javascript第六章--BOM

    ① window对象 ② location对象 ③ navigator对象 ④ screen对象 ⑤ history对象

  4. python 按每行读取文件怎么去掉换行符

    python按每行读取文件后,会在每行末尾带上换行符,这样非常不方便后续业务处理逻辑,需要去掉每行的换行符,怎么去掉呢?看下面的案例: >>> a = "hello wor ...

  5. [动态规划]P1378 油滴扩展

    题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...

  6. JS获取URL参数的值

    function getQueryValue (key) { const reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', ' ...

  7. sklearn 划分数据集。

    1.sklearn.model_selection.train_test_split随机划分训练集和测试集 函数原型: X_train,X_test, y_train, y_test =cross_v ...

  8. Vue使用Echarts以及Echarts配置分享

    一.本篇文章将给大家分享如何在vue中使用echart以及echart各项配置,这些配置都是工作中比较常见以及常用到的,所以给大家分享下,希望对大家有用. 二.vue中使用echart. 1.首先下载 ...

  9. hotspot虚拟机的调试

    3这篇文章,怎么说呢.是踩了很多坑得出来了,也是在自己快要崩溃的时候得出来了的. 连续踩了差不多10来个小时的坑,还好是出来了. 这篇文章是调试虚拟机的,其实网上也能找到一些文章,但是每个人的环境不一 ...

  10. python网络编程之单线程之间的并发

    单线程之间的并发就是利用一个线程实现并发的效果,也就是利用了cup遇到阻塞的那段时间去做别的事情,从而提高了cup的利用率,使之在单个线程中就实现了并发的效果. 下面就是一个简单的服务端单个线程实现并 ...