ip追踪命令-83|应用层篇:web服务器Nginx-keepalived实现Nginx的HA_80楼网赚论坛|80楼网创
生活百科

ip追踪命令-83|应用层篇:web服务器Nginx-keepalived实现Nginx的HA_80楼网赚论坛|80楼网创

HA即High Availability,即高可用的意思,到目前为止,我们商城的整体架构如下(本节基于笔者之前自己所做的一个商城项目而写,不过核心并不是讲商城怎么做,所以不需要担心): 我们可以通过Nginx实现动静分离,可一定程度上提高用户体验;并且可通过Nginx实现负载均衡,提高网站后端的整体性能和可靠性。 不过,我们目前使用的还是单节点Nginx,Nginx如果挂了呢?甚至是Nginx这台主机宕机了呢?后端的集群就成了摆设: 那么就牵涉到如何做Nginx的HA。让我们发车吧。 一、思考 最简单的一个思路是Nginx也做成集群,做域名的DNS负载均衡,如果其中一个节点挂了,仍然会有一部分流量进到该节点,从而导致部分用户不可访问。只有进行DNS解析的修正或修复好该节点才可恢复服务,这里就需要人工介入,且存在问题发现延迟。 严格来说,这并没有做到真正的HA。我们希望,Nginx可以7*24小时是服务可用的。 二、keepalived的概念 可以考虑使用主备节点模式,主挂从上,比如:一个Nginx主节点,一个Nginx备节点,当Nginx主节点宕机后,备节点可立马提供服务。由于是主备关系,那么只有主节点宕机后备节点才会生效,也就是说同一时刻只有一个节点对外提供服务。 如何实现这个小目标呢?那就是大名鼎鼎的keepalived。 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。 keepalived是以VRRP协议为实现基础的,VRRP全程Virtual Router Redundancy Protocol ,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路由器高可用的协议。也就是说N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master不断向backup发送心跳信息,告诉backup自己还活着ip追踪命令,当backup收不到心跳消息时就认为master已经宕机啦,这时就需要根据VRRP的优先级来选举一个backup(根据权重)当master,从而保证高可用。 三、虚拟IP 目前好像设想是很好的,但是好像有点不对劲。 按照目前的架构,用户访问域名,通过DNS的解析访问到master,如果master挂了则靠keepalived进行切换至slaverip追踪命令,但是有个问题,master和slaver肯定是两台主机分别部署的服务,当master挂了之后,是否要进行IP的切换呢? 肯定是不希望切换的,我们希望DNS的解析是固定的,那么这个时候就出现了VIP,VIP即Virtual IP Address, VIP用于向客户端提供一个固定的“虚拟”访问地址,以避免后端服务器发生切换时对客户端的影响。 客户端依旧访问域名,DNS只用解析至VIP即可,对于用户来说,无论是使用了master节点还是slaver节点,都看到的是固定的一个VIP。 此时我们完整的架构变成了: 初始的时候,VIP被加载在Master的网卡上,所有指向VIP的请求会被发向Master,Slaver服务器出于Standby状态。如果Master出现故障,集群会通过选举算法从可用的Slaver节点中选出一个新的Master节点,并将VIP也迁移到新Master节点的网卡上。这样可以保证服务始终可用,并且对客户端来说访问的IP也不会变化。 好了,至此,我们知道VIP是统一对外的IP,VIP绑定master节点的网卡,从而使得请求都指向master节点;当master宕机时,即可通过keepalived发现,并且进行选举得出新的master节点,这个新的master节点可自动绑定VIP对外服务,也就是说keepalived实现了VIP的绑定(VIP实际上是配置在keepalived配置文件中的) 四、ip的规划 我们搭建了一套三节点的虚拟机,192.168.56.100作为VIP,(主)192.168.56.101和(备)192.168.56.102分别部署一个nginx和一个keepalived,来实现keepalived+vip的nginx HA。 五、keepalived安装 (主)192.168.56.101和(备)192.168.56.102两台主机都需要分别安装nginx和keepalived。 keepalived下载官网地址: 我下载了最新的keepalived-2.2.2.tar.gz版本,上传到服务器上,下面进行解压安装。 第一步解压:tar -zxvf keepalived-2.2.2.tar.gz 进入解压后的目录:cd keepalived-2.2.2 配置生成makefile:./configure –prefix=/usr/local/keepalived –sysconf=/etc 安装:make &&...