LVS- NAT 集群 搭建

集群 概述

何为集群 ?

  • 一组各自相互独立且又相互依赖的,通过高速网络互联网的计算机组成的一个计算机组,以单一的系统模式加以管理,为用户提供服务,对用户来说,用户只会认为对方是一个服务,一组计算机中的一台计算机就是集群的一个节点.

集群特点 ?

1)  功能

  • 有实现三种IP负载均衡技术 和 八种连接调度算法的IPVS软件.在IPVS内部实现上,采用了高效的 Hash 函数和垃圾回收机制,能正确的处理调度报文相关的 ICMP消息。虚拟服务的设置数目没有限制,每个虚拟服务有自己的服务器集,它支持持久的虚拟服务(HTTP cookie 和 HTTPS等需要该功能的支持),并提供详尽的统计数据,如连接的处理速率和报文的流量等。针对大规模拒绝服务攻击,实现了三种防卫策略,有基于内容请求分发的应用层交换软件KTCPVS,它也是在 Linux 内核中实现,有相关的集群管理软件对资源进行监测,能及时将故障屏蔽,实现系统的高可用。主、从调度器能周期性地进行状态同步,从而实现更高的可用性.

2)  适用性

  • 后端服务器可运行任何支持TCP/IP的操作系统,包括 Linux ,各种Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows NT/2000等。
  • 负载调度器能够支持绝大多数的TCP和UDP协议
    协议 内 容
    TCP HTTP,FTP,PROXY,SMTP,POP3,IMAP4,DNS,LDAP,HTTPS,SSMTP等
    UDP DNS,NTP,ICP,视频、音频流播放协议等
    无需对客户机和服务器作任何修改,可适用大多数Internet服务。

3)性能

  • Lvs 服务器集群系统具有良好的伸缩性,可支持几百万个并发连接,配置100M网卡,采用VS/TUN或VS/DR调度技术,集群系统的吞吐量可高达 1Gbits/s; 可配置千兆网卡,则系统的最大吞吐量可接近 10Gbits/s。

4)可靠性

  • Lvs 服务器集群软件已经在很多大型的,关键性的站点得到了很好的应用,所以它的可靠性在真实应用得到了很好的证实。

5)软件许可证

  • Lvs 集群软件是按GPL(GNU Pulic License) 许可证发行的自由软件,这意味着你可以得到软件的源代码,有权对其进行修改,但必须保证修改后的也是以 GPL 方式发行.

应用场景 ?

  • 一台服务器.可以响应10000个并发 状态码是 200 OK .
  • 一台服务器.如果响应20000个并发,状态码是 200 --> 304 --> 301 --> 500 --> 404 . 由此可见 web 服务的状态码已经达到瓶颈.

解决方法:

  1. 加配置: 加CPU, 加内存, 加带宽, 加SSD 这种解决方法称为“向上扩展”, 能够解决一时  [单台服务器上做动作]
  2. 加服务器: 1台 --> 2台 --> 4台 --> 8台  用多台服务器同时为用户提供服务  ,而这一种解决方法则称为“横向扩展”或“向外扩展” 集群.

集群的种类 ?

  1. 负载均衡 (Load Balance)集群,简称 LB.
  2. 高可用 (High Avaliability)集群,简称 HA 集群.
  3. 高性能计算 (High Perfermance Computeing) 集群,简称 HPC 集群.

LB  实现手段 ?

  • 硬件实现 : F5 负载均衡器.
  • 软件实现 : LVS (4 层,传输层)、Nginx (7层,应用层).

 LVS 集群 

官网:http://www.linuxvirtualserver.org/

中文站点: http://zh.linuxvirtualserver.org/

  • LVS 是 (Linux Vritual Server) 的缩写,即 Linux 虚拟服务器。是一个虚拟的服务器集群系统,本项目 于 1998年 5月由章文嵩博士成立,是中国最早出现的自由软件项目之一,根据 iotables 的实现来开发的,所以使用跟 iptables 很相似.

LVS 集群工作结构图 ?

LVS- NAT 集群 搭建_第1张图片

  1. 负载调度器  = 分发器(Load Balabcer,Director):整个集群对外的最前端机,负责接收用户请求,并且根据自己的调度算法,将请求转发到后端真实服务器上,客户认为是来自一个IP地址,实则我们可以称之为 VIP  虚拟地址.
  2. 服务器池 Server Pool :真正为用户提供服务的服务器,每一台服务器就是一台 RS .执行的服务有 web,mail,ftp .DNS 等.
  3. 共享存储 Share Storaged:为RS保持相同内容,提供数据的一致性,可以理解为,为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务.

LVS 模式及工作原理

  • LVS 提供了 三种包转发方式:
  1. NAT (网络地址映射)
  2. IP Tunneling (IP 隧道)
  3. Direct Routing (直接路由)

NAT (网络地址映射)

