基于lvs + keepalived的企业级lb集群实战


1 / 8 基于 LVS + Keepalived 的企业级 LB 集群实战 By Uplooking 杨生 yangsheng@uplooking.com 2 / 8 目 录 1 LVS 概述.....................................................................................................................................3 2 LVS 三种模式..............................................................................................................................3 3 LVS 集群配置 VS/NAT...............................................................................................................3 3.1 项目环境.........................................................................................................................3 3.2 准备工作(集群中所有主机).................................................................................... 4 3.3 RS 配置............................................................................................................................4 3.4 Director 分发器配置...................................................................................................... 4 3.5 测试.................................................................................................................................4 3.6 小结.................................................................................................................................5 4 LVS 集群配置 VS/DR.................................................................................................................5 4.1 项目环境.........................................................................................................................5 4.2 准备工作(集群中所有主机).................................................................................... 6 4.3 RS 配置............................................................................................................................6 4.4 Director 分发器配置...................................................................................................... 6 4.5 测试.................................................................................................................................6 4.6 小结.................................................................................................................................6 5 LVS 十种调度算法介绍..............................................................................................................7 6 LVS + KeepAlived......................................................................................................................... 8 3 / 8 1 LVS 概述 LVS 是 Linux 内核的一部分,因此性能较高,用以实现负载均衡(LB)集群。 Linux 虚拟服务器(即分发器或调度器): 它不真正提供服务,但它接受客户的访问, 为整个集群提供一个唯一的入口。虚拟服务器和真实服务器(Real Server)通信。 真实服务器(Real Server):它真正提供服务,集群中每个 Real Server 可以是一台物理 主机,也可以是虚拟机。 2 LVS 三种模式 VS/NAT: 网络地址转换模式, 进站/出站的数据流量经过分发器 VS/DR: 直接路由模式,只有进站的数据流量经过分发器 VS/TUN: 隧道模式,只有进站的数据流量经过分发器 3 LVS 集群配置 VS/NAT ============================================================================= VS/NAT(HTTP) ============================================================================= 3.1 项目环境 分发器 Directory: eth0: VIP:192.168.2.220 eth1: DIP:1.1.1.100 真实服务器 Real Server1: eth0: 1.1.1.10 真实服务器 Real Server2: eth0: 1.1.1.20 4 / 8 真实服务器 Real Server3: eth0: 1.1.1.30 3.2 准备工作(集群中所有主机) IP, hostname, hosts, iptables, SELinux 3.3 RS 配置 配置好网站服务器,测试所有 RS//为了看到测试效果,建议提供不同的页面 默认网关均指向 Directory 的 DIP 3.4 Director 分发器配置 配置 VIP 和 DIP [root@tianyun ~]# ip addr add dev eth0 192.168.2.220/24 [root@tianyun ~]# ip addr add dev eth0 1.1.1.10/24 [root@tianyun ~]# grep 'ip_forward' /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@tianyun ~]# sysctl -p //确保打开路由转发 [root@tianyun ~]# yum -y install ipvsadm //确保 LoadBalancer 仓库可用 定义 LVS 的分发策略 [root@tianyun ~]# ipvsadm -A-t 192.168.2.220:80 -s rr [root@tianyun ~]# ipvsadm -a -t 192.168.2.220:80 -r 1.1.1.10 -m [root@tianyun ~]# ipvsadm -a -t 192.168.2.220:80 -r 1.1.1.10 -m [root@tianyun ~]# ipvsadm -a -t 192.168.2.220:80 -r 1.1.1.10 -m [root@tianyun ~]# service ipvsadm save [root@tianyun ~]# [root@tianyun ~]# ipvsadm -L IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP localhost:http rr -> localhost:http Masq 1 0 0 -> localhost:http Masq 1 0 0 -> localhost:http Masq 1 0 0 [root@tianyun ~]# ipvsadm -L-n [root@tianyun ~]# ipvsadm -L-n --stats [root@tianyun ~]# ipvsadm -L-n --rate //看速率 [root@tianyun ~]# ipvsadm -Ln -c //查看 LVS 的连接条目 [root@tianyun ~]# watch -n.5 'ipvsadm -Ln -c' 3.5 测试 [root@client ~]# elinks -dump http://192.168.2.220/ [root@client ~]# ab -c 1000 -n 1000 http://192.168.2.220/ 5 / 8 3.6 小结 VS/NAT 模式的原理是:当收到 Client 请求时,Director 将数据包的目标 IP 由 VIP 转换为 选中的 Real Server 的 RIP 来实现分发,要求 RS 将网关指向 Director 的 DIP。 特点是:配置简单,所有的入站、出站数据包都经过分发器。当数据量比较大时,分发 器可能会出现网络瓶颈!因 而支持的 RS 数量少。 4 LVS 集群配置 VS/DR ============================================================================= VS/DR(HTTP) ============================================================================= DR 模式要求所有节点必须在同一个网段及广播域 4.1 项目环境 Client 192.168.122.1 Director 分发器 主 192.168.122.10 备 192.168.122.20 lo:0 VIP 192.168.122.100/32 Real Server 192.168.122.30 192.168.122.40 192.168.122.50 lo:0 VIP 192.168.122.100/32 6 / 8 4.2 准备工作(集群中所有主机) IP, hostname, hosts, iptables, SELinux 4.3 RS 配置 配置好网站服务器,测试所有 RS//为了看到测试效果,建议提供不同的页面 [root@tianyun ~]# ip addr add dev lo 192.168.122.100/32 //在 lo 接口上绑定 VIP [root@tianyun ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@tianyun ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 4.4 Director 分发器配置 [root@tianyun ~]# ip addr add dev lo 192.168.122.100/32 //配置 VIP 和 DIP [root@tianyun ~]# yum -y install ipvsadm //确保 LoadBalancer 仓库可用 定义 LVS 的分发策略 [root@tianyun ~]# ipvsadm -C [root@tianyun ~]# ipvsadm -A-t 192.168.122.100:80 -s rr [root@tianyun ~]# ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.30 -g [root@tianyun ~]# ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.40 -g [root@tianyun ~]# ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.50 -g [root@tianyun ~]# service ipvsadm save Saving IPVS table to /etc/sysconfig/ipvsadm: [OK] [root@tianyun ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.220:80 rr -> 192.168.2.30:80 Route 1 0 0 -> 192.168.2.20:80 Route 1 0 0 -> 192.168.2.10:80 Route 1 0 0 [root@tianyun ~]# ipvsadm -L-n [root@tianyun ~]# ipvsadm -L-n --stats [root@tianyun ~]# ipvsadm -L-n --rate //查看速率 [root@tianyun ~]# ipvsadm -Ln -c //查看 LVS 的连接条目 [root@tianyun ~]# watch -n.5 'ipvsadm -Ln -c' 4.5 测试 [root@client ~]# elinks -dump http://192.168.2.220/ [root@client ~]# ab -c 1000 -n 1000 http://192.168.2.220/ 4.6 小结 VS/DR 模式的原理是: 当一个 client 发送一个 WEB 请求到 VIP,LVS 服务器根据 VIP 选 择对应的 real-server 的 Pool,根据算法,在 Pool 中选择一台 Real-server,然后将 client 的请 求包发给选择的 Real-server,最后选择的 Real-server 把应答包直接传给 client。 五、LVS 调度算法(扩展知识) ======================================= 7 / 8 5 LVS 十种调度算法介绍 1. 轮叫调度(Round Robin)(简称 rr) 调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它 均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。 2. 加权轮叫(Weighted Round Robin)(简称 wrr) 调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这 样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以 自动问询真实服务器的负载情况,并动态地调整其权值。 3. 最少链接(Least Connections)(LC) 调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务 器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接” 调度算法可以较好地均衡负载。 4.加权最少链接(Weighted Least Connections)(WLC) 在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法 优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负 载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。 5. 基于局部性的最少链接(Locality-Based Least Connections)(LBLC) “基于局部性的最少链接”调度算法是针对目标 IP 地址的负载均衡,目前主要用于 Cache 集群系统。该算法根据请求的目标 IP 地址找出该目标 IP 地址最近使用的 服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在, 或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器。 6. 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication) (LBLCR) “带复制的基于局部性最少链接”调度算法也是针对目标 IP 地址的负载均衡,目前主 要用于 Cache 集群系统。它与 LBLC 算法的不同之处是它要维护从一个目标 IP 地址到一组服务器的映射,而 LBLC 算法维护从一个目标 IP 地址到一台服务器的映射。 该算法根据请求的目标 IP 地址找出该目标 IP 地址对应的服务器组,按 “最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该 服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台 服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组 有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复 制的程度。 7. 目标地址散列(Destination Hashing)(DH) “目标地址散列”调度算法根据请求的目标 IP 地址,作为散列键(Hash Key)从静态分 配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求 发送到该服务器,否则返回空。 8 / 8 8. 源地址散列(Source Hashing)(SH) “源地址散列”调度算法根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的 散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送 到该服务器,否则返回空。 9. 最短的期望的延迟(Shortest Expected Delay Scheduling SED)(SED) 基于 wlc 算法。这个必须举例来说了 ABC 三台机器分别权重 123 ,连接数也分别是 123。那么如果使用 WLC 算法的话一个 新请求进入时它可能会分给 ABC 中的任意一个。使用 sed 算法后会进行这样一个运算 A(1+1)/1 B(1+2)/2 C(1+3)/3 根据运算结果,把连接交给 C。 10.最少队列调度(Never Queue Scheduling NQ)(NQ) 无需队列。如果有台 realserver 的连接数=0 就直接分配过去,不需要在进行 sed 运算。 6 LVS + KeepAlived 敬请关注下次公开课
还剩7页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

zjd168

贡献于2016-11-29

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf