nginx keepalive 高可用
https://blog.csdn.net/u012410733/article/details/57078407
在网络中机器不可避免的出现单点故障,当我们使用nginx进行反向代理的时候如果出现了nginx机器宕机,那么整个服务就会出现不可用的状态。那么我们针对这种情况我们该如何解决它呢?使用keepalive可以解决这个问题。那么什么是keepalived呢?
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
下面我们就来配置基于keepalived的nginx的高可用方案:
准备条件:
1.启动两台虚拟机.e.g.:
192.168.64.128
192.168.64.129
1
2
2.两台虚拟机上分别安装nginx,可参考 – Linux Nginx安装
3.修改nginx的html文件,(NGINX_HOME/html/index.html),来标识它属于哪台虚拟机。如下所示:
1) 192.168.64.128
2) 192.168.64.129
1、下载keepalive
去keepalived官网下载你所需要的版本,我所下载的为:keepalived-1.3.4.zip
2、上传到Linux
使用Linux中的rz/sz命令把zip包上传到
/carl/data/program
1
并创建keepalive,把源文件和安装文件区分开来。
/carl/data/program/keepalive
1
3、解压keepalived
unzip keepalived-1.3.4.zip
1
然后
cd keepalived-1.3.4
1
4、安装keepalived
4.1.配置keepalived安装目录
./configure --prefix=/carl/data/program/keepalived --sysconf=/etc
1
注意:
1:keepalive启动时候会默认读取/etc/keepalived/keepalived.conf
2:可能出现缺少依赖opensssl 。
yum install openssl-devel
1
4.2)编译keepalived
make && make install
1
4.3) keepalived创建快捷方式
ln -s /carl/data/program/keepalived/sbin/keepalived /sbin/ --建立软链接
cp //data/program/keepalived-1.3.4/keepalived/etc/init.d/keepalived /etc/init.d
1
2
4.4) 添加keepalived到系统服务
chkconfig –add keepalived -- 添加到系统服务
chkconfig keepalived on -- 检测是否添加成功
1
2
4.5) 启动keepalived
service keepalvied start|stop|restart
1
可能出现会出现提示权限不足:
chmod +x /etc/init.d/keepalived
1
4.6) 修改keepalive配置文件
以上步骤对于两台虚拟机都是一样的。这里修改配置文件就涉及到主从问题,在这里我们把192.168.64.128配置为主服务器,把192.168.64.129配置为从服务器。下面我们就先来配置192.168.64.128:
vi /etc/keepalived/keepalived.conf
1
以下是修改后的配置文件:
global_defs {
## 设置lvs的id,在一个网络内唯一
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
## 主机配置,从机为BACKUP
state MASTER
## 网卡名称
interface eno16777736
virtual_router_id 51
## 权重值,值越大,优先级越高,backup设置比master小,这样就能在master宕机后讲backup变为master,而master回复后就可以恢复.
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
## 同一网段虚拟IP
192.168.64.100
}
}
virtual_server 192.168.64.100 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.64.128 80 {
weight 1
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
下面我们来看一下从机192.168.64.129的配置:
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.64.100
}
}
virtual_server 192.168.64.100 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.64.129 80 {
weight 1
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
4.7) 重启keepalived
分别重启两台虚拟机的keepalived,当我们访问上面配置同一网段的虚拟IP地址:
192.168.64.100访问的就是主服务器:192.168.64.128
并且当我们关闭掉主机也就是192.168.64.128的keepalived时,就会访问从机的nginx服务:
5、配置keepalived的日志
5.1、修改/etc/sysconfig/keepalived
vi /etc/sysconfig/keepalived
1
修改为:
KEEPALIVED_OPTIONS="-D -d -S 0"
1
“-D” 就是输出日志的选项
这里的“-S 0”表示local0.* 具体的还需要看一下/etc/syslog.conf文件
5.2、修改/etc/rsyslog.conf
在/etc/rsyslog.conf中添加以下代码:
local0.* /var/log/keepalived.log
1
5.3、重新启动keepalived和rsyslog服务
service rsyslog restart
service keepalived restart
1
2
然后就可以查看keepalived的日志了:
tail -f /var/log/keepalived.log
1
再修改keepalived配置文件如果没有生效可以配置keepalived的日志来帮助你修改配置文件。
6、检测Nginx心跳
当我们配置了keepalived,当主keepalived的宕机了。会自动更改路由到backup的keepalived,但是如果nginx挂掉的话,keepalived就会找不到nginx服务这样还是会造成nginx服务不可用。那么我们就可以在keepalived中添加心跳script,用来检测nginx心跳,如果检测不到nginx服务,就关闭掉keepalived的进程。这样从机的keepalive服务就可以被调用。
下面就是检测nginx的心跳脚本:
/carl/data/program/nginx/sbin/check_nginx_alive.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ]
then
echo 'nginx server is died'
killall keepalived
fi
1
2
3
4
5
6
7
8
9
10
11
然后再在修改/etc/keepalived/keepalived.conf文件:
## 1.new add start
vrrp_script check_nginx_alive {
script "/carl/data/program/nginx/sbin/check_nginx_alive.sh"
interval 3
weight -10
}
## 1.new add end
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.64.100
}
## 2.new add start
track_script {
check_nginx_alive
}
## 2.new add end
}
virtual_server 192.168.64.100 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.64.128 80 {
weight 1
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
上面是主机192.168.64.128的配置,可以看到一共新添加了两个地方,主要是添加了一个shell脚本用于检测nginx是否存活,然后再在keepalived的配置文件中,添加这个这个检测心跳的文件。这个是主机的配置,那么从机也需要做相应的修改。那么不管是keepalived宕机还是nginx宕机都会切换到可以热备的机器中去,这样就达到了nginx的可高用。
---------------------
作者:carl-zhao
来源:CSDN
原文:https://blog.csdn.net/u012410733/article/details/57078407
版权声明:本文为博主原创文章,转载请附上博文链接!
nginx keepalive 高可用的更多相关文章
- 【Nginx】使用keepalive和nginx搭载高可用
首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现web服务端的高可用. Keepa ...
- [原创]lvs+ospf+nginx实现高可用大流量web架构
lvs+ospf+nginx实现高可用大流量web架构配置总概述 架构图: 配置如下: .quagga之zebra配置: # cat /etc/quagga/zebra.conf ! ! Zebra ...
- Nginx+keepalived 高可用双机热备(主从模式/双主模式)
基础介绍负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:li ...
- nginx+keepalived 高可用方案
nginx+keepalived 高可用方案 准备工作 192.168.157.11 192.168.157.12 安装nginx 跟新yum源文件 rpm -ivh http://nginx.org ...
- 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...
- 基于keepalived 实现VIP转移,lvs,nginx的高可用
转自:http://www.tuicool.com/articles/eu26Vz 一.Keepalived 高可用集群的解决方案 二.VRRP的有限状态机 三.利用keepalived 实现主从VI ...
- Keepalived+Nginx实现高可用Web负载均衡
1.安装编译 Nginx 所需的依赖包# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zli ...
- nginx+keepalived高可用web负载均衡
一:安装环境 准备2台虚拟机,都安装好环境 centos 7keepalived:vip: 192.168.1.112192.168.1.110 nginxip 192.168.1.109 maste ...
- [转]搭建Keepalived+Nginx+Tomcat高可用负载均衡架构
[原文]https://www.toutiao.com/i6591714650205716996/ 一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最 ...
随机推荐
- STL_算法_01_查找算法
1. 来自教程:第6讲 PPT.15 ◆ 常用的查找算法: 1.1.按条件查找N个相邻的元素 ( adjacent 是 邻近的意思) iterator = adjacent_find(iterator ...
- spring boot 开发 org.springframework.context.ApplicationContextException: Unable to start web server;
Error starting ApplicationContext. To display the conditions report re-run your application with 'de ...
- TimeZone 时区 (JS .NET JSON MYSQL) + work week 闰年
来源参考 : http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html 来源参考 : http://walkingice.blogs ...
- HDU-3729 二分匹配 匈牙利算法
题目大意:学生给出其成绩区间,但可能出现矛盾情况,找出合理组合使没有说谎的人尽可能多,并按maximum lexicographic规则输出组合. //用学生去和成绩匹配,成绩区间就是学生可以匹配的成 ...
- Spring Boot 文档
本节对 Spring Boot 的参考文档做了一个简单概述.本章节对全文的参考手册进行内容上的一些索引. 你可以参考本节,从头到尾依次阅读该文档,也可以跳过不感兴趣的内容. Spring Boot 参 ...
- Change-free CodeForces - 767E (贪心)
题目链接 大意:Arseny有m个1元硬币, 无限多100元钞票, 他要按顺序买n个东西, 第i天如果找零x个硬币, 他的不满值会加 w[i]*x, 求最少不满值. 若找零, 则硬币增加 100-ci ...
- zzuli1728(数学期望,组合数)
1728: 社交网络 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 232 Solved: 64 SubmitStatusWeb Board Desc ...
- 破解VS
- js 刷新页面
Javascript刷新页面的几种方法:1 history.go(0)2 window.location.reload() window.location.reload(true) 3 locatio ...
- Java容器——Map接口
1.定义 Map用于保存存在映射关系<key, value>的数据.其中key值不能重复(使用equals()方法比较),value值可以重复. 2.常用实现类 HashMap:和Hash ...