NAT : 网络地址转换

  1. DNAT : 目的地址转换,改变的是目的地址
  2. SNAT :源地址转换,改变的是源地址
  3. LVS-NAT :使用的是 SNAT 和 DNAT 完成报文的转发

NAT 方式可支持任何的操作系统,以及私有网络,并且只需一个 Internet IP 地址,但是整个系统性能受到限制,因为执行 NAT 每次需要重写包,有一定的延迟,另外,大部分应用有 80% 的数据是从服务器流向客户机,可以理解用户的请求非常短,而服务器的回应非常大,对负载均衡形成很大压力,称为新的瓶颈.


IP Tunneling (IP 隧道)

Director (分发器) 分配请求到不同的 real server. real server 处理请求后直接回应给用户,这样 director 负载均衡仅处理客户机和服务器的一半连接。IP Tunneling 技术极大的提高了 director 的调度处理能力,同时极大的提高了系统能容纳的最大节点数可以超过 100 个节点,real server 可以在任何 LAN 或 WAN上运行,可以理解为允许地理上的分布,这在灾难恢复中有重要的意义,服务器必须拥有正式的 IP 地址用于与客户机直接通信,并且所有的服务器必须支持 IP 隧道协议.

Direct Routing (直接路由)

与 IP Tunneling 类似,负载均衡仅处理一半的连接,避免了新的性能瓶颈同样增加了系统的可伸缩性, Direct Routing 与 IP Tunneing 相比,没有 IP 封装的开销,但由于采用物理层 (修改 MAC 技术),所有服务器都必须在一个物理段.


LVS - NAT 模式工作原理

客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

步骤1 :客户端访问服务器的过程:

LVS- NAT 集群 搭建_第2张图片

  • CIP  客户端的IP

  • VIP  是域名解析的IP, 是集群对外的公网IP

  • DIP  用来和后端服务器进行数据交互的IP, 请求报文转发给后端服务器从此口出去

  • RIP  真实服务器的IP


步骤2:客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器

LVS- NAT 集群 搭建_第3张图片


步骤3:真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程

LVS- NAT 集群 搭建_第4张图片

步骤总结及过程地址变化:

1: 客户端请求访问 www.example.com  --- >  VIP

     源地址: CIP   目标地址: VIP                 

2: 请求报文到达负载均衡器

     源地址: CIP   目标地址: RIP               

3: RealServer收到报文处理, 响应

     源地址: RIP            目标地址: CIP                    

4: 负载调度器收到报文, 根据自身之前的转发修改记录, 还原报文

     源地址: VIP            目标地址: CIP


配置 LVS - NAT 

环境介绍:

  • 3 台主机  
  • 关闭防火墙

环境拓扑:

LVS- NAT 集群 搭建_第5张图片

配置 LVS

  • 打开路由转发功能
[root@zh74 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@zh74 ~]# sysctl -p
net.ipv4.ip_forward = 1

网络环境

  • ens33 192.168.1.133  br0 公网
  • ens38  192.168.0.19  vmnet4  内网

Director 分发器,不需要开启80 服务端口.

安装 LVS 管理工具

[root@zh74 ~]# yum -y install ipvsadm

设置 规则

[root@zh74 ~]# ipvsadm -A -t 192.168.1.133:80 -s rr      # rr代表轮循  

# -A 添加虚拟服务器
# -t 表示 TCP 的服务器 VIP:PORT 
# -s 指定调度算法  rr 表示 round-robin 轮询

[root@zh74 ~]# ipvsadm -a -t 192.168.1.133:80 -r 192.168.0.21 -m
[root@zh74 ~]# ipvsadm -a -t 192.168.1.133:80 -r 192.168.0.11 -m

# -a 表示添加 real server 的地址
# -r 指定 real-server 的Ip地址
# -m 表示 NAT 方式的 LVS

 查看

[root@zh74 ~]# ipvsadm -L -n 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.133:80 rr
  -> 192.168.0.11:80              Masq    1      0          0         
  -> 192.168.0.21:80              Masq    1      0          0

保存配置规则

[root@zh74 ~]# ipvsadm -S   或者 --save > /etc/sysconfig/ipvsadm

 配置 真实服务器

网络环境

zh75: ens33: vmnet4 : 192.168.0.21  网关: 192.168.0.19

zh76: ens33: vmnet4 : 192.168.0.11  网关: 192.168.0.19

配置 web 并启服务 2台 real server 配置一样

[root@zh75 ~]# yum -y install httpd
[root@zh75 ~]# systemctl start httpd
[root@zh75 ~]# cd /var/www/html/
[root@zh75 html]# cat index.html 
zh76

test successful.

测试

[root@zh74 ~]# elinks 192.168.1.133 --dump
   zh75 test successful.
[root@zh74 ~]# elinks 192.168.1.133 --dump
   zh76 test successful.

 

你可能感兴趣的:(负载均衡,LVS,集群搭建,LVS-NAT)