`
lionlx
  • 浏览: 286223 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)nginx+keepalived配置双主高可用负载均衡

阅读更多
源地址: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双主高可用配置成功
分享到:
评论

相关推荐

    centos6.4安装nginx+keepalived实现高可用负载均衡.doc

    "CentOS 6.4 安装 Nginx + Keepalived 实现高可用负载均衡" 本文主要讲述如何在 CentOS 6.4 操作系统上安装 Nginx 和 Keepalived,以实现高可用负载均衡。高可用负载均衡是指在 Web 服务器前端部署多台 Nginx ...

    Nginx+keepalived双机热备(主从模式)

    Nginx+keepalived双机热备(主从模式) Nginx+keepalived双机热备(主从模式)是一种常见的负载均衡...Nginx+keepalived双机热备(主从模式)是一种高效和高可用的负载均衡技术,广泛应用于大型网站和高可用环境中。

    nginx+keepalived实现高可用负载均衡方案.rar

    实现“nginx+keepalived”的高可用负载均衡方案,主要涉及以下几个步骤: 1. **安装Nginx和Keepalived**:在所有服务器上安装Nginx和Keepalived软件。 2. **配置Nginx**:设置反向代理和负载均衡策略,以及SSL证书...

    nginx+keepalived+tomcat+redis文档

    ### Nginx+Keepalived+Tomcat+Redis 高可用与负载均衡架构解析 #### 架构概览 为了确保Web服务器的稳定运行及高效处理能力,采用Nginx+Keepalived+Tomcat+Redis的技术组合进行系统构建。这一架构通过多个组件的...

    nginx+keepalived实现高可用负载均衡方案.pdf

    本文介绍了如何利用Nginx和Keepalived搭建一个高可用的负载均衡系统。在此方案中,Nginx扮演Web服务器和负载均衡器的角色,而Keepalived则用于提供高可用性支持。以下是相关知识点的详细说明: 1. Nginx简介: ...

    Keepalived + Nginx 实现高可用 Web 负载均衡配置文件

    Keepalived + Nginx 实现高可用 Web 负载均衡配置文件,具体详情参见博文:http://blog.csdn.net/l1028386804/article/details/72801492

    通过LVS+Keepalived搭建高可用的负载均衡集群系统

    通过LVS+Keepalived搭建高可用的负载均衡集群系统

    nginx+lvs+keepalived安装文档

    通过上述步骤,我们可以成功地搭建基于 Nginx + LVS + Keepalived 的高可用负载均衡集群。这不仅能够显著提升服务的可靠性和性能,还能够轻松应对大规模并发请求。同时,通过合理的配置,可以实现服务的平滑切换和...

    keepalived + nginx组建高可用负载平衡Web server集群

    【构建高可用负载平衡Web服务器集群】:在IT领域,保持服务的稳定性和连续性至关重要。为此,我们可以采用`keepalived`与`nginx`相结合的方式,构建一个高可用的负载平衡Web服务器集群。`nginx`作为知名的反向代理和...

    Nginx Keepalived Tomcat MySQL高可用负载均衡Web应用架构实践.pdf

    本文主要讲述如何利用Nginx、Keepalived、Tomcat和MySQL搭建高可用负载均衡的Web应用架构。该架构可以保证Web应用的高可用性和负载均衡,从而确保金融领域的信息系统的稳定运行。 第一部分:环境与架构解析 本文...

    nginx+keepalived部署tomcat,mysql,redis集群部署

    在本部署方案中,我们构建了一个高可用的IT服务架构,包括了Nginx作为反向代理和负载均衡器、Keepalived实现Nginx的高可用、Tomcat作为Java应用服务器集群、MySQL作为关系型数据库,以及Redis作为缓存系统。...

    搭建MySQL高可用+负载均衡集群(haproxy+keepalived).docx

    负载均衡则可以分摊数据库服务器的压力,例如使用haproxy或者nginx。haproxy是一款高效的负载均衡器,它可以基于策略将请求分发到不同的MySQL服务器,提高并发处理能力。通过配置haproxy,可以根据服务器负载情况...

    haproxy+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 ...

Global site tag (gtag.js) - Google Analytics