一.拓扑图:
二.拓扑图的规划:
三.此架构考虑的问题:
1)、Master没挂,则Master占有vip且nginx运行在Master上
2)、Master挂了,则Backup抢占vip且在Backup上运行nginx服务
3)、如果Master服务器上的nginx服务挂了,则vip资源转移到Backup服务器上
4)、检测后端服务器的健康状态
Master和Backup两边都开启nginx服务,无论Master还是Backup,当其中的一个keepalived服务停止后,vip都会漂移到keepalived服务还在的节点上。
如果要想使nginx服务挂了,vip也漂移到另一个节点,则必须用脚本或者在配置文件里面用shell命令来控制。
首先必须明确后端服务器(apache)的健康状态检测keepalived在这种架构上是无法检测的,后端服务器的健康状态检测是有nginx来判断的,但是nginx 的检测机制有一定的缺陷,后端服务器某一个宕机之后,nginx还是会分发请求给它,在一定的时间内后端服务响应不了,nginx则会发给另外一个服务 器,然后当客户的请求来了,nginx会一段时间内不会把请求分发给已经宕机的服务器,但是过一段时间后,nginx还是会把分发请求发给宕机的服务器 上。
四.实验环境:
Master:
OS :CentOS 6.3
RIP :172.16.11.14
Software :
keepalived-1.2.12
nginx-1.8.0
ipvsadm
Backup:
OS :CentOS 6.3
RIP :172.16.11.15
Software :
keepalived-1.2.12
nginx-1.8.0
ipvsadm
VIP :172.16.11.16
五. 配置文件:
Master 的 nginx.conf 部分:
..........
upstream localhost {
server 172.16.11.11:80;
server 172.16.11.12:80;
}
server {
listen 8080;
server_name 172.16.11.14;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_set_header Host $host:8080;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://localhost;
}
}
...........
Backup 的 nginx.conf 部分:
........
upstream localhost {
server 172.16.11.11:80;
server 172.16.11.12:80;
}
server {
listen 8080;
server_name 172.16.11.15;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_set_header Host $host:8080;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://localhost;
}
}
........
Master 的 keepalived.conf:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL_1
}
vrrp_script chk_http_port {
script "</dev/tcp/127.0.0.1/8080" #用shell命令检查nginx服务是否运行
interval 1 #时间间隔为1秒检测一次
weight -2 #当nginx的服务不存在了,就把当前的权重-2
fall 2 #测试失败的次数
rise 1 #测试成功的次数
}
vrrp_instance VI_1 {
state MASTER #只有 MASTER 和 BACKUP 两种状态
interface eth0 #进行通信的端口
virtual_router_id 51 #同一个vrrp实例的唯一标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的。在整个vrrp内也唯一。
priority 101 #权重,数值越大,权重越大。MASTER大于SLAVE
advert_int 1 #MASTER和SLAVE负载均衡器之间同步检查的时间间隔。单位是:秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.11.16
}
track_script {
chk_http_port #引用上面的vrrp_script定义的脚本名称
}
}
virtual_server 172.16.11.16 8080 {
delay_loop 6
lb_algo wlc #负载均衡调度算法rr|wrr|lc|wlc|sh|dh|lblc
lb_kind DR #负载均衡转发规则NAT|DR|TUN
nat_mask 255.255.255.0
#persistence_timeout 60
protocol TCP
sorry_server 127.0.0.1 80
real_server 172.16.11.14 8080 {
weight 1 #权重,数值越大,权重越高。分发的可能越大
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
Backup 的 keepalived.conf:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL_2
}
vrrp_script chk_http_port {
script "</dev/tcp/127.0.0.1/8080"
interval 1
weight -2
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.11.16
}
track_script {
chk_http_port
}
}
virtual_server 172.16.11.16 8080 {
delay_loop 6
lb_algo wlc
lb_kind DR
nat_mask 255.255.255.0
#persistence_timeout 50
protocol TCP
sorry_server 127.0.0.1 80
real_server 172.16.11.15 8080 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
注意:
state : 都是MASTER(不是一个MASTER,一个BACKUP)
priority : Master 的 > Backup 的
virtual_router_id: 参数值要一样
为什么主备的参数state都是MASTER,state都设置成MASTER后,会根据priority的值大小竞争来决定谁是真正的MASTER,脚本检测也是在失败的时候会把权重减去相应的值(-2),比如原来 Master(14) 的priority=101,如果脚本检测到端口8080无法连接,就会 priority-2=99,小于 Backup(15) 的priority(100),此时 Backup 将竞争成为MASTER,这样就实现了Nginx应用的热备
验证:
# ip addr
# ipvsadm -L -n
如果想知道当前测试机(159.226.240.63)的访问请求被转发到那个服务器去了,可以在ipvsadm 命令后带一个选项,其完整形式为:ipvsadm –lcn | grep 159.226.240.63
[root@hld081028-mk ~]# ipvsadm -lcn | grep 159.226.240.63
TCP 14:56 ESTABLISHED 159.226.240.63:39783 172.16.11.16:8080 172.16.11.14:8080
六.测试场景
1.服务器层的双机热备
1)其中一个服务器宕机
2)其中一个服务器上的Keepalived宕掉
3)其中一个服务器网络不通
2.应用层的双机热备
1)其中一个服务器上的Nginx进程被意外kill
2) 其中一个服务器上的应用端口(8080)不通
- 大小: 25.5 KB
- 大小: 3.1 KB
分享到:
相关推荐
Nginx+keepalived双机热备(主从模式)是一种常见的负载均衡技术,用于实现高可用环境和故障转移。该技术通过将Nginx与keepalived结合,实现了前端负载均衡和高可用性。 Nginx是一款流行的开源Web服务器软件,具有...
nginx+keepalived实现双机热备高可用 本文详细介绍了使用nginx和keepalived实现双机热备高可用的技术解决方案。该解决方案旨在解决nginx集群部署时的单点故障问题。通过keepalived软件,实现对nginx服务器的高可用...
本片详细记录了Nginx+keepalived双机热备(主从模式)高可用集群方案-完整部署过程,讲解十分到位,可作为线上实操手册。特在此分享,希望能帮助到有用到的朋友。
nginx+keepalive 主从双机热备解决方案是指使用 nginx 和 keepalive 实现主从双机热备的自动切换解决方案。 一、nginx 的安装 在安装 nginx 之前,需要准备好以下安装包: * pcre-8.31.tar.gz * openssl-1.0.1c....
"keepalived+nginx双机热备+负载均衡 非抢占模式"是一种常见的解决方案,它能够确保服务的连续性和效率。下面将详细介绍这个主题。 **Keepalived** Keepalived是一款基于VRRP(Virtual Router Redundancy Protocol...
keepalived+nginx实现双主热备
Keepalived 实现双机热备 Keepalived 是一个类似于 Layer3, 4, 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 5 层交换。Keepalived 的作用是检测 Web 服务器的状态,如果有一台 Web 服务器死机,或...
本篇将详细介绍如何通过Nginx 和 Keepalive 实现主从双机热备,并配置自动切换功能,以达到负载均衡及高可用集群的目的。 #### 一、环境搭建概述 根据提供的部分内容,我们可以看出整个部署过程分为以下几个主要...
redhat6.4+nginx+keepalived__实现双机热备和负载均衡
Keepalived 是一种高性能的服务器高可用或热备解决方案,可以防止服务器单点故障的发生,而 Nginx 是一个流行的 Web 服务器软件。通过 Keepalived 和 Nginx 的结合,可以实现高可用的 Web 负载均衡。 Keepalived 是...
在构建高性能、高可用性的Web服务时,使用Nginx+keepalived+tomcat的组合可以实现强大的负载均衡和故障转移功能。这个方案的核心思想是利用Nginx作为前端反向代理服务器,通过keepalived来确保服务的高可用性,并将...
通过上述步骤,我们可以成功地实现一个基于Nginx的负载均衡系统,并利用Keepalived来实现双机热备,确保了系统的高可用性和稳定性。这种架构不仅能够有效分发流量至多个Web服务器,还能在一台服务器出现故障时自动...
本文主要讲述了如何构建一个高可用集群项目,使用 LVS、Keepalived、Nginx 和 Tomcat 实现高可用性和负载均衡。该项目的架构中,Keepalived 负责对 LVS 架构中的调度器进行热备份,至少包含两台热备的负载调度器,两...
【标题】"keepalived + nginx 主从热备"是一个重要的网络服务高可用性解决方案,主要应用于Web服务器集群,确保在主服务器发生故障时,流量能够无缝切换到备用服务器,保持服务的连续性和稳定性。 【描述】这个...
Keepalived和nginx实现负载和双机热备原理 。
本文档旨在详细介绍如何在Linux环境下构建一套基于Keepalived、Nginx、Tomcat及MySQL的服务集群,实现双机热备与负载均衡功能。以下内容将详细阐述配置步骤,特别关注于数据库服务器(5号机)的配置流程。 #### ...
Keepalived 是一种高性能的服务器高可用或热备解决方案,可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用。Keepalived 以 VRRP 协议为实现基础,用 VRRP 协议来实现高可用性(HA)...
### 分布式架构高可用架构-Keepalived+Nginx实现高可用Web负载均衡 #### 一、场景需求 在互联网应用中,随着用户数量的增长和技术的发展,单一服务器已难以满足日益增长的服务需求。分布式系统架构应运而生于解决...
二、部署调度器—搭建Nginx+Keepalived(双机热备) 在调度器服务器上,需要安装Nginx和Keepalived软件包。首先,需要安装编译工具和插件,然后添加nginx用户和组,解压Nginx安装包,编译和安装Nginx。接着,需要...