Nginx Keepalived 高可用负载均衡

Nginx_keepalived_2019-02-01_10-24-14.png

高可用集群和负载均衡集群想必大家都多少听说过,但是很多人往往把这两个搞混在一起,不加区分地使用这两个概念。虽然说很多负载均衡的设备有着高可用的特性,或者高可用的机器使用着负载均衡的方式分发流量,事实上,高可用和负载均衡是两个完全不同的概念,两者关注的地方是不同的,而且很多在很多场景下两者的需求是冲突的。

因此,这里有必要讲下什么是高可用和负载均衡?两者各自关注的地方是什么?

  • 高可用性:顾名思义,尽可能采取措施减少系统服务中断时间,进而提高业务程序持续对外提供服务的能力。
  • 负载均衡:将高并发的请求数据分发到不同的集群结点,尽量平衡系统所有资源的压力,从而提升整个集群对于请求的处理能力。

以上的说明内容非常科学的定义了高可用和负载均衡,但是对于很多没接触过的人还不是很好的理解,下面举个例子简单说明下。

美国的总统和副总统就像高可用集群,只有等到总统挂了副总统才派得上用场,这叫高可用;像我朝各个正职和副职(比如正校长和副校长,正校长可能姓付,副校长也可能姓郑)的关系,更像负载均衡的关系,各个正副职往往各司其职,没有说哪两个人干的事情是一模一样的,或者某个人平时不干事就等正职那位伙计挂掉然后顺利成章就接手正职的职责和权利的。

负载均衡一般不关注集群中各节点对于请求的处理能力,很多时候会根据节点处理能力的不同而使用不同的分发策略,比如轮询,最小连接,最快响应等。高可用比较关注集群中结点处理请求能力的对等性,因为一单主节点出现问题备用节点需要承受主节点所有的请求压力,一旦处理能力较弱有可能无法正常提供服务,从而失去高可用的作用。

高可用性集群中的节点一般是一主一备,或者一主多备,通过备份提高整个系统可用性。负载均衡集群一般是多主,每个节点都会分担部分流量。

为什么很多人会把高可用和负载均混淆起来,因为大家一般了解的都是某个软件或者设备,往往这些设备会同时应用负载均衡和高可用。


介绍说明结束,本例子来源于网络,有版权问题请及时联系本作者


根据以上说明,如果 Nginx 只有单台的话就会出现单点故障问题,那么整个网站就会挂掉,所以要实现 Nginx 高可用,一台挂掉了另一台顶上去继续维持可持续服务,另一台好了可继续服务。

Nginx 高可用分为以下两种方式:

  1. Nginx+keepalived 主从模式
    这种方案,使用一个vip地址,Nginx 使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。
  2. Nginx+keepalived 双主
    这种方案,使用两个vip地址,Nginx 使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境。
    注:这里我采用第一种模式,因为第二种模式向外提供两个 VIP 时,暂时不符合项目要求。

搭建环境说明

服务器 IP 服务器及应用版本 安装的服务 VIP
192.168.12.1 CentOS 7 Java、Tomcat、Web应用
192.168.12.2 CentOS 7 Java、Tomcat、Web应用
192.168.12.3 CentOS 7 Java、Tomcat、Web应用
192.168.12.4 CentOS 7 Nginx、Keepalived 192.168.12.10
192.168.12.5 CentOS 7 Nginx、Keepalived 192.168.12.10

注:如果 VIP 的选择,不能暂用其他服务器的 IP 地址,特别是在公司使用内部服务器时!

Web应用搭建

  1. 在部署应用的三台服务器上安装 Java jdk1.8

  2. 安装 Tomcat 9.0

  3. 部署服务

部署安装 Nginx

Nginx 负载均衡

安装 Keepalived 配置Nginx 高可用

  1. 安装 Keepalived
  2. 配置Nginx 高可用

你可能感兴趣的:(Nginx Keepalived 高可用负载均衡)