12. Interview-Nginx&Tomcat

2020-08-05  本文已影响0人  allen锅

1 四层负载均衡(转发)

四层&七层负载均衡

主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

2 七层负载均衡(代理)

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

3 负载均衡算法

4 LVS原理

LVS原理

LVS,Linux Virtual Server,Linux虚拟机服务器,现在是Linux标准内核的一部分,是一个虚拟的四层负载均衡器。

4.1 LVS NAT模式

LVS NAT模式

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目
标地址为VIP(负载均衡器前端地址,后面统称为VIP)。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目
标地址改为了后端服务器的RIP 地址并将报文根据算法发送出去。
③.报文送到Real Server 后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还
给LVS。
④.然后lvs 将此报文的源地址修改为本机并发送给客户端。
注意:在NAT 模式中,Real Server 的网关必须指向LVS,否则报文无法送达客户端。

特点:

1、NAT 技术将请求的报文和响应的报文都需要通过 LB 进行地址改写,因此网站访问量比较大的
时候 LB 负载均衡调度器有比较大的瓶颈,一般要求最多之能 10-20 台节点
2、只需要在 LB 上配置一个公网 IP 地址就可以了。
3、每台内部的 realserver 服务器的网关地址必须是调度器 LB 的内网地址。
4、NAT 模式支持对 IP 地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。

优点:

集群中的物理服务器可以使用任何支持TCP/IP 操作系统,只有负载均衡器需要一个合法的IP 地
址。

缺点:

扩展性有限。当服务器节点(普通PC 服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因
为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇
在负载均衡器那,速度就会变慢!

4.2 LVS DR模式(局域网改写MAC地址)

LVS DR模式

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源
MAC 地址改为自己DIP 的MAC地址,目标MAC改为了RIP 的MAC 地址,并将此包发送给RS。
③.RS 发现请求报文中的目的MAC 是自己,就会将次报文接收下来,处理完请求报文后,将响应
报文通过lo 接口送给eth0 网卡直接发送给客户端。
注意:需要设置lo 接口的VIP 不能响应本地网络内的arp 请求。

总结:

1、通过在调度器 LB 上修改数据包的目的 MAC 地址实现转发。注意源地址仍然是 CIP,目的地址
仍然是 VIP 地址。
2、请求的报文经过调度器,而 RS 响应处理后的报文无需经过调度器 LB,因此并发访问量大时使
用效率很高(和 NAT 模式比)
3、因为 DR 模式是通过 MAC 地址改写机制实现转发,因此所有 RS 节点和调度器 LB 只能在一个
局域网里面
4、RS 主机需要绑定 VIP 地址在 LO 接口(掩码32 位)上,并且需要配置 ARP 抑制。
5、RS 节点的默认网关不需要配置成 LB,而是直接配置为上级路由的网关,能让 RS 直接出网就
可以。
6、由于 DR 模式的调度器仅做 MAC 地址的改写,所以调度器 LB 就不能改写目标端口,那么 RS
服务器就得使用和 VIP 相同的端口提供服务。
7、直接对外的业务比如WEB 等,RS 的IP 最好是使用公网IP。对外的服务,比如数据库等最好
使用内网IP。

优点:
缺点:

所有 RS 节点和调度器 LB 只能在一个局域网里面

4.3 LVS TUN模式(IP封装、跨网段)

LVS TUN模式

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的
首部再封装一层IP 报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。
③.RS 收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP 首部的目标地址是自己
lo 接口上的VIP,所以会处理次请求报文,并将响应报文通过lo 接口送给eth0 网卡直接发送给客
户端。
注意:需要设置lo 接口的VIP 不能在共网上出现。

总结:

1.TUNNEL 模式必须在所有的 realserver 机器上面绑定 VIP 的 IP 地址
2.TUNNEL 模式的 vip ------>realserver 的包通信通过 TUNNEL 模式,不管是内网和外网都能通
信,所以不需要 lvs vip 跟 realserver 在同一个网段内。
3.TUNNEL 模式 realserver 会把 packet 直接发给 client 不会给 lvs 了
4.TUNNEL 模式走的隧道模式,所以运维起来比较难,所以一般不用。

优点:

负载均衡器只负责将请求包分发给后端节点服务器,而RS 将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS 进行分发。而且跑在公网上就能进行不同地域的分发。

缺点:

隧道模式的RS 节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP
Encapsulation)协议,服务器可能只局限在部分Linux 系统上。

