[笔记]使用Keepalived实现Nginx主从热备
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主从热备的更多相关文章
- nginx+keepalived简单双机主从热备
双机主从热备概述 可以两台机子互为热备,平时各自负责各自的服务.在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续 ...
- Keepalived+LVS+nginx双机热备
Keepalived简介 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生. Keepalived采 ...
- 如何使用keepalived实现nginx双机热备
1.linux安装方法:yum -y install keepalived 配置开机启动:sudo chkconfig keepalived on 查看keepalivede运行日志:/var/lo ...
- 《nginx 四》双机主从热备
lvs+keepalived+nginx实现高性能负载均衡集群 LVS作用 LVS是一个开源的软件,可以实现传输层四层负载均衡.LVS是Linux Virtual Server的缩写,意思是Linux ...
- LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡
前言 首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来:这里表示抱 ...
- 【Nginx】(主从热备)LVS+Keepalived+Nginx实现高性能负载均衡集群
一.LVS 1.1 概述 1.2 Nginx与LVS区别什么 二.Keepalived 2.1 概述 2.2 keepalived和其工作原理 三.LVS+Keepalived+Nginx 搭建双机主 ...
- 主从热备+负载均衡(LVS + keepalived)
前言 淘宝架构师李智慧大牛的书籍<大型网站技术架构>以及旭龙兄的博客 --->[大型网站技术实践]初级篇:借助LVS+Keepalived实现负载均衡. 从上参考而得来本文,本文旨 ...
- Lvs+keepalived+mysql主从热备
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...
- keepalived+nginx双机热备+负载均衡
Reference: http://blog.csdn.net/e421083458/article/details/30092795 keepalived+nginx双机热备+负载均衡 最近因业务扩 ...
随机推荐
- Python模块:paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实. 1.下载安装 Wi ...
- django之第二天
今天学习目标: 一,路由系统 1,默认处理函数 2,动态URL 3,分级匹配 4,反射实现动态路由 二.中间件 三.Model(重点) 1,创建表 2,操作表数据 四.Form (重点) 1,用户提交 ...
- Dynamics 365创建电子邮箱字段包含值的联系人同时更改负责人的方法。
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复267或者20171129可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...
- 作为函数的mixin
作为函数的mixin 在一个 mixin 内部定义的变量或 mixin,都调用者可见,因此,它们可以作为它的返回值.如,以下Less代码: .count(@x, @y) { @sum:(@x ...
- poj1611 解题报告
并查集学习过之后做了几道相关联系,这里贴出1611 The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: ...
- Code Kata:大整数比较大小&大整数四则运算---加减法 javascript实现
大整数的四则运算已经是老生常谈的问题了.很多的库也已经包含了各种各样的解决方案. 作为练习,我们从最简单的加减法开始. 加减法的核心思路是用倒序数组来模拟一个大数,然后将两个大数的利用竖式进行运算. ...
- Python测试开发之---list、str、dict、tuple小结
str的常用方法有: str.digits 0-9的表示str.uppercase 大写字母str.lowercase 小写字母str.letters 所有字母" ".join(s ...
- (高级篇)php结合redis实现高并发下的抢购、秒杀功能
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...
- 深入理解javascript函数进阶系列第三篇——函数节流和函数防抖
前面的话 javascript中的函数大多数情况下都是由用户主动调用触发的,除非是函数本身的实现不合理,否则一般不会遇到跟性能相关的问题.但在一些少数情况下,函数的触发不是由用户直接控制的.在这些场景 ...
- Java 代码学习之理解数据类型中的坑
package dailytest; import org.junit.Test; public class DataTypeTest { /** * 当有字符串第一次参与运算后,+成了连接符的作用 ...