系统扩展方式:
scale up: 向上扩展
scale out:
集群类型:
LB:load balance 负载均衡集群,
HA:high availability, 高可用集群
HP: 很少用
Availability: 平均无故障时间 / 平均无故障时间 + 故障修复时间
系统:
可扩展性;
可用性
容量
性能
系统运维: 可用 --> 标准化 --> 自动化
构建高可用系统原则: 避免串行化交互
- GSLB:globe service load balance
- SLB:service load balance
Vmvare 网络接口类型
桥接:
仅主机:
nat:
LVS :
四层交换 路由
根据请求报文的目标 IP 和 port 转发至主机集群中的某一个
- net filter:
- PREROUTING --> input
- PREOUTING --> FORWARD --> POSTROUTING
- OUTPUT --> POSTROUTING
- lvs
- ipvsadm/ipvs
ipvsadm: 用户空间的命令行工具
ipvs: 内核中 net filter INPUT 链上
支持 tcp udp ah esp ah_esp
lvs arch :
调度器: director dispatcher blancer
客户端 :CIP
调度器提供给客户端的 IP:VIP
调度器自己 IP:DIP
后端 server:RIP
- lvs type
- lvs-nat
- lvs-dr
- lvs-tun
- lvs-fullnat
- lvs-nat:
多目标的 DNAT
修改请求报文的目标 IP 地址 (可能修改端口) 挑选 出某 RS 的 RIP
RIP 与 DIP 使用私网地址, 且 RS 网关指向 DIP
请求和响应报文都要经由 director 转发
支持端口映射
RS 可以使用任意 OS
RS 的 RIP 与 director 的 DIP 要在同一网段
- lvs-dr:direct routing
- DR:VIP DIP
- RS:VIP RIP
修改请求报文的目标 Mac 地址转发
请求报文经由 dr, 响应报文不经由 dr
每个 RS 都有 RIP 公网私网地址都可 VIP
RS 与 DR 在同一个物理网络中
不支持端口映射
RS 可以是大多数 OS
RS 的网关不能指向 DIP
保证路由器发送到 dr
静态绑定
arptables
修改 RS 主机内核参数
- arp_announce=2 0|1|2
- arp_ignore =1 0|1|2
- lvs(3)
fwm : 防火墙标记
- -j MARK --set-mark 10
- ipvsadm -A -f 10
fwm 定义集群的方法
在 dr 上 net filter 的 mangle 表的 prerouting 定义打标的规则
iptables -t mangle -aA PREROUTING -d $vip -p $protocol --dports $port -j MARK --set-mark
基于 FWM 定义集群服务
ipvsadm -A -f # -s scheduler
功用: 将共享同一组的 RS 的集群服务统一进行调度
session 保持
session 绑定
session 复制
session 服务器
session 绑定: lvs sh 算法
对某一特定服务
lvs persistence:lvs 持久连接
将来自于同一个 client 的请求始终调度到第一次分配的 RS
持久连接模板:
source rs timer ipvsadm -p
持久连接实现方式
每端口持久: ppc persistence port 单服务持久调度
每 FWM 持久: 防火墙标记持久
port affinity
每客户端持久: 单客户端持久调度
dr 上定义了多个集群服务
tcp udp SSH MySQL
lvs 高可用方案
DR:spof 单点故障
高可用集群
RS: 让敌人做健康状态检测, 自动添加移除 RS
1, 基于层次 检查
ip ping
传输层 tcp 检测端口开放与否 nmap
应用层 请求资源判断
2, 检查频率
3, 状态判断 多次检测
下线: ok -- failure -- failure --failure
上线: failure -- ok --ok
权重为 0 下线
RS 健康状态检测脚本
来源: http://www.bubuko.com/infodetail-3099838.html