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