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/ 一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最 ...
随机推荐
- ORACLE 多表查询优化收集整理
搞WEB的离不开数据库,在一个层面上,对数据库的熟练程度决定了很多的事情. 本文就大家都纠结的ORACLE多表查询的性能问题给出一系列个优化方法,那这些都是项目中长期用到的,所以很熟,很熟,已经成为习 ...
- MongoDB(课时29 MapReduce)
3.7.4 MapReduce MapReduce 是整个大数据的精髓所在(实际中别用,因为在MongoDB中属于最底层操作). MapReduce是一种计算模型,简单的说就是将大批量的工作分解执行, ...
- Beta冲刺三——《WAP团队》
β冲刺第三天 1. 今日完成任务情况以及遇到的问题. ①马麒.杜有海:管理员审核表的进一步完善 ②郝明宇:登录.注册界面的完善 ③马宏伟.周欣:继续完善前端数据借用与后台的连接 ④乌勒扎:登录与注册 ...
- react notes
jsx 在JSX中嵌入用户输入是安全的,默认情况下, 在渲染之前, React DOM 会格式化(escapes) JSX中的所有值. 从而保证用户无法注入任何应用之外的代码. 在被渲染之前,所有的数 ...
- AMD,CMD.CommonJs和UMD还有es6的模块化对比
CommonJS CommonJS是服务器端模块的规范,Node.js采用了这个规范. 根据CommonJS规范,一个单独的文件就是一个模块.加载模块使用require方法,该方法读取一个文件并执行, ...
- 移动开发基础和Dalvik VM
移动开发基础和Dalvik VM 1.基础 移动开发:是指以PDA.UMPC等便携终端为基础进行的开发工作. PDA:Person Digital Assistant 个人数码助理 UMPC:Ultr ...
- LeetCode--202--快乐数
问题描述: 编写一个算法来判断一个数是不是“快乐数”. 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变 ...
- Vue.js 渲染函数, JSX(未掌握,未学完)
渲染函数 , JSX(没完成学习) 基础: 实例属性:vm.$slots default 属性包括了所有没有被包含在具名插槽中的节点. 渲染函数: render: function(createEle ...
- 24.2 网络编程基础——System.Net 命名空间
使用C#进行网络编程时,通常要用到: System. Net 命名空间. System. Net. Sockets 命名空间. System. Net. Mail 命名空间. 24.2.1 Sy ...
- 使用POI导入EXCEL报java.lang.IncompatibleClassChangeError
使用POI导入xls格式的excel报java.lang.IncompatibleClassChangeError异常,而导入xlsx正常. oracle.apps.fnd.framework.OAE ...