目录
一、集群和分布式
(一)集群Cluster
1、集群的定义:
集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统
他是同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据 和代码都是一样的
2、常见的三种形式:
LB:LoadBalancing(负载均衡)由多个主机组成,每个主机只承担一部分访问
HA:High Availiablity(高可用)SPOF(single Point Of failure)
MTBF:Mean Time Between Failure 平均无故障时间,正常时间
MTTR:Mean Time To Restoration( repair)平均恢复前时间,故障时间
A=MTBF/(MTBF+MTTR) (0,1):99%, 99.5%, 99.9%, 99.99%, 99.999%
SLA : Service level agreement (服务等级协议)是在一定开销下为保障服务的性能和可用性,服 务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。在 常规的领域中,总是设定所谓的三个9 ,四个 9 来进行表示,当没有达到这种水平的时候,就会有一些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。 停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外停机时间
HPC : High-performance computing (高性能计算,国家战略资源,不在课程范围内)
(二)分布式
分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数 来提升效率
二、lvs结构
工作原理:VS 根据请求报文的目标 IP 和目标协议及端口将其调度转发至某 RS ,根据调度算法来挑选 RS
(一)lvs概念
VS : Virtual ServerRS : Real ServerCIP : Client IPVIP: Virtual serve IP VS 外网的 IPDIP: Director IP VS 内网的 IPRIP: Real server IP访问流程: CIP <--> VIP == DIP <--> RIP
(二)lvs集群类型
lvs-nat :修改请求报文的目标 IP, 多目标 IP 的 DNATlvs-dr : 操纵封装新的 MAC 地址lvs-tun :在原请求 IP 报文之外新加一个 IP 首部lvs-fullnat : 修改请求报文的源和目标 IP
(三)nat模式
1、本质是多目标 IP 的 DNAT ,通过将请求报文中的目标地址和目标端口修改为某挑出的 RS的 RIP 和2、PORT 实现转发3、RIP 和 DIP 应在同一个 IP 网络,且应使用私网地址 ;RS 的网关要指向 DIP4、请求报文和响应报文都必须经由 Director 转发, Director 易于成为系统瓶颈5、支持端口映射,可修改请求报文的目标 PORT6、VS 必须是 Linux 系统, RS 可以是任意 OS 系统
1、nat模式数据逻辑
1、客户端发送访问请求,请求数据包中含有请求来源( cip ),访问目标地址( VIP )访问目标端口 (9000port )2、VS 服务器接收到访问请求做 DNAT 把请求数据包中的目的地由 VIP 换成 RS 的 RIP 和相应端口3、RS1 相应请求,发送响应数据包,包中的相应保温为数据来源( RIP1 )响应目标( CIP )相应端口 (9000port )4、VS 服务器接收到响应数据包,改变包中的数据来源( RIP1-->VIP ) , 响应目标端口( 9000-->80 )5、VS 服务器把修改过报文的响应数据包回传给客户端6、lvs 的 NAT 模式接收和返回客户端数据包时都要经过 lvs 的调度机,所以 lvs 的调度机容易阻塞
2、基于nat模式的实验
一、实验环境
1、准备三台虚拟机分别充当lvs(调度器)webserver1、2(web)
2、lvs为双网卡主机,一张网卡为nat IP为172.25.254.100 ,一张为仅主机模式,ip为 192.168.0.100
3、webserver1为单网卡主机,ip为192.168.0.10
4、webserver2为单网卡主机,ip为192.168.0.20
二、实验配置
server1
root@webserver1 system-connections]# cat eth0.connection [connection] id=eth0 type=ethernet interface-name=eth0 [ipv4] method=manual address1=192.168.0.10/24,192.168.0.100 (将server的网关指定为lvs仅主机的ip) dns=114.114.114.114 在http中发布内容: root@webserver1 system-connections]# cat /var/www/html/index.html webserver1 - 192.168.0.10
server2
[root@webserver2 system-connections]# cat eth0.connection [connection] id=eth0 type=ethernet interface-name=eth0 [ipv4] method=manual address1=192.168.0.20/24,192.168.0.100 (与server1一样) 在http中发布内容: root@webserver1 system-connections]# cat /var/www/html/index.html webserver1 - 192.168.0.20
lvs
lvs: [root@lvs ~]# hostname -I (配置ip) 172.25.254.100 192.168.0.100 开启内核路由功能: root@lvs ~]# cat /etc/sysctl.conf # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/. # # Vendors settings live in /usr/lib/sysctl.d/. # To override a whole file, create a new file with the same in # /etc/sysctl.d/ and put new settings there. To override # only specific settings, add a file with a lexically later # name in /etc/sysctl.d/ and put new settings there. # # For more information, see sysctl.conf(5) and sysctl.d(5). net.ipv4.ip_forward=1 root@lvs ~]# sysctl -p net.ipv4.ip_forward = 1 测试: [root@lvs ~]# curl 192.168.0.10 webserver1 - 192.168.0.10 [root@lvs ~]# curl 192.168.0.20 wevserver2 - 192.168.0.20 [root@lvs ~]# yum install ipvsadm -y (安装lvs软件) 写策略: [root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr [root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m [root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m 查看策略: [root@lvs ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.100:80 rr -> 192.168.0.10:80 Masq 1 0 0 -> 192.168.0.20:80 Masq 1 0 0 测试: [root@lvs ~]# for i in {1..10} > do > curl 172.25.254.100 > done wevserver2 - 192.168.0.20 webserver1 - 192.168.0.10 wevserver2 - 192.168.0.20 webserver1 - 192.168.0.10 wevserver2 - 192.168.0.20 webserver1 - 192.168.0.10 wevserver2 - 192.168.0.20 webserver1 - 192.168.0.10 wevserver2 - 192.168.0.20 webserver1 - 192.168.0.10
(四)DR模式
DR : Direct Routing ,直接路由, LVS 默认模式 , 应用最广泛 , 通过为请求报文重新封装一个 MAC 首部进行转发,源 MAC 是 DIP 所在的接口的 MAC ,目标 MAC 是某挑选出的 RS 的 RIP 所在接口的 MAC 地址;源IP/PORT ,以及目标 IP/PORT 均保持不变
1、DR模式数据逻辑
在 DR 模式中, RS 接收到访问请求后不需要回传给 VS 调度器,直接把回传数据发送给 client ,所以 RS 和 vs上都要有 vip
2、DR模式数据传输过程
1、 客户端发送数据帧给 vs 调度主机帧中内容为客户端 IP+ 客户端的 MAC+VIP+VIP 的 MAC2、VS 调度主机接收到数据帧后把帧中的 VIP 的 MAC 该为 RS1 的 MAC ,此时帧中的数据为客户端 IP+ 客户端 的MAC+VIP+RS1 的 MAC3、RS1 得到 2 中的数据包做出响应回传数据包,数据包中的内容为 VIP+RS1 的 MAC+ 客户端 IP+ 客户端 IP 的MAC
3、DR模式的特点
1、Director 和各 RS 都配置有 VIP2、 确保前端路由器将目标 IP 为 VIP 的请求报文发往 Director3、 在前端网关做静态绑定 VIP 和 Director 的 MAC 地址4、RS 的 RIP 可以使用私网地址,也可以是公网地址; RIP 与 DIP 在同一 IP 网络;5、RIP 的网关不能指向 DIP ,以确保响应报文不会经由 Director6、RS 和 Director 要在同一个物理网络7、 请求报文要经由 Director ,但响应报文不经由 Director ,而由 RS 直接发往 Client8、 不支持端口映射(端口不能修败
4、基于DR模式的实验
一、实验环境
1、准备5台虚拟机分别充cliter(客户端) router(路由)当lvs(调度器)webserver1、2(web)
2、cliter为单网卡,IP为172.25.254.200
3、router为双网卡主机,一张网卡为nat IP为172.25.254.100 ,一张为仅主机模式,ip为 192.168.0.200
4、lvs为单网卡,ip为192.168.0.100
5、webserver1为单网卡主机,ip为192.168.0.10
6、webserver2为单网卡主机,ip为192.168.0.20
二、实验配置
server1
root@webserver1 system-connections]# cat eth0.connection [connection] id=eth0 type=ethernet interface-name=eth0 [ipv4] method=manual address1=192.168.0.10/24,192.168.0.100 (将server的网关指定为lvs仅主机的ip) dns=114.114.114.114 在http中发布内容: root@webserver1 system-connections]# cat /var/www/html/index.html webserver1 - 192.168.0.10 ip a a 192.168.0.200/32 dev lo 关闭vip响应,不应答,只发送 [rootGwebserver1~]# echo 1>/proc/sys/net/ipv4/conf/all/arp_ignore [rootGwebserver1~]# echo 2>/proc/sys/net/ipv4/conf/all/arp_announce [root@webserver1~]# echo 2>/proc/sys/net/ipv4/conf/lo/arp_announce [rootawebserver1~]# echo 1>/proc/sys/net/ipv4/conf/lo/arp_ignore
server2
root@webserver2 system-connections]# cat eth0.connection [connection] id=eth0 type=ethernet interface-name=eth0 [ipv4] method=manual address1=192.168.0.20/24,192.168.0.100 (将server的网关指定为lvs仅主机的ip) dns=114.114.114.114 在http中发布内容: root@webserver1 system-connections]# cat /var/www/html/index.html webserver1 - 192.168.0.20 ip a a 192.168.0.200/32 dev lo 关闭vip响应,不应答,只发送 [rootGwebserver2~]# echo 1>/proc/sys/net/ipv4/conf/all/arp_ignore [rootGwebserver2~]# echo 2>/proc/sys/net/ipv4/conf/all/arp_announce [root@webserver2~]# echo 2>/proc/sys/net/ipv4/conf/lo/arp_announce [rootawebserver2~]# echo 1>/proc/sys/net/ipv4/conf/lo/arp_ignore
lvs
[root@lvs ~]# hostname -I 192.168.0.50 root@lvs ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth1 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1 [root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr [root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1 [root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2 给回环配置IP,子网掩码为32 [root@lvs 桌面]# ip a a 192.168.0.200/32 dev lo
router
root@router ~]# hostname -I 172.25.254.100 192.168.0.100 开启内核路由 [root@router ~]# sysctl -p net.ipv4.ip_forward = 1
cliter
[root@cliten ~]# hostname -I 172.25.254.200 root@cliten ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.25.254.100 0.0.0.0 UG 100 0 0 eth0 172.25.254.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 root@cliten ~]# for i in {1..10}; do curl 192.168.0.200; done wevserver2 - 192.168.0.20 wevserver1 - 192.168.0.10 wevserver2 - 192.168.0.20 wevserver1 - 192.168.0.10 wevserver2 - 192.168.0.20 wevserver1 - 192.168.0.10 wevserver2 - 192.168.0.20 wevserver1 - 192.168.0.10 wevserver2 - 192.168.0.20 wevserver1 - 192.168.0.10
(五)TUN模式
1、TUN模式数据传输过程
1、 客户端发送请求数据包,包内有源 IP+vip+dport2、 到达 vs 调度器后对客户端发送过来的数据包重新封装添加 IP 报文头,新添加的 IP 报文头中包含TUNSRCIP(DIP)+TUNDESTIP(RSIP1) 并发送到 RS13、RS 收到 VS 调度器发送过来的数据包做出响应,生成的响应报文中包含 SRCIP(VIP)+DSTIP ( CIP ) +port,响应数据包通过网络直接回传给 client
2、TUN模式特点
1、DIP, VIP, RIP 都应该是公网地址2、RS 的网关一般不能指向 DIP3、 请求报文要经由 Director ,但响应不能经由 Director4、 不支持端口映射5、RS 的 OS 须支持隧道功能