4.4 LVS FULLNAT模式

无论是 DR 还是 NAT 模式,不可避免的都有一个问题:LVS 和 RS 必须在同一个 VLAN 下,否则
LVS 无法作为 RS 的网关。这引发的两个问题是:
1、同一个 VLAN 的限制导致运维不方便,跨 VLAN 的 RS 无法接入。
2、LVS 的水平扩展受到制约。当 RS 水平扩容时,总有一天其上的单点 LVS 会成为瓶颈。
Full-NAT 由此而生,解决的是 LVS 和 RS 跨 VLAN 的问题,而跨 VLAN 问题解决后,LVS 和 RS
不再存在 VLAN 上的从属关系,可以做到多个 LVS 对应多个 RS,解决水平扩容的问题。
Full-NAT 相比 NAT 的主要改进是,在 SNAT/DNAT 的基础上,加上另一种转换,转换过程如下:

LVS FULLNAT模式
  1. 在包从 LVS 转到 RS 的过程中,源地址从客户端 IP 被替换成了 LVS 的内网 IP。内网 IP 之间
    可以通过多个交换机跨 VLAN 通信。目标地址从VIP 修改为RS IP.
  2. 当 RS 处理完接受到的包,处理完成后返回时,将目标地址修改为LVS ip,原地址修改为RS
    IP,最终将这个包返回给 LVS 的内网 IP,这一步也不受限于 VLAN。
  3. LVS 收到包后,在 NAT 模式修改源地址的基础上,再把 RS 发来的包中的目标地址从 LVS 内
    网 IP 改为客户端的 IP,并将原地址修改为VIP。
    Full-NAT 主要的思想是把网关和其下机器的通信,改为了普通的网络通信,从而解决了跨 VLAN
    的问题。采用这种方式,LVS 和 RS 的部署在 VLAN 上将不再有任何限制,大大提高了运维部署的
    便利性。
总结
  1. FULL NAT 模式不需要 LBIP 和 realserver ip 在同一个网段;
  2. full nat 因为要更新 sorce ip 所以性能正常比 nat 模式下降 10%

5 Keepalive原理

5.1 keepalived体系结构

keepalived运行时,会启动3个进程,分别为:core(核心进程),check和vrrp.

keepalived体系结构

5.2 Keepalvied的工作原理

5.3 VRRP选举机制

VRRP路由器在运行过程中有三种状态:

  1. Initialize状态: 系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理;
  2. Master状态;
  3. Backup状态;
    一般主路由器处于Master状态,备份路由器处于Backup状态。

VRRP使用选举机制来确定路由器的状态,优先级选举:

  1. VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被定位主路由器。
  2. 比较优先级。如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,优先级大的作为主路由器
  3. 比较IP地址。在没有Ip地址拥有者和优先级相同的情况下,IP地址大的作为主路由器。

5.4 keepalived & heartbeat

6 HeartBeat原理

HeartBeat集群组件

7 HAProxy原理

7.1 会话保持方案

同一客户端访问服务器,Haproxy保持回话的三种方案:

  1. Haproxy将客户端ip进行Hash计算并保存,由此确保相同IP访问时被转发到同一真实服务器上。
  2. Haproxy依靠真实服务器发送给客户端的cookie信息进行回话保持。
  3. Haproxy保存真实服务器的session及服务器标识,实现会话保持功能。

7.2 Haproxy代理模式

7.3 haproxy、Nginx、LVS比较

Nginx&LVS*HAProxy

8 Nginx原理

9 nginx反向代理怎么配置

10 nginx反向代理怎么知道其中一台tomcat挂掉了?

Nginx配置这两个参数,可以查看到请求落在了后端的具体哪个server上。

上一篇 下一篇

猜你喜欢

热点阅读