网站空间选择,免费咨询,微信开发者工具官网下载电脑版,免费网站模板制作一、集群的基本原理 集群#xff1a;数据内容是一致的#xff0c;集群可以被替代
分布式#xff1a;各司其职#xff0c;每台服务器存储自己独有的数据#xff0c;对外作为单点被访问是访问整体的数据#xff1b; 分布式是不能被替代的#xff1b;分布式分为MFS、GFS、…一、集群的基本原理 集群数据内容是一致的集群可以被替代
分布式各司其职每台服务器存储自己独有的数据对外作为单点被访问是访问整体的数据 分布式是不能被替代的分布式分为MFS、GFS、ceph; 优点效率快 数据库分布式存储
如果两个人同时修改数据库会出现数据不隔离不能同步的问题这时候就用到了事务隔离、还可以用主从复制、还可以用mycat实习读写分离读写分离主要是php内部会做条件判断、一旦要进行写操作它会去找某一台mysql数据库因为写服务器只有一台如果写服务器崩了就会造成损失这时用到了数据库的高可用-MHA、PXC、MMM这样一旦数据库写服务器出了问题当前服务器就会降级而另一台服务器就会升级为新的写服务器。
会话保持
动态资源要和数据库资源进行联动例购物车——如果会话没有保持php动态资源里没有数据导致它不知道调用哪一个数据库导致你购物车里也没数据。因此我们要想办法保存cookie、sessionsession需要用session服务器——Redis中间件会话是以键值对存储的、
redis也可以做集群哨兵cluster 【注】代理和调度的本质是负载均衡。
LVS、F5四层负载均衡 tcp/ip栈的传输层针对多个应用做负载均衡如80、3306
七层负载均衡如用的是http协议只能通过http协议做负载均衡自己是http服务器、负载均衡被调度方也是http对应的web服务器这种就被称为代理负载均衡
代理负载均衡分为同构代理http、ftp、mysql只是普通端口代理 异构代理(fastcgi、uwsgi):跨程序代理
1.概述
集群cluster也称为群集,表示一群的意思在服务器领域表示大量的服务器的集合体。
2.计算机性能扩展方案
①纵向扩展
②横向扩展---集群
3.企业网站架构器群的由来 4.企业级集群分类
①负载均衡集群LB----Load Balance
②高可用集群HA---High Availability
③高性能集群HP
将各个主机组成集群形成一个系统组合工作。其系统的可扩展性、可用性、容量、性能都会有大规模的提升。
5.集群部署的思路
①可用 然后再优化注意系统内尽量要避免串行化和交互
②标准化
③自动化
6.集群的种类
①负载均衡集群LB
在企业网站架构中提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标获得高并发、高负载LB的整体能力。
例如“DNS轮询”“应用层交换”“反向代理”等都可做负载均衡集群。
LB负载分配依赖于主节点的算法将来自客户机的访问请求分担给多个多个服务器节点从而缓解整个系统的负载压力。
②高可用集群HA
提高应用系统的可靠性尽可能减少终端时间为目标确保服务的连续的性达到高可用HA的容错效果例如“故障切换”“双机热备”“多机热备”等都属于高可用集群技术
HA工作方式包括双工和主从两种模式。双工即所有节点同时在线主从则只有主节点在线但当出现故障时从才切换为从节点。
③高性能集群HP
以提高应用系统的CPU运算速度扩展硬件资源和分析能力为目标获得相当于大型、超级计算机的高性能运算HPC能力。
如“云计算”“网格计算”高性能群集依赖于“分布式运算”、并行计算通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起
实现大型、超级计算机才具备的计算能力。、
7.负载均衡集群实现方式
①硬件方式 F5 A10 Citrix NetScaler array 梭子鱼 绿盟 ......
②软件方式LVS haproxy nginx ats ......
8.负载均衡集群工作的层次划分
传输层LVShaproxy模拟在传输层进行调度 新版nginx也支持
应用层haproxy nginx ats
二、LVS原理详解和LVS的配置
1.LVS基本介绍
①LVSLinux Virtual Server工作在传输层基于TCP和UDP进行调度工作。已经被Linux官方编译入内核作者是章文嵩。
②工作方式根据目标IP和端口转发入后端主机集群服务器池中的某一台主机如何挑选基于某种特定的算法
③LVS附着在netfilter基础上进行工作 ip_vs ipvsadm
2.回顾Netfilter的五个钩子函数
①PREROUTING --- INPUT
②PREROUTING --- FORWARD ---POSTROUTING
③OUTPUT --- POSTROUTING
LVS由工作在用户空间的ipvsadm和内核空间的ipvs组成
ipvsadm用户空间命令工具用于管理LVS集群服务
ipvs工作在内核netfilter INPUT链
查看系统内核是否编译了LVS以及支持的功能
grep -i -A 10 IPVS /boot/config-3.10.0-514.el7.x86_64
通常ipvs模块在Linux内核中被自动装载若没有被装载执行modprobe ip_vs进行装载然后cat /proc/net/ip_vs 查看是否装载成功。
4.LVS架构名词
①调度器director DIP
②RSreal server RIP
③CIPclient IP
④VIPDirector Virutal IP 5.LVS结构类型
①lvs-nat
②lvs-drdirect routing
③lvs-tun
④lvs-fullnat NAT模式
①多目标的DNATreal-server为隐藏的内网私有地址用户请求需要基于NAT地址转换。
②nat模式请求流程通过修改请求报文目标IP地址可能修改目标端口挑选出某个RS的RIP实现转发。
注意事项①RS应该和DIP都使用私网地址并且RS网关须指向DIP ②请求和响应报文都要基于director转发在生产环境通常director需要高可用 ③director支持端口映射RS可以使用任何操作系统 ④RS的RIP和director的DIP必须在同一网络。
原理客户封装一个请求报文数据载荷源IP:CIP目标IP:VIP发送到调度器LVS上在调度器上的INPUT链做DNAT转换然后封装报文变动数据载荷源IP:CIP目标IP:后台某个RIP,调度器利用算法探测后端服务器哪个比较空闲这样报文就可基于导演服务器的某种算法顺利的转发给后端某台服务器。后台某个服务器接收到了报文做一个响应报文数据载荷源IP:后台某个RIP目标IP:CIP,然后发送给LVS调度器在LVS做一个SNAT转换数据载荷源IP:自己的VIP目标IP:CIP,最后发送给客户端
【注】必须要求nat服务器一手托两家请求报文和响应报文都经过DIP,后面RIP的网关必须指向导演nat服务器要开启核心路由转发功能
DR模式
通过修改目标MAC地址来实现调度转发
注意事项①保证前端路由器将目标IP为VIP的请求报文发送给director 解决方案修改RS主机内核参数 ②RS的RIP可以使用私有地址也可以使用公网地址 ③RS跟director必须在同一物理网络中 ④请求报文经由director调度但响应报文一定不能经过director ⑤不支持端口映射 ⑥RS可以是大多数OS ⑦RS网关不能指向director 原理请求报文数据载荷源IP:CIP目标IP:VIP经过层层路由到达LVS调度器它不会做任何ip地址转换只是通过甩锅把报文甩到RIP某一个服务器上这时LVS调度器重新封装报文数据载荷源IP:CIP目标IP:后端某一台RIP;当后端RIP收到请求报文时它会返回一个响应报文数据载荷源IP:自己的RIP目标IPCIP
【注】必须要求每个RIP回环接口上面都绑定一个VIP地址避免RIP绑定的VIP和调度器上的VIP产生局域网IP冲突
流程客户端发送请求报文数据载荷源IP:CIP目标IP:VIP发送到路由器右侧接口路由器会发送一个VIP地址解析对应的ARP广播这时为了防止后面的RIP服务器接到VIP广播就要修改对应的内核参数让其禁止接收ARP广播、禁止回应ARP广播此时只有LVS调度服务器可以收到ARP广播由于此时是在内网通信内网通信走MAC地址所以此时的报文封装形式就发生了变化数据载荷源IP:CIP目标IP:VIP源MAC:路由器右侧接口MAC目标MAC:调度器VIP接口的MAC,然后发送给LVS导演服务器当导演收到后基于调度算法挑选RIP中某一台服务器并封装局域网的MAC地址源MAC调度器自己的MAC目标MAC:RIP某一台服务器的MAC,注意由于回环地址没有MAC地址只有真网卡有MAC地址为了保证真网卡可以顺利把报文传给回环网卡做匹配所以要把真网卡到回环网卡之间开启核心路由转发功能然后重新封装响应报文源IPVIP目标IP:CIP源MAC:真网卡MAC目标MAC:路由器右侧接口的MAC地址 tun模式
不修改请求报文的ip首部通过原有ip头部之外再封装一个ip头部。
价格比较昂贵在企业中走专线在企业中用的少
注意事项①DIP RIP VIP 全是公网地址 ②RS的网关不能指向DIP ③请求报文必须由director调度响应报文必须不能经过director ④不支持端口映射 ⑤RS的OS必须支持隧道功能
原理 lvs-fullnat模式默认内核不支持
Director通过同时修改请求报文的目标地址和源地址进行转发可以实现跨机房部署
注意事项①VIP是公网地址RIP和DIP是私网地址二者无需在同一网络 ②RS接受到请求报文的源地址为DIP因此要响应给DIP ③请求报文和响应报文都必须经由Director ④支持端口映射 ⑤RS可以使用任意OS
原理因为不在同一个网络所以要做双向FullNAT,客户端发请求报文源IPCIP目标iPvip调度器那会做报文更改源IPDIP目标iPRIP,当RIP收到到会返回一个响应报文源IPRIP目标iPDIP,通过层层路由到调度器然后做报文更改源IPvip目标iPcip,最后客户收到响应报文。
6.负载均衡必须要考虑的问题---会话保持
负载均衡集群进行调度尤其在web服务集群调度过程中无法避免的问题就是会话保持。
会话保持解决方案 ①session绑定以ip_hash机制进行绑定会一定程度上损害负载均衡效果 cookieLVS无法实现 ②session集群 ③session服务器较大规模生产环境
7.LVS的调度算法
负载均衡集群进行调度如何挑选后端RS进行调度---基于固定的调度算法
静态方法根据算法本身进行调度
RR轮询 WRR加权轮询 SH源地址hash实现session保持 DH目的地址hash
动态方法根据算法以及各个RS的当前负载状态进行调度 LC最小连接数 WLC加权最小连接 SED最短期望延迟 NQ永不排队 LBLC基于局部性的最少链接 LBLCR带复制的基于局部性最少链接
8.LVS客户端工具---ipvsadm的用法
【注】①在一个ipvs主机中可以定义多个集群服务一个集群服务中一个director至少应该能调度一个RS ②使用客户端工具ipvsadm完成LVS的规则调度。 ③管理LVS集群服务
新增和修改集群
ipvsadm -A|E -t|u|f service-address [-s scheduler] -A 添加 -E 修改 -t 指定tcp -u 指定udp -s指定调度算法
service-address:①如果是tcp -t ip:port ②如果是udp -u ip:port
scheduler调度算法默认是wlc
例如ipvsadm -A -t 173.16.16.88:80 -s rr 添加VIP为173.16.16.88的集群服务基于TCP协议端口为80调度算法为轮询 ipvsadm -E -t 192.168.10.88:80 -s wrr 修改VIP为192.168.10.88集群的调度算法为加权轮询
删除集群
ipvsadm -D -t|u|f service-address -D 删除
例如ipvsadm -D -t 173.16.16.88:80 删除VIP为173.16.16.88并且端口为80的集群
清空所有集群规则
ipvsadm -C
④管理服务器池中的RS
添加和修改
ipvsadm -a|e -t|u| service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
-a添加可调度的服务器节点 -e修改添加的服务器节点 -r指定节点服务器IP地址RIP
-g使用DR模型 -iTUN模型 -mNAT模型 默认是DR模型
-w权重
例如ipvsadm -a -t 192.168.10.88:80 -r 192.168.20.10 -m -w 1 添加服务器池中的RS服务器192.168.20.10被192.168.10.88调度使用NAT模型权重为1
ipvsadm -a -t 192.168.10.88:80 -r 192.168.20.20 -m -w 2 添加服务器池中的RS服务器192.168.20.20被192.168.10.88调度使用NAT模型权重为2
删除RS节点
ipvsadm -d -t|u|f service-address -r server-address
例如ipvsadm -d -t 192.168.10.88 -r 192.168.20.10
⑤查看LVS配置的相关节点和规则
ipvsadm -L [-n] [--stats] [--rate]
动态监控访问数量 watch [-n #] ipvsadm -L -n
-n不反解 -c显示当前的连接 --stats 显示统计数据 --rate统计速率