要实现 nginx 的高可用, 需要实现备份机.
1.1. 什么是负载均衡高可用
nginx 作为负载均衡器, 所有请求都到了 nginx, 可见 nginx 处于非常重点的位置, 如果 nginx 服务器宕机后端 web 服务将无法提供服务, 影响严重.
为了屏蔽负载均衡服务器的宕机, 需要建立一个备份机. 主服务器和备份机上都运行高可用 (High Availability) 监控程序, 通过传送诸如 "I am alive" 这样的信息来监控对方的运行状况. 当备份机不能在一定的时间内收到这样的信息时, 它就接管主服务器的服务 IP 并继续提供负载均衡服务; 当备份管理器又从主管理器收到 "I am alive" 这样的信息时, 它就释放服务 IP 地址, 这样的主服务器就开始再次提供负载均衡服务.
1.2. keepalived+nginx 实现主备
1.2.1. 什么是 keepalived
keepalived 是集群管理中保证集群高可用的一个服务软件, 用来防止单点故障.
Keepalived 的作用是检测 Web 服务器的状态, 如果有一台 Web 服务器死机, 或工作出现故障, Keepalived 将检测到, 并将有故障的 Web 服务器从系统中剔除, 当 Web 服务器工作正常后 Keepalived 自动将 Web 服务器加入到服务器群中, 这些工作全部自动完成, 不需要人工干涉, 需要人工做的只是修复故障的 Web 服务器.
1.2.2. keepalived 工作原理
keepalived 是以 VRRP 协议为实现基础的, VRRP 全称 Virtual Router Redundancy Protocol, 即虚拟路由冗余协议.
虚拟路由冗余协议, 可以认为是实现路由器高可用的协议, 即将 N 台提供相同功能的路由器组成一个路由器组, 这个组里面有一个 master 和多个 backup,master 上面有一个对外提供服务的 vip(VIP = Virtual IP Address, 虚拟 IP 地址, 该路由器所在局域网内其他机器的默认路由为该 vip),master 会发组播, 当 backup 收不到 VRRP 包时就认为 master 宕掉了, 这时就需要根据 VRRP 的优先级来选举一个 backup 当 master. 这样的话就可以保证路由器的高可用了.
keepalived 主要有三个模块, 分别是 core,check 和 VRRP.core 模块为 keepalived 的核心, 负责主进程的启动, 维护以及全局配置文件的加载和解析. check 负责健康检查, 包括常见的各种检查方式. VRRP 模块是来实现 VRRP 协议的.
详细参考: Keepalived 权威指南中文. PDF
1.2.3. keepalived+nginx 实现主备过程
初始状态
image.PNG
主机宕机
image.PNG
主机恢复
image.PNG
高可用环境
两台 nginx, 一主一备: 192.168.101.3 和 192.168.101.4
两台 tomcat 服务器: 192.168.101.5,192.168.101.6
来源: http://www.jianshu.com/p/6b4a29b6ed59