keepalived 解决入口机器(Nginx)挂掉的问题

问题来源

我们有很多 Tomcat 服务器交由 Nginx 管理,可 Nginx 所在的这台机器挂了怎么办?
在这里插入图片描述
你可能会想到再来 2 台 Nginx 机器,一台与之前的 Nginx 并行,一台来作为最前端的网关管理这两台机器。如下图,这样中间两台机器宕机任意一个也没事。可最前端的 Nginx 也有可能挂掉,这怎么办?还是没解决问题。

在这里插入图片描述

DNS 轮询解决

有人可能会想到 DNS 轮询的方式:相同的服务,不同的机器配置同一个域名,让 DNS 轮询。这样不仅挂掉一台机器不会导致整个系统宕机,还做了一个简单的负载均衡。
在这里插入图片描述
但这样也有缺点:

1、可靠性低
如果其中的一台服务器发生故障,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。那么所有恰好访问该服务器的请求将不会有所回应。即使从 DNS 中去掉该服务器的IP,但在 Internet 上,各地区电信、网通等宽带接入商将众多的DNS存放在缓存中,以节省访问时间,DNS 更新生效需要几个小时,甚至更久。

2、负载分配不均匀
DNS负载均衡采用的是简单的轮询算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况。
用户本地计算机会缓存已解析的域名到 IP 地址的映射。当多个用户计算机都缓存了域名到某个 IP 地址的映射时,而这些用户又继续访问该域名下的网页,这时就会导致不同Web服务器间的负载分配不均匀。
负载不均匀可能导致的后果有:某几台服务器负荷很低,而另几台服务器负载很高、处理缓慢。负荷高的服务器一旦宕机,那么由于第 1 点,整个系统可能会出大量用户访问不到的情况。

LVS 解决思路

上面的问题所在的根本,其实就是最前端的机器是物理机器,物理机器是可能用着用着就挂掉的。但如果最前端的机器是一个虚拟机器呢?
在这里插入图片描述
从上图可以看到,我们用一个虚拟 IP 作为用户访问的入口,所以它自身就不存在挂掉的问题了。除非它后面的两台 Nginx 同时挂掉。这样就解决了之前的问题。这就是 LVS 的思路。

LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统。
它和 Nginx 没有直接的关系,它针对的是 Linux。

keepalived 配置 LVS 过程

主机配置

  1. 关闭 SELINUX
    vim /etc/sysconfig/selinux
    在这里插入图片描述
  2. 安装依赖
    yum -y install libnl libnl-devel libnfnetlink-devel
    你可能还需要的依赖,这些都是 Nginx 的依赖:
yum -y install autoconf automake make
yum -y install gcc gcc-c++ 
yum -y install pcre pcre-devel    
yum -y install zlib zlib-devel
yum install -y openssl openssl
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值