LVS负载均衡--nat模式--DR模式
一、负载均衡集群
(1)集群的含义
集群的含义
- Cluster,集群,群集
- 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。
问题: - 互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求。
(2)企业集群的分类
根据群集所针对的目标差异,可分为三种类型
- 负载均衡群集
- 高可用群集
- 高性能运算群集
1、负载均衡集群(Load Balance Cluster)
- 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
- LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询” “反向代理”等
2、高可用群集(High Availability Cluster)
- 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连接性,达到高可用(HA)的容错效果
- HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如:“故障切换” “双机热备” 等。
3、高可用运算群集(High Performance Computer Cluster)
- 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
- 高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如:“云计算” “网格计算”等
(3)负载均衡集群架构
1、负载均衡的结构
- 第一层,负载调度器(Load Balancer或Director)
访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集I地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。 - 第二层,服务器池(Server Pool)
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离。等待错误排除以后再重新纳入服务器池。 - 第三层,共享存储(Share Storage)
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。
(4)负载均衡集群工作模式分析
- 负载均衡群集是目前企业用得最多的群集类型
群集的负载调度技术有三种工作模式 - 1.地址转换
- 2.IP隧道
- 3.直接路由
二、NAT模式
(1)地址转换
- Network Address Translation,简称NAT模式类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
- 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
三、TUN模式IP隧道
IP隧道
- lP Tunnel,简称TUN模式
- 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的lnternet连接直接回应客户机,而不再经过负载调度器
- 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
四、DR模式
直接路由
- Direct Routing,简称DR模式
- 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
- 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
五、NAT和DR的区别
NAT的负载均衡器会作为用户的请求入口,也会作为节点服务器响应请求的出口,负载均衡器响应请求的出口,负载均衡器的服务器性能将会成为整个集群的瓶颈。
DR模式用户的访问请求会经过负载均衡器的转发到节点服务器,但是节点服务器的请求响应报文是直接返回给客户端不会经过负载均衡器。
关于LVS虚拟服务器
(1) 概况
- LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。在Centos 7系统中,以下操作可以手动加载ip_vs模块,并查看当前系统中ip_vs模块的版本信息。
(2) LVS负载均衡调度算法
- 轮询(Round Robin)
-------将收到的访问请求按照顺序轮流分配给集群中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载 - 加权轮询(Weighted Round Robin)
--------------根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越来越多
--------------保证性能强的服务器承担更多的访问流量 - 最少连接(Least Connections)
------根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点 - ** 加权最少连接(Weighted Least Connections)**
----- 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
-----性能较高的节点将承担更大比例的活动连接负载
(3) LVS创建与管理
1.创建虚拟服务器
2.添加、删除服务器节点
3.查看群集及节点情况
4.保存负载分配策略
五、NFS共享存储服务
(1)使用NFS发布共享资源
- 安装nfs-utils、rpcbind软件包
- 设置共享目录
- 启动NFS服务程序
- 查看本机发布的NFS共享目录
(2)部署步骤
1.加载ip_vs模块,安装ipvsadm工具
2.开启路由转发
3.新建LVS虚拟服务器并添加节点服务器
4.配置节点服务器
(建立测试网址、挂载NFS、建立测试网页)
5.保存规则并测试
LVS-DR中的ARP问题
问题:
-
路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效
解决方法: -
对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用ip包的源地址,而选择发送接口的IP地址
解决ARP的两个问题的设置方法
-
修改/etc/sysctl.conf文件
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2 -
修改/etc/sysctl.conf文件
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
LVS管理工具ipvsadm选项说明:
| 选项 | 说明 |
|---|---|
| -A | 添加虚拟服务器 |
| -D | 删除整个虚拟服务器- |
| -s | 指定负载调度算法(轮询:rr、加权轮询: wrr、最少连接:lc、加权最少连接: wlc) |
| -a | 表示添加真实服务器(节点服务器) |
| -d | 删除某一个节点 |
| -t | 指定VIP地址及TCP端口-r:指定RIP地址及TCP端口-m:表示使用NAT群集模式-g:表示使用DR模式 |
| -i | 表示使用TUN模式 |
| -w | 设置权重(权重为o时表示暂停节点)-p 60:表示保持长连接60秒 |
| -l | 列表查看LvS 虚拟服务器(默认为查看所有) |
| -n | 以数字形式显示地址、端口等信息,常与"-l"选项组合使用。ipvsadm -ln |
| 什么也不加 | 启用规则 |
LVs调度器用的调度方法基本分为两类:
固定调度算法:rr, wrr, dh, sh
| 选项 | 说明 |
|---|---|
| rr | 轮询算法,将请求依次分配给不同的rs节点,即Rs节点中均摊分配。适合于Rs所有节点处理性能接近的情况。 |
| wrr | 加权轮训调度,依据不同Rs的权值分配任务。权值较高的Rs将优先获得任务,并且分配到的连接数将比权值低的Rs更多。相同权值的ns得到排同数目的连接数。 |
| dh | 目的地址哈希调度(destination hashing〉以目的地址为关键字查找一个静态hash表来获得所需RS。sh:源地址哈希调度((source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。 |
动态调度算法: wlc,lc,lblc
| 动态选项 | 说明 |
|---|---|
| wlc | 加权最小连接数调度,假设各台Rs的权值依次为wi,当前tcp连接数依次为ni,依次去Ti/wi为最小的Rs作为下一个分配的RS。lc:最小连接数调度(least-connection),IPvs表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。 |
| lblc | 基于地址的最小连接数调度( locality-based |
| least-connection) | 将来自同一个目的地址的请求分配给同一台R,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的Rs.并以它作为下一次分配的首先考虑。 |
LVS负载均衡——DR模式部署
虚拟机1----NFS服务器(共享存储)
[root@localhost ~]# cd /opt
[root@localhost opt]# mkdir nfs
[root@localhost opt]# cd nfs
[root@localhost nfs]# mkdir first second
[root@localhost nfs]# chmod 777 *
[root@localhost nfs]# echo '<h1>This is the first test web!</h1>' > first/index.html
[root@localhost nfs]# echo '<h1>This is the second test web!</h1>' > second/index.html
[root@localhost nfs]# vim /etc/exports
内部配置
/opt/nfs/first 172.16.10.0/24(rw,sync,no_root_squash)
/opt/nfs/second172.16.10.0/24(rw,sync,no_root_squash)
[root@localhost nfs]# systemctl start rpcbind
[root@localhost nfs]# systemctl start nfs
[root@localhost nfs]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@localhost nfs]# showmount -e
Export list for localhost.localdomain:
/opt/nfs/second 172.16.10.0/24
/opt/nfs/first 172.16.10.0/24
可去其他虚拟机检查是否可以搜到NFS服务器的ip地址
showmount -e 172.16.10.10


虚拟机2—节点服务器
[root@localhost opt]# yum install -y httpd
[root@localhost opt]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
内部配置:
DEVICE=lo:0
IPADDR=172.16.10.20
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# route add -host 172.16.10.10 dev lo:0
[root@localhost network-scripts]# vim /etc/rc.local
内部配置:
route add -host 172.16.10.10 dev lo:0
[root@localhost network-scripts]# chmod +x /etc/rc.d/rc.local
[root@localhost network-scripts]# vim /etc/sysctl.conf
内部配置:
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@localhost network-scripts]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# echo '<h1>This is the first test web!!</h1>' > index.html
[root@localhost html]# systemctl start httpd
虚拟机3—节点服务器
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
[root@localhost ~]# ifup lo:0
[root@localhost ~]# route add -host 172.16.10.20 dev lo:0
[root@localhost ~]# vim /etc/rc.local
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# echo '<h1>This is the second test web!</h1>' > index.html
[root@localhost html]# systemctl start httpd

[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
[root@localhost ~]# yum install -y ipvsadm
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0
[root@localhost network-scripts]# ifup ens33:0
ERROR : [/etc/sysconfig/network-scripts/ifup-eth] Error, some other host (00:0C:29:CE:BB:C0) already uses address 172.16.10.20.
[root@localhost network-scripts]# ifup ens33:0
ERROR : [/etc/sysconfig/network-scripts/ifup-eth] Error, some other host (
[root@localhost network-scripts]# ifup ens33:0
[root@localhost network-scripts]# vim /etc/sysctl.conf
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost network-scripts]# systemctl start ipvsadm
[root@localhost network-scripts]# ipvsadm -C
[root@localhost network-scripts]# ipvsadm -A -t 172.16.10.20:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 172.16.10.20:80 -r 172.16.10.10:80 -g
[root@localhost network-scripts]# ipvsadm -a -t 172.16.10.20:80 -r 172.16.10.50:80 -g
[root@localhost network-scripts]# ipvsadm
[root@localhost network-scripts]# ipvsadm -ln
本文介绍了LVS负载均衡集群,包括集群的含义、分类和结构,重点讲解了NAT模式和DR模式的工作原理。NAT模式下,负载均衡器作为请求的入口和出口,而DR模式下,节点服务器直接响应客户端,避免了负载均衡器成为瓶颈。文章还提及了LVS的调度算法和NFS共享存储服务在LVS-DR中的应用。

1322

被折叠的 条评论
为什么被折叠?



