Nginx (三) 使用Keepalived搭建高可用服务
Nginx可以实现高并发反向代理,实现负载均衡,但是有个问题就是Nginx是单点的。如果Nginx故障,则整个服务将会处于不可用状态。所以我们就需要想办法让nginx高可用,即使一个Nginx宕机,还可以有其他的Nginx来支持服务。现在我们通过Keepalived的就可以实现多台Nginx作为主备机,当主机宕机时,可以让备机切换成主机继续提供服务,对整个用户服务几乎没有影响。
1. Keepalived介绍
Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。
2. keepalived 安装(同Nginx安装类似)
a. 下载安装包:
http://www.keepalived.org/download.html
b. 解压 keepalived-1.2.18.tar.gz(我下载到Windows下,使用ftp上传到linux虚拟机上,可以直接在linux上使用wget url 进行下载),解压到/usr/local目录下
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
c. 安装依赖包
yum -y install openssl,openssl-devel
d. 检查环境,设置安装目录
cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived

如上说明环境检查通过。
e. 安装: make && make install

3. 将安装的keepalived配置成服务,并且开机启动:
a. 因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作,首先创建文件夹,将keepalived配置文件进行复制:
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
b. 然后复制keepalived脚本文件:
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
c. 可以设置开机启动:
chkconfig keepalived on;
到此我们安装完毕,开机则keepalived就已经启动!
4. 配置主备机keepalived配置文件:keepalived.conf

a. master配置文件如下:
! Configuration File for keepalived
global_defs {
router_id aries114 ##真实主机名或者ip
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ##要执行的检查脚本
interval 2 ##keepalived多久执行一次
weight -20 ##权重-20
}
vrrp_instance VI_1 {
state MASTER ##主备机配置
interface eth0 ##默认使用网卡
virtual_router_id 88 ##虚拟id号,主备机配置一致
mcast_src_ip 192.168.137.114 ##真实主机ip
Nopreempt ##非抢占式
priority 100 ##权重优先级
advert_int 1 ##组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication {
auth_type PASS
auth_pass 1111 ##验证密码,主备机一致
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.137.110 ##虚拟ip(vip)可以配置多个
}
}
b. backup配置文件:
! Configuration File for keepalived
global_defs {
router_id aries111
}
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.137.111
priority 90
advert_int
authentication {
auth_type PASS
auth_pass
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.137.110
}
}
不同点已用红色标出:
router_id 主机名或者ip
mcast_src_ip 真实主机ip
state 表示主备机master表示主BACKUP表示备,两个也可以都设置成backup,则两个抢占主机服务,一个宕机另一个就做为主机。
virtual_ipaddress 虚拟出来的主机ip , 可配置多个;
script "/etc/keepalived/nginx_check.sh" 这个是keepalived要执行的检查Nginx服务是否正常的脚本,需要我们去编写。
c. 编写检查脚本,命名nginx_check.sh,然后置于"/etc/keepalived/"目录下
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq ]; then
/usr/local/nginx/sbin/nginx
sleep
if [ `ps -C nginx --no-header |wc -l` -eq ];then
killall keepalived
fi
fi
以上脚本的作用是,检查是否有nginx服务进程,如果有则执行结束不做处理;如果没有,则启动Nginx服务,间隔两秒钟再去检查是否有Nginx服务,如果没有就杀死此keepalived进程,如果有
则不做处理。
到此就通过keepalived配置完了Nginx的高可用服务。
使用 ip a 查看主节点则有一个虚拟IP:

客户机访问: 192.168.137.110 此时 192.168.137.114 提供服务;如果让192.168.137.114宕机,则vip则会浮动到备机 192.168.137.111上,有192.168.137.111提供服务。
如下是一个访问模型图:

