nginx+keepalived实现双机热备
2016-07-16 08:54
766 查看
nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worker)进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。
Keepalived是Linux下面实现VRRP备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。二者结合,可以构架出比较稳定的软件lb方案。
准备4台虚拟机来做这个实验:
192.168.223.111 node1 web服务器
192.168.223.112 node2 web服务器
192.168.223.13 node13 keepalived nginx (主)
192.168.223.14 node14 keepalived nginx (从)
虚拟IP(VIP):192.168.223.200
Node1 node2 上已配置好tomcat 、启动tomcat
在node1,node2上面设置VIP:ifconfig lo:1 192.168.223.200 netmask 255.255.255.255 broadcast192.168.223.100
如下图是node2上的VIP配置情况
在node13、node14上安装nginx或Tengine,此处安装的是Tengine,并配置好反向代理(即负载均衡)
Yum安装keepalived:yum –y installkeepalived
修改配置文件
vi /etc/keepalived/keepalived.conf
(红色的为修改)
! Configuration File for keepalived
global_defs {
notification_email {
root@location
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port{
script"/opt/keepalived/nginx.sh" #脚本
interval 1
weight -2
}
vrrp_instance VI_1 {
state MASTER #BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.223.200 #虚拟IP(VIP)
}
track_script {
chk_http_port
}
}
Node14 上的keepalived 的配置文件修改和node13基本一致,只需改变state为BACKUP 、priority的值小于100
上图中的nginx.sh 脚本如下:
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #nginx命令的路径
sleep 3
if[ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
需要在/opt 下新建keepalived文件夹并写入脚本
mkdir –p /opt/keepalived
vim /opt/keepalived/nginx.sh
chmod +x /opt/keepalived/nginx.sh
分别在node13、node14上设置虚拟IP(VIP):ifconfig eth0:1 192.168.223.200/24
启动node13、node14上的nginx、keepalived
/usr/local/nginx/sbin/nginx -s start
service keepalived start
访问192.168.223.200,成功访问到node1和node2上的tomcat
停掉node13上的nginx服务:/usr/local/nginx/sbin/nginx -s stop
访问192.168.223.200,成功访问到node1和node2上的tomcat 此时node14成功接管node13成为master
再次启动192.168.223.13(node13)的nginx进程,192.168.223.13会自动接管成为master,192.168.223.14(node14)自动转为backup,从测试结果看,备机能成功接管,已经实现了热备
Keepalived是Linux下面实现VRRP备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。二者结合,可以构架出比较稳定的软件lb方案。
准备4台虚拟机来做这个实验:
192.168.223.111 node1 web服务器
192.168.223.112 node2 web服务器
192.168.223.13 node13 keepalived nginx (主)
192.168.223.14 node14 keepalived nginx (从)
虚拟IP(VIP):192.168.223.200
Node1 node2 上已配置好tomcat 、启动tomcat
在node1,node2上面设置VIP:ifconfig lo:1 192.168.223.200 netmask 255.255.255.255 broadcast192.168.223.100
如下图是node2上的VIP配置情况
在node13、node14上安装nginx或Tengine,此处安装的是Tengine,并配置好反向代理(即负载均衡)
Yum安装keepalived:yum –y installkeepalived
修改配置文件
vi /etc/keepalived/keepalived.conf
(红色的为修改)
! Configuration File for keepalived
global_defs {
notification_email {
root@location
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port{
script"/opt/keepalived/nginx.sh" #脚本
interval 1
weight -2
}
vrrp_instance VI_1 {
state MASTER #BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.223.200 #虚拟IP(VIP)
}
track_script {
chk_http_port
}
}
Node14 上的keepalived 的配置文件修改和node13基本一致,只需改变state为BACKUP 、priority的值小于100
上图中的nginx.sh 脚本如下:
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #nginx命令的路径
sleep 3
if[ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
需要在/opt 下新建keepalived文件夹并写入脚本
mkdir –p /opt/keepalived
vim /opt/keepalived/nginx.sh
chmod +x /opt/keepalived/nginx.sh
分别在node13、node14上设置虚拟IP(VIP):ifconfig eth0:1 192.168.223.200/24
启动node13、node14上的nginx、keepalived
/usr/local/nginx/sbin/nginx -s start
service keepalived start
访问192.168.223.200,成功访问到node1和node2上的tomcat
停掉node13上的nginx服务:/usr/local/nginx/sbin/nginx -s stop
访问192.168.223.200,成功访问到node1和node2上的tomcat 此时node14成功接管node13成为master
再次启动192.168.223.13(node13)的nginx进程,192.168.223.13会自动接管成为master,192.168.223.14(node14)自动转为backup,从测试结果看,备机能成功接管,已经实现了热备
相关文章推荐
- Nginx 编译参数详解/大全
- CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28
- nginx错误日志级别
- Nginx - Windows下Nginx初入门
- 一个nginx 对多个fastcgi
- nginx 配置虚拟目录并支持php
- nginx打开目录浏览功能
- Nginx系列(一)--nginx是什么?
- Mac搭建nginx+rtmp服务器
- 在centos7上配置nginx遇到的坑,不要入坑!
- nginx负载均衡
- ThinkPHP3.2.3 Nginx pathinfo & URL重写
- mac安装nginx mysql php
- Nginx 日志
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解
- Nginx之Keepalived高可用
- nginx日志之错误日志及访问日志及日志分割
- Nginx负载均衡配置实例详解
- CentOS 7 install Nginx
- 透过nginx实现内网hadoop、hbase集群对外访问web界面