Linux学习-集群

Posted 丢爸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习-集群相关的知识,希望对你有一定的参考价值。

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类型:

  1. LVS-NAT(Network address Translation)地址转换
    集群节点跟Director在同一个IP网络中
    RIP通常是私有地址,仅用于各集群节点间通信
    director位于client和real server之间,处理所有的进出请求
    realserver网关必须指向DIP
    支持端口映射
    realserver可以使用任意OS
    较大规模应用场景中,director易成为系统瓶颈
  2. LVS-DR(Direct routing)直接路由
    集群节点和director必须在同一个物理网络中
    RIP可以使用公网地址,实现便捷的远程管理和监控
    Director只负责入站请求,响应报文则由RealServer直接发往客户端
    集群节点不能将网关指向Director,直接使用前端网关
    Director不支持端口映射
    集群节点可以是大多数操作系统
  3. LVS-TUN(IP tunneling)隧道
    集群节点不需要在同一物理网络(可以跨越互联网)
    RIP必须是公网地址
    Director仅处理入站请求,响应报文则由RealServer直接发往客户端
    realserver网关不能指向Director
    只有支持隧道功能的OS才能用于RealServer
    不支持端口映射

活动链接(active):
非活动链接(inacitive)

固定调度方法(静态调度方法):

  1. RR:轮询
  2. WRR:Weight,加权
  3. SH:Source Hash,源地址hash–session affinity
  4. DH:Destination hashing目标地址hash:将同样的请求发送至同一个IP地址
    动态调度方法
  5. Least Connection最少连接:active*256+inactive,谁的小,挑谁
  6. wlc(weight least connection)加权最少连接:(active*256+inactive)/weight,谁的小,挑谁
  7. sed最短期望延迟:(active+1)*256/weight
  8. nq(never queue)永不排队:改进sed,每个人先发送一个连接,接着再使用sed
  9. lblc(locality-Based Least Connection):基于本地的最少连接
  10. 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):
LVS-NAT简单规划图

#注:三台虚拟机先使用桥接的方式连接网络,安装完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学习:Nginx--常见功能配置片段与优化-06

向Linus学习,让代码具有good taste

零基础学习云计算及大数据DBA集群架构师Linux Bash Shell编程及系统自动化2015年1月13日周三

[linux][c/c++]代码片段01

零基础学习云计算及大数据DBA集群架构师Linux系统配置及网络配置2015年12月28日周一

Linux学习-Redis分片集群