参考材料:
http://blog.csdn.net/hechurui/article/details/51065467
白鹤翔老师的Nginx教学视频。
Nginx (三) 使用Keepalived搭建高可用服务的更多相关文章
- keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群
keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群 内网路由都用mac地址 一个mac地址绑定多个ip一个网卡只能一个mac地址,而且mac地址无法改,但 ...
- 通过LVS+Keepalived搭建高可用的负载均衡集群系统
1. 安装LVS软件 (1)安装前准备操作系统:统一采用Centos6.5版本,地址规划如下: 服务器名 IP地址 网关 虚拟设备名 虚拟ip Director Server 192.168 ...
- 搭建高可用服务注册中心-Spring Cloud学习第一天(非原创)
文章大纲 一.Spring Cloud基础知识介绍二.创建单一的服务注册中心三.创建一个服务提供者四.搭建高可用服务注册中心五.项目源码与参考资料下载六.参考文章 一.Spring Cloud基础 ...
- Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群
一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...
- 使用Spring Cloud搭建高可用服务注册中心
我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客[使用Spring Cloud搭建服务注册中心]中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭 ...
- 使用SpringCloud搭建高可用服务注册中心
我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭建好的服务注册中心是一个单节点的服务注册中心,这 ...
- Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)
说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...
- spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心
在上一篇中分享了如何使用Eureka 进行服务治理,里面搭建的服务注册中心是单体的, 但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样 ...
- LVS+Keepalived搭建高可用负载均衡
应用环境: LVS负责多台WEB端的负载均衡(LB):Keepalived负责LVS的高可用(HA),这里介绍主备模型. 测试环境: 配置步骤: 1. 安装软件 在LVS-1和LVS-2两台主机上安装 ...
随机推荐
- 代理模式(Proxy)
代理模式(Proxy) 其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希 ...
- 用Redis轻松实现秒杀系统
秒杀系统的架构设计 秒杀系统,是典型的短时大量突发访问类问题.对这类问题,有三种优化性能的思路: 写入内存而不是写入硬盘 异步处理而不是同步处理 分布式处理 用上这三招,不论秒杀时负载多大,都能轻松应 ...
- XAMPP重要文件目录及配置
一.XAMPP 的安装过程 1:下载XAMPP 的 Linux 版 (1.7.4) http://www.apachefriends.org/en/xampp-linux.html#374 2:安装( ...
- Codeforces Gym 101521A Shuttle Bus
题意:给定一个2*N的方格,从左上角开始走,有些格子不能走,问能否一次遍历所有能走的方格 在Gym上看到一场香港的比赛,很好奇就去看了一下,发现第一题很有趣,并且很水,似乎讨论一下奇偶性就行了,然后. ...
- Linux 使用tcpdump观察arp通信过程
ARP协议简介: ARP协议能实现任意网络层地址到任意物理地址的转换,此次讨论从IP地址到以太网地址(MAC地址)的转换.其工作原理是:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络 ...
- JaveScript简单数据类型(JS知识点归纳二)
JS中的简单数据类型有五种 : --> string --> number -->boolean --> null -->undefined 数据类型的检测 :typeo ...
- NDK开发小记录 C++读取java层对象内容
这是自己NDK开发得小记录,关于C++层读取java层传来的对象内容. 很简单的一个例子, 1.首先在java层定义了一个类NumList: public class NumList { public ...
- Dynamic HTML权威指南(读书笔记)— 第一章 HTML与XHTML参考
1. 对齐常量(text-align和vertical-align) 1.1 盒外对齐 这种对齐属性决定环绕着元素外部矩形空间的文本对齐方式.W3C中,这类HTML元素包括:applet.iframe ...
- JavaWeb核心技术学习 - 1.从JDBC说起
作者:java1to3链接:http://www.cnblogs.com/java1to3/著作权归作者所有.未经作者本人同意,禁止一切转载.商业或非商业转载请联系作者获得授权并请注明出处. ・JDB ...
- HBase源代码分析之HRegion上MemStore的flsuh流程(一)
了解HBase架构的用户应该知道,HBase是一种基于LSM模型的分布式数据库.LSM的全称是Log-Structured Merge-Trees.即日志-结构化合并-树. 相比于Oracle普通索引 ...