赞
踩
目录
(1)负载均衡群集(Load Balance Cluster)
(2)高可用群集(High Availiablity Cluster)
(3)高性能运算群集(High Performance Computing Cluster)
(1)负载调度器(Load Balancer或Director)
(1)整个SLB系统由3部分构成:四层负载均衡,七层负载均衡和控制系统
(2)VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。LVS是内核级功能,工作在INPUT链的位置,将发往INPUT的流量进行“处理”
(1)分布式存储: 将数据分散存储在多台独立的设备上 。Ceph,GlusterFS,FastDFS,MogileFS
(2)分布式计算: 将该应用分解成许多小的部分,分配给多台计算机进行处理。 hadoop,Spark
(1)集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的。
(2)分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。
5.部署负载调度服务器(ens33:192.168.227.101 ens36:12.0.0.1)
1.Director Server 和 Real Server 必须在同一个物理网络中。
2.Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过 互联网对 RIP 进行直接访问。
3.所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。
4.Real Server 的网关不允许指向 Director Server IP,即不允许数据包经过 Director S erver。
5.Real Server 上的 lo 接口配置 VIP 的 IP 地址。
1.部署DR负载调度服务器(DR 负载调度服务器:192.168.227.100)
2.部署第一台Web服务器(Web 服务器1:192.168.79.101)
3.部署第二台Web服务器(Web 服务器2:192.168.227.102)
4.在客户机上测试(客户端:192.168.227.103)
由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。
访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。负载均衡层
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。web应用层
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。
都走LVS,调度器有瓶颈
最常用!所有主机共享vip地址,不原路返回LVS调度器。web服务器在同一网段
需要购买公网地址
LVS集群(Linux Virtual server)负载调度器,内核集成,章文嵩(花名正明), 阿里的四层SLB(Server Load Balance)是基于LVS+keepalived实现。
- LVS 官网:http://www.linuxvirtualserver.org/
- 阿里SLB和LVS:https://yq.aliyun.com/articles/1803、https://github.com/alibaba/LVS
VS:Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer(lvs服务器)
RS:Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)
CIP:Client IP(客户机IP)
VIP:Virtual serve IP VS外网的IP
DIP:Director IP VS内网的IP
RIP:Real server IP (真实IP)
rr:轮询(Round Robin)
wrr:加权轮询(Weighted Round Robin)
dh:目的地址哈希调度(destination hashing)
sh:源地址哈希调度(source hashing)
lc:最小连接数调度( Least Connections)
wlc:加权最小连接数调度(Weighted Least Connections)
lblc:基于地址的最小连接数调度(locality-based least-connection)
如果您的应用访问量很高,可以通过配置监听规则将流量分发到不同的云服务器 ECS(Elastic Compute Service 弹性计算服务)实例上。此外,可以使用会话保持功能将同一客户端的请求转发到同一台后端ECS
可以根据业务发展的需要,随时添加和移除ECS实例来扩展应用系统的服务能力,适用于各种Web服务器和App服务器。
可以在负载均衡实例下添加多台ECS实例。当其中一部分ECS实例发生故障后,负载均衡会自动屏蔽故障的ECS实例,将请求分发给正常运行的ECS实例,保证应用系统仍能正常工作
为了提供更加稳定可靠的负载均衡服务,阿里云负载均衡已在各地域部署了多可用区以实现同地域容灾。当主可用区出现机房故障或不可用时,负载均衡仍然有能力在非常短的时间内(如:大约30s中断)切换到另外一个备可用区恢复服务能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区提供服务。
使用负载均衡时,您可以将负载均衡实例部署在支持多可用区的地域以实现同城容灾。此外,建议您结合自身的应用需要,综合考虑后端服务器的部署。如果您的每个可用区均至少添加了一台ECS实例,那么此种部署模式下的负载均衡服务的效率是最高的。
ipvsadm 是在负载调度器上使用的 LVS 群集管理工具,通过调用 ip_vs 模块来添加、删除服务器节点 ,以及查看集群运行状态,在CentOS 7系统中,需安装软件包
- [root@localhost ~]# yum -y install ipvsadm
- [root@localhost ~]# ipvsadm -v
- ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
LVS 群集的管理工作主要包括创建虚拟服务器、添加服务器节点、查看群集节点状态、 删除服务器节点和保存负载分配策略。
选项 | 解释 |
---|---|
-A | 添加虚拟服务器 |
-D | 删除整个虚拟服务器 |
-s | 指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc) |
-a | 表示添加真实服务器(节点服务器) |
-d | 删除某一个节点 |
-t | 指定 VIP地址及 TCP端口 |
-r | 指定 RIP地址及 TCP端口 |
-m | 表示使用 NAT群集模式 |
-g | 表示使用 DR模式 |
-i | 表示使用 TUN模式 |
-w | 设置权重(权重为 0 时表示暂停节点) |
-p 60 | 表示保持长连接60秒 |
-l | 列表查看 LVS 虚拟服务器(默认为查看所有) |
-n | 以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln |
可扩展性—集群的横向扩展能力
可用性—无故障时间 (SLA service level agreement)
性能—访问响应时间
容量—单位时间内的最大并发吞吐量(C10K 并发问题)
分布式应用-服务按照功能拆分,使用微服务(单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值服务)
分布式静态资源--静态资源放在不同的存储集群上
分布式数据和存储--使用key-value缓存系统
分布式计算--对特殊业务使用分布式计算,比如Hadoop集群
PS: 对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。
如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪 一台去完成响应,并且一台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败
- 1. #关闭防火墙
- systemctl stop firewalld
- setenforce 0
-
- 2. #安装nfs服务
- yum install nfs-utils rpcbind -y
-
- 3. #新建目录,并创建站点文件
- cd /opt/
- mkdir 123 456
- echo "this is 123" > 123/index.html
- echo "this is 456" > 456/index.html
-
- 4. #开启服务
- systemctl start rpcbind
- systemctl start nfs
-
- 5. #授权
- chmod 777 123/ 456/
-
- 6. #设置共享策略
- vim /etc/exports
- /opt/123 192.168.227.0/24(rw,sync)
- /opt/456 192.168.227.0/24(rw,sync)
-
- 7. #发布服务
- exportfs -rv
- 1. #关闭防火墙
- systemctl stop firewalld
- setenforce 0
-
- 2. #安装httpd、nfs-utils和rpcbind程序
- yum install -y httpd
- yum install nfs-utils rpcbind -y
-
- 3. #查看nfs服务
- showmount -e 192.168.227.104
-
- 4. #挂载站点
- #法一:临时挂载
- df
- cat /var/www/html/index.html
- mount 192.168.227.104:/opt/123 /var/www/html/
- #法二:永久挂载
- vim /etc/fstab
- 192.168.227.104:/opt/123/ /var/www/html/ nfs defaults,_netdev 0 0
- mount -a
-
- 5. #开启httpd服务并设置开机自启动
- systemctl start httpd
- systemctl enable httpd
-
- 6. #指定网关
- vim /etc/sysconfig/network-scripts/ifcfg-ens33
- GATEWAY=192.168.227.101
- #DNS1=8.8.8.8
-
- 7. #重启网络服务
- systemctl restart network
- 1. #关闭防火墙
- systemctl stop firewalld
- setenforce 0
-
- 2. #安装httpd、nfs-utils和rpcbind程序
- yum install -y httpd
- yum install nfs-utils rpcbind -y
-
- 3. #查看nfs服务
- showmount -e 192.168.227.104
-
- 4. #挂载站点
- #法一:临时挂载
- df
- cat /var/www/html/index.html
- mount 192.168.227.104:/opt/456 /var/www/html/
- #法二:永久挂载
- vim /etc/fstab
- 192.168.227.104:/opt/456/ /var/www/html/ nfs defaults,_netdev 0 0
- mount -a
-
- 5. #开启httpd服务并设置开机自启动
- systemctl start httpd
- systemctl enable httpd
-
- 6. #指定网关
- vim /etc/sysconfig/network-scripts/ifcfg-ens33
- GATEWAY=192.168.227.101
- #DNS1=8.8.8.8
-
- 7. #重启网络服务
- systemctl restart network
- 1. #关闭防火墙
- systemctl stop firewalld
- setenforce 0
-
- 2. #安装ipvsadm
- yum install ipvsadm.x86_64 -y
-
- 3. #打开路由转发功能
- vim /etc/sysctl.conf
- net.ipv4.ip_forward = 1
- sysctl -p
-
- 4. #防火墙做策略
- #清空策略
- iptables -F
- #添加策略
- iptables -t nat -A POSTROUTING -s 192.168.227.0/24 -o ens36 -j SNAT --to 12.0.0.1
- #查看策略
- iptables -nL -t nat
-
- 5. #加载LVS内核模块
- modprobe ip_vs
- cat /proc/net/ip_vs
-
- 6. #开启ipvsadm服务
- ipvsadm-save > /etc/sysconfig/ipvsadm
- systemctl start ipvsadm.service
-
- 7. #清空策略
- ipvsadm -C
-
- 8. #制定策略
- #指定IP地址 外网的入口 -s rr 轮询
- ipvsadm -A -t 12.0.0.1:80 -s rr
- #先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式
- ipvsadm -a -t 12.0.0.1:80 -r 192.168.227.102:80 -m
- ipvsadm -a -t 12.0.0.1:80 -r 192.168.227.103:80 -m
- #开启服务
- ipvsadm
-
- 9. 查看策略
- ipvsadm -ln
客户机发起请求,经过调度服务器(lvs),经过算法调度,去访问真实服务器(RS)
由于不原路返回,客户机不知道,真实主机的ip地址,
所以只能通过调度服务器的外网ip(vip)去反回报文信息。
- 客户端---->外网地址12.0.0.100 12.0.0.100---->客户端
- #12.0.0.18-----客户端 客户端会直接丢弃
- 对每台真实服务器配置外网地址 12.0.0.100
- 12.0.0.100------>客户端
问题:IP地址冲突
在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地 址。势必会造成各服务器ARP通信的紊乱
当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播
解决方法:
对节点服务器进行处理,使其不响应针对VIP的ARP请求
用虚接口lo:0承载VIP地址
设置内核参数arp_ ignore=1: 系统只响应目的IP为本地IP的ARP请求
- 路由器发送ARP请求(广播)
- ARP---->广播去找ip地址解析成mac地址
- 默认使用调度服务器上的外网地址(vip地址)响应,
- 需要在真实服务器上修改内核参数
- 使真实服务器只对自己服务器上的真实IP地址响应ARP解析。
RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,路由器收到ARP请求后,将更新ARP表项,原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址。路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效
解决方法:
对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
- 路由器上绑定了 真实服务器1的mac信息,
- #请求到达真实服务器
- 在真实服务器上修改内核参数
- 只对所有服务器真实网卡上的地址进行反馈,解析
web服务器1:192.168.227.101
web服务器2:192.168.227.102
DR负载调度服务器:192.168.227.100
vip:192.168.227.10
客户端:192.168.227.103
- 1. #关闭防火墙
- systemctl stop firewalld.service
- setenforce 0
-
- 2. #安装ipvsadm工具
- yum install ipvsadm.x86_64 -y
-
- 3. #配置虚拟IP地址(VIP:192.168.227.10)
- cd /etc/sysconfig/network-scripts/
- cp ifcfg-ens33 ifcfg-ens33:0
- vim ifcfg-ens33:0
- #删除UUID,dns与网关,注意子网
- NAME=ens33:0
- DEVICE=ens33:0
- IPADDR=192.168.227.10
- NETMASK=255.255.255.255
-
- 4. #重启网络服务、启动网卡
- systemctl restart network
- ifup ifcfg-ens33:0
-
- 5. #调整/proc响应参数
- #对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能
- vi /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
-
- 6. #刷新配置
- sysctl -p
-
- 7. #加载模块
- modprobe ip_vs
- cat /proc/net/ip_vs
-
- 8. #配置负载分配策略,并启动服务
- ipvsadm-save > /etc/sysconfig/ipvsadm
- systemctl start ipvsadm.service
-
- 9. #清空ipvsadm,并做策略
- ##添加真实服务器-a 指定VIP地址及TCP端口-t 指定RIP地址及TCP端口 -r 指定DR模式-g
- ipvsadm -C
- ipvsadm -A -t 192.168.227.10:80 -s rr
- ipvsadm -a -t 192.168.227.10:80 -r 192.168.227.101:80 -g
- ipvsadm -a -t 192.168.227.10:80 -r 192.168.227.102:80 -g
-
- 10. #保存设置
- ipvsadm
- ipvsadm -ln
- ipvsadm-save > /etc/sysconfig/ipvsadm
- 1. #关闭防火墙
- systemctl stop firewalld.service
- setenforce 0
-
- 2. #安装httpd、开启服务
- yum install httpd -y
- systemctl start httpd
-
- 3. #创建一个站点文件
- vim /var/www/html/index.html
- this is 101web1
-
- 3. #添加回环网卡,修改回环网卡名,IP地址,子网掩码
- cd /etc/sysconfig/network-scripts/
- cp ifcfg-lo ifcfg-lo:0
- vim ifcfg-lo:0
- DEVICE=lo:0
- IPADDR=192.168.227.10
- NETMASK=255.255.255.255
- NETWORK=127.0.0.0
-
- systemctl restart network
-
- 4. #设置路由
- route add -host 192.168.227.10 dev lo:0
- route -n
-
- 5. #开机执行命令
- vim /etc/rc.d/rc.local
- /usr/sbin/route add -host 192.168.227.10 dev lo:0
-
- chmod +x /etc/rc.d/rc.local
-
- 6. #调整 proc 响应参数
- #添加系统只响应目的IP为本地IP的ARP请求
- #系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
- vim /etc/sysctl.conf
-
- net.ipv4.conf.all.arp_ignore = 1
- net.ipv4.conf.all.arp_announce = 2
- net.ipv4.conf.default.arp_ignore = 1
- net.ipv4.conf.default.arp_announce = 2
- net.ipv4.conf.lo.arp_ignore = 1
- net.ipv4.conf.lo.arp_announce = 2
-
- 7. #刷新配置
- sysctl -p
- 1. #关闭防火墙
- systemctl stop firewalld.service
- setenforce 0
-
- 2. #安装httpd、开启服务
- yum install httpd -y
- systemctl start httpd
-
- 3. #创建一个站点文件
- vim /var/www/html/index.html
- this is 102web2
-
- 3. #添加回环网卡,修改回环网卡名,IP地址,子网掩码
- cd /etc/sysconfig/network-scripts/
- cp ifcfg-lo ifcfg-lo:0
- vim ifcfg-lo:0
- DEVICE=lo:0
- IPADDR=192.168.79.10
- NETMASK=255.255.255.255
- NETWORK=127.0.0.0
-
- systemctl restart network
-
- 4. #设置路由
- route add -host 192.168.79.10 dev lo:0
- route -n
-
- 5. #开机执行命令
- vim /etc/rc.d/rc.local
- /usr/sbin/route add -host 192.168.79.10 dev lo:0
-
- chmod +x /etc/rc.d/rc.local
-
- 6. #调整 proc 响应参数
- #添加系统只响应目的IP为本地IP的ARP请求
- #系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
- vim /etc/sysctl.conf
-
- net.ipv4.conf.all.arp_ignore = 1
- net.ipv4.conf.all.arp_announce = 2
- net.ipv4.conf.default.arp_ignore = 1
- net.ipv4.conf.default.arp_announce = 2
- net.ipv4.conf.lo.arp_ignore = 1
- net.ipv4.conf.lo.arp_announce = 2
-
- sysctl -p
使用浏览器访问192.168.227.10
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。