源地址:http://www.linuxmr.com/2012/nginx_keepalived_0629/207.html
nginx+keepalived配置高可用性负载均衡--nginx+keepalived配置双主高可用负载均衡
一、nginx双主高可用试验环境
1、操作系统redhat X86-64
2、使用的软件nginx-1.2.1,keepalived-1.2.1
3、两台主机,一台ip是192.168.1.2,另一台ip是192.168.1.3
4、虚拟ip是192.168.1.4,192.168.1.5
二、nginx双主高可用目的
nginx单主高可用,虽然实现了高可用,但是总是有一台机器是空闲的,为了合理使用资源,做成nginx双主高可用是很有必要的
三、安装nginx
这个nginx配置安装相当简单,不做说明
安装完成之后开启nginx
用命令ps -C nginx --no-heading,有类似下面的输出,即表示nginx正常启动
四、安装keepalived
参考http://www.linuxmr.com/2012/nginx_keepalived_0628/203.html,获得keepalived安装方法。
这里主要用到keepalived的故障切换功能。
五、nginx双主高可用具体配置
具体细节参考keepalived配置文件详解
这里直接上实现nginx单主高可用的配置文件内容
主机192.168.1.2上的keepalived的配置是
global_defs { #全局定义
notification_email { #定义报警邮件相关,这些可以忽略
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.1.3 #smtp服务器地址
smtp_connect_timeout 30
router_id LVS_DEVEL #标示虚拟路由的id
}
vrrp_script check_nginx_alive { #定义实例使用的检测脚本
scritp /root/check_nginx.sh #定义检测脚本路径
interval 2 #定义检测时间间隔
}
vrrp_instance VI_1 { #定义实例
state MASTER #该主机初始状态
interface eth0 #使用的网卡
virtual_router_id 51 #虚拟路由,互为高可用的主机之间的虚拟路由必须相同
priority 100 #优先级,这个是MASTER,应该比SLAVE的高
advert_int 1 #VRRP发送advertisment数据包的间隔时间
authentication { #互为高可用的主机之间通信的认证信息
auth_type PASS #类型是明文密码,官方推荐使用明文密码
auth_pass 1111 #明文密码内容,互为高可用的主机之间的密码也应该相同
}
track_script { #该实例使用的检测脚本
check_nginx_alive #该脚本在keepalived中定义的名称
}
virtual_ipaddress { #绑定的虚拟ip地址
192.168.1.4
}
}
vrrp_instance VI_2 { #再为该主机定义一个实例
state SLAVE #该主机初始状态
interface eth0 #使用的网卡
virtual_router_id 52 #虚拟路由,同一台主机之间不同实例路由必须不一样
priority 95 #优先级,这个是SLAVE,应该比MASTER的低
advert_int 1 #VRRP发送advertisment数据包的间隔时间
authentication { #互为高可用的主机之间通信的认证信息
auth_type PASS #类型是明文密码,官方推荐使用明文密码
auth_pass 1111 #明文密码内容,互为高可用的主机之间的密码也应该相同
}
virtual_ipaddress { #绑定的虚拟ip地址
192.168.1.5
}
}
主机192.168.1.3上的keepalived的配置是
global_defs { #全局定义
notification_email { #定义报警邮件相关,这些可以忽略
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.1.3 #smtp服务器地址
smtp_connect_timeout 30
router_id LVS_DEVEL #标示虚拟路由的id
}
vrrp_script check_nginx_alive { #定义实例使用的检测脚本
scritp /root/check_nginx.sh #定义检测脚本路径
interval 2 #定义检测时间间隔
}
vrrp_instance VI_1 { #定义实例
state SLAVE #该主机初始状态
interface eth0 #使用的网卡
virtual_router_id 51 #虚拟路由,互为高可用的主机之间的虚拟路由必须相同
priority 95 #优先级,这个是SLAVE,应该比MASTER的高
advert_int 1 #VRRP发送advertisment数据包的间隔时间
authentication { #互为高可用的主机之间通信的认证信息
auth_type PASS #类型是明文密码,官方推荐使用明文密码
auth_pass 1111 #明文密码内容,互为高可用的主机之间的密码也应该相同
}
virtual_ipaddress { #绑定的虚拟ip地址
192.168.1.4
}
}
vrrp_instance VI_2 { #为主机192.168.1.3定义另一个实例,对应192.168.1.2中的那个实例
state MASTER #该主机初始状态
interface eth0 #使用的网卡
virtual_router_id 52 #虚拟路由,同一主机不同实例之间的虚拟路由必须不同,这里对应192.168.1.2里面的配置
priority 100 #优先级,这个是MASTER,应该比SLAVE的高
advert_int 1 #VRRP发送advertisment数据包的间隔时间
authentication { #互为高可用的主机之间通信的认证信息
auth_type PASS #类型是明文密码,官方推荐使用明文密码
auth_pass 1111 #明文密码内容,互为高可用的主机之间的密码也应该相同
}
track_script { #该实例使用的检测脚本
check_nginx_alive #该脚本在keepalived中定义的名称
}
virtual_ipaddress { #绑定的虚拟ip地址
192.168.1.5
}
}
/root/check_nginx.sh的内容是:
nginx_state=`ps -C nginx --no-heading | wc -l`
if [ ${nginx_state} == 0 ];then
#/usr/local/nginx/sbin/nginx
#sleep 3
#nginx_state=`ps -C nginx --no-heading | wc -l`
[ ${nginx_state} == 0 ] && service keepalived stop
fi
注释掉的那段代码,是为了防止nginx意外停止而家的设置,用处是,当检测到nginx停止时,尝试重新启动nginx,如果重新启动nginx失败, 则停止keepalived,让主机192.168.1.4自动切换到MASTER状态,从而实现高可用。这里注释掉是为了测试方便。
现在重启两台机器上的keepalived,
在192.168.1.2上运行代码
shell> ip a | grep eth0 -A5
输出的结果类似
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
link/ether 00:ea:01:16:87:a1 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.4/32 scope global eth0
inet6 fe80::2ea:1ff:fe16:87a1/64 scope link
在192.168.1.3上运行代码
shell> ip a | grep eth0 -A5
输出的结果类似
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
link/ether 00:ea:01:16:87:a1 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.5/32 scope global eth0
inet6 fe80::2ea:1ff:fe16:87a1/64 scope link
看,虚拟ip192.168.1.4、192.168.1.5已经分别绑定在192.168.1.2与192.168.1.3的网卡eth0上。
在命令行输入命令
shell> curl -s http://192.168.1.4/ --ignore-content-length
shell> curl -s http://192.168.1.5/ --ignore-content-length
如果是nginx网页文件没有改变,则两次输出内容都类似下面:
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>
这说明已经可以通过虚拟IP来访问网站了,那到底能不能实现nginx双主高可用呢?
测试如下:
停掉192.168.1.2上的nginx,到192.168.1.3上运行命令:
shell>ip a | grep eth0 -A5
输出的结果类似
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
link/ether 00:16:3e:31:cd:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.3/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.4/32 scope global eth0
inet 192.168.1.5/32 scope global eth0
inet6 fe80::2ea:1ff:fe16:87a1/64 scope link
现在两个虚拟ip已经绑定到192.168.1.3的网卡eth0上了,
在命令行输入命令
shell> curl -s http://192.168.1.4/ --ignore-content-length
shell> curl -s http://192.168.1.5/ --ignore-content-length
如果是nginx网页文件没有改变,则输出内容也是类似下面:
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>
由此可见,nginx双主高可用配置成功
分享到:
相关推荐
利用LVS+Keepalived 实现高性能高可用负载均衡服务器
nginx+keepalived实现高可用负载均衡方案.pdf
nginx+keepalived实现高可用负载均衡方案.rar
centos6.4安装nginx+keepalived实现高可用负载均衡.doc
这里配置Keepalived + Nginx + Tomcat + Redis的架构,其中:keepalived用于管理Virtual IP,与nginx一起搭配实现高可用性的反向代理前端;后端使用Tomcat管理web服务,并利用Redis实现session共享。
Keepalived + Nginx 实现高可用 Web 负载均衡配置文件,具体详情参见博文:http://blog.csdn.net/l1028386804/article/details/72801492
通过LVS+Keepalived搭建高可用的负载均衡集群系统
nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。 为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都...
互联网环境最常用nginx负载均衡技术 企业级实战基于nginx1.6.2+keepalived-1.2.16最新稳定版讲解 原理与实践并重!国内运维架构大师老男孩讲解,...本课程讲解Nginx负载均衡的模块的使用与高可用软件keepalived的使用。
IP地址 用处192.168.5.55 MASTER192.168.2.73 BACKUP192.168.5.54 负载A192.168.5.57 负载B192.168.2.100 VIP 1、MASTER上安装haproxy 代码如下:wget ...
一、 LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一...使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩
一、 启动LVS高可用集群服务 首先,启动每个real server节点的服务: [root@localhost ~]# /etc/init.d/lvsrs start start LVS of REALServer 然后,分别在主备Director Server启动Keepalived服务: [root@DR1 ~]#/...
HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当 前,HAProxy支持两种主要的代理模式:”tcp”也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和...
高可用负载均衡器选用方案 VIP+NGINX node ip node1 10.0.0.11 node2 10.0.0.12 node3 10.0.0.13 VIP 10.0.0.10 在虚拟机上很容易操作,详情参看在京奋斗者的 nginx和keepalived实现nginx高可用 但是...
由于在生产环境使用了mysqlcluster,需要实现高可用负载均衡,这里提供了keepalived+haproxy来实现. keepalived主要功能是实现真实机器的故障隔离及负载均衡器间的失败切换.可在第3,4,5层交换.它通过VRRPv2(Virtual ...
2、keepalived高可用,包括:keepalived安装手册.docx、Keepalived权威指南中文.pdf、nginx负载均衡高可用.doc、keepalived安装包 3、lvs+nginx负载均衡-1.0.docx 4、nginx-subinglun-1.1.docx 5、nginx安装和使用...
采用nginx(当然也可以用lvs,前提是使用了redis,如果没用redis必须用nginx的iphash做负载均衡)做负载均衡。keepalived做高可用nginx负载均衡,两台nginx负载均衡可以处理静态页面,同时通过VIP进行热备。后端...
后端web服务器使用Nginx+Php作为站点,通过HAproxy做负载均衡,Keepalived做高可用说明:关闭防火墙、selinux、时间同步等host绑定参考地址1)Master上软件安装2)Minion上软件安装并配置说明:该案例在prod环境下...