概述
LB(Load Balance)负载均衡:提高服务的并发能力
HA(High Availability)高可用:提升服务的在线能力(可用性)
在线时间/(在线时间+故障处理时间)
99%,99.9%,99.99%
HPC(High Performance)高性能计算:
向量机
并行处理集群
分布式文件系统
将大任务切割成小任务,分别进行处理的机制
Health Check健康检查
node:节点
DAS(Direct Attatched Storage)直接存储设备
NAS(Network Attatched Storage)网络存储设备
split-brain(脑裂)
stonith(爆头)
fencing(隔离)
节点级别(stonith)
资源级别
为了避免集群分裂,集群至少有3个节点(奇数个)
分布式存储:分布式文件系统
负载均衡器:
调度算法(rr,wrr)
硬件设备:
F5,BIG IP
Citrix,Netscaler
A10
软件设备
四层:
LVS(工作在内核,INPUT链)
LVS和iptables不能同时使用
七层:反向代理?
Nginx,Haproxy
LVS(Linux Virtual Server)
director(调度者)
realserver(真实服务器)
ipvsadm:管理集群服务的命令行工具
ipvs:内核
VIP(Virtual IP)
RIP(Real IP)
CIP(Client IP)
DIP(Director IP)
LVS类型:
- LVS-NAT(Network address Translation)地址转换
集群节点跟Director在同一个IP网络中
RIP通常是私有地址,仅用于各集群节点间通信
director位于client和real server之间,处理所有的进出请求
realserver网关必须指向DIP
支持端口映射
realserver可以使用任意OS
较大规模应用场景中,director易成为系统瓶颈 - LVS-DR(Direct routing)直接路由
集群节点和director必须在同一个物理网络中
RIP可以使用公网地址,实现便捷的远程管理和监控
Director只负责入站请求,响应报文则由RealServer直接发往客户端
集群节点不能将网关指向Director,直接使用前端网关
Director不支持端口映射
集群节点可以是大多数操作系统 - LVS-TUN(IP tunneling)隧道
集群节点不需要在同一物理网络(可以跨越互联网)
RIP必须是公网地址
Director仅处理入站请求,响应报文则由RealServer直接发往客户端
realserver网关不能指向Director
只有支持隧道功能的OS才能用于RealServer
不支持端口映射
活动链接(active):
非活动链接(inacitive)
固定调度方法(静态调度方法):
- RR:轮询
- WRR:Weight,加权
- SH:Source Hash,源地址hash–session affinity
- DH:Destination hashing目标地址hash:将同样的请求发送至同一个IP地址
动态调度方法 - Least Connection最少连接:active*256+inactive,谁的小,挑谁
- wlc(weight least connection)加权最少连接:(active*256+inactive)/weight,谁的小,挑谁
- sed最短期望延迟:(active+1)*256/weight
- nq(never queue)永不排队:改进sed,每个人先发送一个连接,接着再使用sed
- lblc(locality-Based Least Connection):基于本地的最少连接
- lblcr(locality-Based Least Connection with replication scheduling):带复制功能的最少连接
默认调度方法:wlc
ipvsadm:
管理集群服务
添加:-A -t|u|f service-address [-s scheduler]
-t:TCP协议集群
-u:UDP协议集群
-f:FireWallMark,防火墙标记
对于TCP|UDP,service-address:IP:Port
对于防火墙标记,service-address:Mark Number
修改:-E
删除:-D -t|u|f service-address
#添加集群服务
ipvsadm -A -t 192.168.0.103:80 -s rr
管理集群服务中的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m]
-t|u|f service-address:前文定义好的某集群服务
-r server-address:某RS的地址,在NAT模型中,可使用IP:Port实现端口映射
[-g|i|m]–LVS类型
-g:DR
-i:TUN
-m:NAT
[-w weight]:定义服务器权重
修改:-e
删除:-d
-t|u|f service-address -r server-address
#向集群服务中添加server
ipvsadm -a -t 192.168.0.103 -r 172.16.100.2 -m
ipvsadm -a -t 192.168.0.103 -r 172.16.100.3 -m
查看:-L|l
-n:数字格式显示主机地址和端口
–stats:统计数据
–reate:统计速率
–timeout:显示TCP,tcpfin和udp的会话超时时长
–daemon:显示进程状态
-c:显示当前IPVS的连接状况
删除所有集群服务
-C:清空ipvs规则
保存规则
-S
# ipvsadm -S > /path/to/somefile
载入此前的规则:
-R
#ipvsadm -R < /path/to/somefile
注:各节点时间偏差不能超出1秒
NTP(Network Time Protocol):
#注:三台虚拟机先使用桥接的方式连接网络,安装完httpd和telnet后,然后再修改为host-only模式
#三台服务器同步时间
[root@lotus ~]# ntpdate -u ntp.aliyun.com
#在两台RS上安装httpd和tlenet-server
[root@lotus ~]# yum install -y httpd telnet-server
#修改RS1httpd的默认页面【/var/www/html/index.html】,RS2配置同RS1
[root@lotus ~]#echo "RS1.lotus.com" > /var/www/html/index.html
#关闭selinux
[root@lotus ~]#setenforce 0
#在director主机上通过ipvsadm添加虚拟主机(director)和后端主机(RS1,RS2)
[root@mail ~]# ipvsadm -A -t 192.168.0.103:80 -s rr
[root@mail ~]# ipvsadm -a -t 192.168.0.103:80 -r 172.16.100.4:80 -m
[root@mail ~]# ipvsadm -a -t 192.168.0.103:80 -r 172.16.100.2:80 -m
[root@mail ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.103:80 rr
-> 172.16.100.2:80 Masq 1 1 4
-> 172.16.100.4:80 Masq 1 0 4
配置完成后,通过浏览器访问,因使用的是RR算法,先获得RS1,然后RS2
#调整算法为wrr,RS1的权重为1,RS2的权重为3,通过网页访问时,会优先高度RS2 3次,然后再调度RS1 1次
[root@mail ~]# ipvsadm -E -t 192.168.0.103:80 -s wrr
[root@mail ~]# ipvsadm -e -t 192.168.0.103:80 -r 172.16.100.4:80 -m -w 3
[root@mail ~]# ipvsadm -e -t 192.168.0.103:80 -r 172.16.100.2:80 -m -w 1
[root@mail ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.103:80 wrr
-> 172.16.100.2:80 Masq 1 0 0
-> 172.16.100.4:80 Masq 3 0 0
#通过ab工具进行并发测试,测试结果为2500-7500正好1:3
[root@mail ~]# ab -n 10000 -c 100 http://192.168.0.103/index.html
[root@mail ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.103:80 wrr
-> 172.16.100.2:80 Masq 1 0 2500
-> 172.16.100.4:80 Masq 3 0 7500
#保存ipvsadm脚本
[root@mail ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
#查看保存结果
[root@mail ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.0.103:80 -s wrr
-a -t 192.168.0.103:80 -r 172.16.100.2:80 -m -w 1
-a -t 192.168.0.103:80 -r 172.16.100.4:80 -m -w 3
#清空ipvsadm规则
[root@mail ~]# ipvsadm -C
[root@mail ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
#重新载入ipvsadm规则
[root@mail ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
[root@mail ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.103:80 wrr
-> 172.16.100.2:80 Masq 1 0 0
-> 172.16.100.4:80 Masq 3 0 0
最后
以上就是瘦瘦玉米为你收集整理的Linux学习-集群(一)的全部内容,希望文章能够帮你解决Linux学习-集群(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复