Loading... <p>简介</p> <p> Cluster是什么?</p> <p> Cluster其实就是组织多个主机构建高实现性能、高可靠、多并发、大容量的同一功能的系统。</p> <p></p> <p> 常见的集群类型:</p> <p> (1) Load Balancing: 负载均衡集群</p> <p> (2) High Avaiability: 高可用集群</p> <p> (3) High Performance: 高性能集群(现在已很少使用)</p> <p> (4) 分布式存储与运算 </p> <p> </p> <p> 常见集群的扩展方式:</p> <p> (1)Scale Up:向上扩展、垂直扩展、纵向扩展;用性能好的主机替代性能差的主机,性价比差;</p> <p> (2)Scale Out: 向外扩展、水平扩展;</p> <p></p> <p> lvs:Linux Virtual Server</p> <p> 工作原理:四层路由或四层交换;依赖于netfilter实现根据目标IP或PORT实现请求转发至后端的多个主机中的某一个主机(根据挑选算法挑选主机)</p> <p> </p> <p> Director数据包转发过程:PREATING——>①———>②———>③———–>④——–>POSTROUTING</p> <p> 当客户端请求到Director,Director内核依靠netfilter将主机从PREROUTING经由路由之后到达INPUT,当到达INPUT之后,ipvs发现是去往集群主机的请求,并将请求强制发往至路由,通过POSTROUTING发往后端主机。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160544-91.png" title="1434684666675584.png" alt="lvs.png" /></p> <p></p> <p>一、lvs的类型:</p> <p> 1)ipvs-nat:MASQUERADE 地址伪装</p> <p> 类似于DNAT,是一种多目标主机的DNAT,通过修改请求报文的目标IP至基于调度方法选出来某RS的RIP进行转发</p> <p> 特点:(1)RS必须使用私有地址;网关必须指向DIP;</p> <p> (2)请求和响应的报文都经由Director转发;高负载场景中,Director易成为性能瓶颈</p> <p> (3)支持端口映射</p> <p> (4)RS可以是任意类型的OS(操作系统)</p> <p> (5)RS的RIP和Director的DIP要在同一网段</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160545-15.png" title="1434685994682434.png" alt="lvs-nat.png" /></p> <p></p> <p> 2)ipvs-dr: Direct Routing 直接路由</p> <p> 不修改请求报文的IP首部,而是通过直接封装帧首部完成转发;目标MAC是基于调度方法选出某RS的网络接口的MAC地址</p> <p> 特点:(1)保证前段路由器将目标地址为VIP的报文通过ARP解析后统统发往Director</p> <p> 解决方案:arp解析</p> <p> 在网关路由器上绑定Director的MAC地址</p> <p> 利用arptables在每个RS制定规则</p> <p> 修改RS的内核参数</p> <p> (2)RS的RIP可以是私有地址;也可以是公网地址,此时通过互联网上的主机对此可发起管理请求;</p> <p> (3)RS与Director必须在同一物理网络中;</p> <p> (4)请求报文必须经由Director转发,而响应报文必须不可能经由Director;</p> <p> (5)不支持端口映射;</p> <p> (6)RS可以是大多数的OS;</p> <p> (7)RS的网关决不能指向Director;</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160546-40.png" title="1434692060109624.png" alt="lvs-tun.png" /></p> <p> </p> <p> 3)ipvs-tun: tunneling 隧道</p> <p> 不修改请求报文的IP首部,而是通过IP隧道机制在IP外部再封装一个IP首部(SIP:DIP, DEST:RIP);经由互联网交给选定的RS</p> <p> 特点:(1)RIP,DIP,VIP必须都是公网IP;</p> <p> (2)RS的网关不能也不可能指向DIP;</p> <p> (3)请求报文必须经由Director调度,而响应报文必须不能经由Director;</p> <p> (4)不支持端口映射;</p> <p> (5)RS的OS(操作系统)必须能够支持隧道功能;</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160546-69.png" title="1434692582123728.png" alt="lvs-ipip.png" /></p> <p></p> <p>4)lvs-fullnat: 原地址与目标地址都进行替换(以后补充)</p> <p></p> <p></p> <p>二、lvs的调度方法:</p> <p> 1)静态方法:仅根据算法本身进行调度</p> <p> (1)RR: round robin, 轮询、轮叫、轮流;</p> <p> (2)WRR:weighted RR, 加权轮询;Overhead=connection/weighted,最小的会被挑中;</p> <p> (3)SH: source hashing;表示来源于同一个IP的请求始终发往第一个调度时请求的RS,从而实现了SESSION绑定;</p> <p> (4)DH: destination hashing;表示根据目标主机进行调度,将发往同一个目标地址的请求都转发至后端主机;</p> <p> </p> <p> 2)动态方法:根据算法及各RS的自身负载状况进行调度</p> <p> (1)LC: least connection;最少连接;Overhead=actcon*256+inactcon,结果小的将会被挑中;</p> <p> (2)WLC: weighted LC;加权最少连接;Overhead=(actcon*256+inactcon)/weighted,结果小的将会被挑中;</p> <p> (3)SED: Shortest Expection Delay 最段期望延迟;Overhead=(actcon+1)*256/weighted,结果小的将会被挑中;</p> <p> (4)NQ: Nerver Queue 永不排队;一开始每台RS都解释请求,往后都使用SED </p> <p></p> <p>三、ipvs管理工具介绍</p> <p> ipvsadm:工作在用户空间,定义转发规则的程序;</p> <p> ipvs:工作在内核空间,根据规则完成调度请求的程序;</p> <p></p> <p>ipvsadm用法: </p> <p> 管理服务器集群:</p> <p> ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]</p> <p> ipvsadm -D -t|u|f service-address</p> <p> -A: 添加</p> <p> -E:修改</p> <p> -D:删除</p> <p> -t:TCP协议的端口</p> <p> -u: UDP协议的端口</p> <p> -f:FWM,防火墙标记,标记用数字来表示,将多个端口绑定在一起定义成一个集群服务使用</p> <p> server-address: IP:[PORT]</p> <p> -s: 制定调度方法,默认为wlc</p> <p></p> <p> 管理指定集群服务的RS:</p> <p> ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]</p> <p> ipvsadm -d -t|u|f service-address -r server-address</p> <p> -a:添加RS</p> <p> -e:修改RS</p> <p> -d:删除RS</p> <p> -t|u|f service-address:引用此前定义过的集群服务</p> <p> -r server-address :制定RS的地址</p> <p> [-g|i|m]:指定lvs类型</p> <p> -w weight: 指定权重;</p> <p> </p> <p> 保存RS及CS:</p> <p> -S save: </p> <p> ipvsadm -S > /etc/sysconfig/ipvsadmin.v1 </p> <p> ipvsadm-save > /etc/sysconfig/ipvsadmin.v1 </p> <p> service ipvsadm save </p> <p> -R: restore</p> <p> ipvsadm -R < /etc/sysconfig/ipvsadmin.v1 </p> <p> ipvsadm-restore < /etc/sysconfig/ipvsadmin.v1 </p> <p> service ipvsadm start </p> <p></p> <p> 清空规则:</p> <p> ipvsadm -C <span class="Apple-tab-span"> </span></p> <p> 显示规则:</p> <p> ipvsadm -L |l [options]</p> <p> options:</p> <p> -c: 列出当前所有的connection</p> <p> –stats:列出CS及RS的连接统计数据</p> <p> –rate:列出CS及RS的连接、报文及字节速率</p> <p> -n –numeric: 数字格式显示</p> <p> –exact: 精确值</p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信