Python自动化运维之LVS

2020-09-01 15:46:11 浏览数 (1)

代码语言:javascript复制
1 集群基础
1.1 集群简介	
	1.1.1 集群基础	
		场景需求
			满足不了用户需求
			集群:资源扩展的解决方案
		解决方案
			三轴扩展
			x轴: 复制或者克隆的方式
			y轴: 配置升级或者资源增强的方式
			z轴: 通过业务梳理和资源整合的方式,实现细节单独部署的一种扩展方式
		访问效果
			浏览器  - dns解析 - 反向代理 - 负载均衡 - web应用 - 数据库 - 存储
			
	1.1.2 集群类型	
		类型简介
			高扩展集群 LB	共同支撑一个业务应用
			高可用集群 HA	核心的业务
			高性能集群 HPA	技术方案 高性能设备 有限资源,高复杂计算场景
	1.1.3 实现方式	
		实现方式 
			硬件	F5 
			软件	
				LVS 		2~4
				NGINX		4~7
				HAPROXY		4~7
				
		依赖功能
			会话问题:
				会话粘滞
				会话复制
				会话共享
2 LVS快速入门
2.1 LVS基础	
	2.1.1 防火墙回顾
		五表五链
			filter 		包过滤
			nat			网络地址转换
			
		链:
			PREROUTING
			INPUT
			FORWARD
			OUTPUT
			POSTROUTING
		综合效果图
		生产使用
			filter
				主机防火墙	INPUT  OUTPUT
				网络防火墙  FORWARD
			nat
				
		DNAT&SNAT 
			SNAT	场景:公司内网主机,借助于路由器的外网ip到互联网上访问web服务
					数据包的源ip地址发生转换
			DNAT	场景:外网的客户端,访问公司的服务,通过访问公司的外网路由ip,进而找的真实的web服务器主机
					数据包的目标ip地址发生了转换。
					
	2.1.2 LVS简介
		 项目简介
			linux virtual server 开源项目
			基于ip负载均衡和内容分发功能,将大量的空闲主机资源合理的利用起来
		 集群结构
			调度功能
			服务器池
			共享存储
		 体系框架
			ipvs
			
		 调度功能 
			NAT
			DR 
			TUN 
			FULLNAT
	2.1.3 LVS结构	
		日常术语
			主机: DS  RS
			ip:	CIP  VIP DIP  RIP
		工作流程
			用户发起请求给lvs主机的vip
			lvs主机接收请求后,基于内部的调度策略,转交给后端RS主机
			RS主机处理请求后,将响应报文原路返回,或者通过其他机制返回给用户
			
			数据包的流程:
				lvs 在本机内核空间的路由决策后,input链之前
		软件组成
			组成:
				内核空间:ipvs
				用户空间:ipvsadm
2.2 快速入门	
	2.2.1 安装软件	
		安装:
			yum install ipvsadm 
				默认版本:1.27 
				最新版本:1.29 编译安装
				
			
	2.2.2 命令简介
		ipvsadm -h
			主机 
			集群 
			通用
			
	2.2.3 集群命令
		查看
			ipvsadm -Ln
			ipvsadm -Ln --rate
		增加
			ipvsadm -A -t lvs_vip:lvs_port
		编辑
			ipvsadm -E -t lvs_vip:lvs_port 其他属性
		删除
			ipvsadm -D -t lvs_vip:lvs_port
			
	2.2.4 主机命令	
		查看
			ipvsadm -Ln
				-> 
		增加
			-a 
		编辑
			-e
		删除
			-d 
			ipvsadm -A -t 192.168.8.14:80
			ipvsadm -Ln
			ipvsadm -a -t 192.168.8.14:80 -r 192.168.8.14
			ipvsadm -Ln
			ipvsadm -a -t 192.168.8.14:80 -r 192.168.8.15:999
			ipvsadm -Ln
			ipvsadm -a -t 192.168.8.14:80 -r 192.168.8.15:999 -m
			ipvsadm -Ln
			ipvsadm -a -t 192.168.8.14:80 -r 192.168.8.16 -i
			ipvsadm -Ln
			ipvsadm -e -t 192.168.8.14:80 -r 192.168.8.14:80 -m
			ipvsadm -Ln
			ipvsadm -e -t 192.168.8.14:80 -r 192.168.8.15:89 -m
			ipvsadm -e -t 192.168.8.14:80 -r 192.168.8.15:999 -i
			ipvsadm -Ln
			ipvsadm -e -t 192.168.8.14:80 -r 192.168.8.14:80 -i
			ipvsadm -Ln
			ipvsadm -d -t 192.168.8.14:80 -r 192.168.8.14:80
			ipvsadm -Ln
			ipvsadm -D -t 192.168.8.14:80

		注意:
			创建RS的时候,一定要保证 lvs地址是存在的
			在修改主机信息的时候,一定包保证lvs地址和rs地址都是正确的,
			修改主机地址是不可能成功的,因为它相当于要创建一个新的RS,-a
		
	2.2.5 规则命令	
		保存规则
			ipvsadm-save -n
			ipvsadm -Sn
			关键点:
				保存的时候,规则中的ip和主机名解析相关,端口和协议相关
				
		清空规则
			ipvsadm -C 
		导入规则
			ipvsadm-restore
		规则服务
			第一次由于 /etc/sysconfig/ipvsadm 不存在,服务启动不了
			第一次启动服务之前,先使用ipvsadm-save -n将所有的规则以标准的形式保存到 /etc/sysconfig/ipvsadm 
			接下来,启动该服务,即可
			
		拓展:
			在教学环境中,为了避免知识点的干扰,我们在学习的过程中,尽量不用服务
			
2.3 NAT实践	
	2.3.1 前置知识
		 网络设备
			二层设备:同一个网段的主机通信 交换机
			三层设备:跨网段的主机通信,路由器
		 基础环境
			单主机双网络环境:
				单主机双网卡,单网卡 别名
				数据转发功能:
					/proc/sys/net/ipv4/ip_forward = 1
			nat环境:
				SNAT DNAT 的效果
					源地址 目标地址 都会发生转换
					
	2.3.2 NAT简介	
		模型简介
			站在用户的角度来梳理:
				用户CIP发起的数据包,到lvs主机的外网地址vip
				请求的数据包:DNAT的效果
				相应的数据包:SNAT的效果
		模型分析 
			关键点:	
				1 整个环境涉及到两个网段:外网和内网
					外网  CIP 和 VIP
					内网  DIP 和 RIP
				2 内网主机响应报文想要发出去,必须配备网关
				3 数据包的进入和输出,都需要经过 lvs调度器
				
	2.3.3 简单实践	
		案例需求
			目标:nat网络模型
			
		需求分析
			1 集群的网络环境配置
			2 后端web服务配置
			3 lvs集群配置
		技术点分析
			1 集群的网络环境配置
				1 四台主机的网络适配器设置
				2 4台主机的网络配置
			2 后端web服务配置 
				yum install httpd 
				echo 'hello rsx' > /var/www/html/index.html
				systemctl start httpd 
			3 lvs主机配置
				ipvsadm -A -t 192.168.8.14:80
				ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.15 -m
				ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.16 -m
				
				在客户端进行测试:
					curl 
		操作实践
		实践小结 
			基础网络中的 
				lvs主机的数据转发功能
				rs主机的网关配置 
			lvs集群配置
				先设置集群 
				在增加主机
				注意 主机模型 -m 
			
	2.3.4 原理详解	
		模型原理
			cip -- vip  -- rip 
		数据包分析
			tcpdump -i eth0 port 80 
			在lvs主机上查看到的数据包
			在Rs主机上查看到的数据包 
			
		完整数据包流程
			tcp三次握手  http协议处理  tcp四次断开
	2.3.5 应用技巧	
		原理技巧
			数据包过来:DNAT   vip->rip
			数据包发出:SNAT   rip->vip
		实践技巧
			后端网络
				lvs的DIP可以与RIP为一个网络也可以不是
				交换机和路由器的效果
			数据传输
				整个数据传输过程中,所有的数据都会经过lvs主机,所以大场景下,lvs主机有可能会成为流量的瓶颈点
				
			数据转发
				nat 实现的功能,可以出现在网络层和传输层,
					端口映射环境
			主机系统
				lvs主机仅限于linux系统,RS主机无所谓。
				
	2.3.6 进阶实践1	
		 案例需求
			目的:在公司内网RS主机和lvs主机的DIP不在同一个网段
				内网路由环境测试nat效果
		 需求分析
			增加了一个路由器
		 技术点分析
		 操作实践
		 实践小结
			1 在实践的时候,集群网络的拓扑图一定要设计好
			2 网络通信的时候,不同网段间数据传输的网关一定要设置好
		 数据包流程
			
	2.3.7 进阶实践2	
		案例需求
			目的:单lvs主机实现多业务的负载均衡效果
		需求分析
		技术点分析
		操作实践
			ipvsadm -A -t 192.168.8.14:80
			ipvsadm -A -t 192.168.8.14:443
			ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.15 -m
			ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.16 -m
			ipvsadm -a -t 192.168.8.14:443 -r 172.16.10.16:443 -m
			ipvsadm -a -t 192.168.8.14:443 -r 172.16.10.17:443 -m 
			ipvsadm -Ln				
		实践小结
			1 网络拓扑
			2 ipvs规则 -m 
			3 后端主机的网关 
			
2.4 调度策略	
	2.4.1 前置知识
		代理
			数据传输的一种方式
			分类:
				正向代理: 保护局域网内的客户端主机去互联网上访问网络,整个过程,主机信息受保护
				反向代理:用户去访问局域网内的web服务器,整个过程,web服务器信息我们看不到。
		会话
			数据传输的状态方式
			session		敏感信息保存在服务端,安全
			cookie		敏感信息保存在客户单,不安全
		hash
			数据保存的一种机制
				大数量,随机的保存到一块空间中,
				
	2.4.2 调度基础	
		调度基础
			lvs场景:按需转发效果
		调度分类
			内置策略
			扩展策略
		lvs调度策略
			13种
	2.4.3 静态方法
		 轮训	rr	
			见者有份
		 权重	wrr fo
			wrr 在进行轮训之前,首先对后端主机有一个前提的了解
			fo  优先考虑权重最高主机
		 hash	sh  dh mh
			sh	数据包中的源地址
			dh 	数据包中的目标地址
			mh 	web主机进行优先级排序
			
	2.4.4 动态方法	
		最少链接	lc wlc lblc lblcr
		其他方法	OVF、SED、NQ
		
		着重记住:
			rr  wrr sh dh lc wlc 
			
	2.4.5 WRR实践
		案例需求
			实践 wrr的效果
		需求分析
		操作实践
			ipvsadm -A -t 192.168.8.14:80 -s wrr
			ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.15 -m -w 1
			ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.16 -m -w 2
			ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.17 -m -w 3				
		实践小结	
			1 集群的基础网络环境很重要
			2 在设置后端主机的权重的时候,-w 参数很重要,默认的权重值是1
			3 工作中,后端主机的权重设置,需要对设备有比较熟悉的了解。	
			
	2.4.6 SH实践
		案例需求
			目的:基于用户的数据包源地址进行定向的分配请求
		需求分析
		操作实践
			ipvsadm -A -t 192.168.8.14:80 -s sh
			ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.15 -m
			ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.16 -m
			ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.17 -m				
		实践小结
			1 集群的基础网络环境很重要
			2 在设置后端主机的权重的时候,-m 参数很重要,默认的权重值是1
			3 设置lvs集群的时候,-s 指定sh调度算法	
	2.4.7 DH实践	
	2.4.8 OVF实践	
2.5 DR实践	
	2.5.1 前置知识	
		ARP缓存表
			在主机内部维护其他主机的ip和mac关联关系,方便以后通信
		交换机工作原理
			同网段主机间的通信机制
				接口和mac关联关系,快速找到对端主机,加快数据传输
		地址冲突
			内核参数
				禁发广播 arp_annonce 2 
				禁止响应 arp_ignore  1
	2.5.2 DR简介	
		模型简介
			DR模型是LVS转发场景中的默认模式 Route
			工作流程:
				1 网段两个
				2 转发特点:mac
				3 VIP可以与CIP直接通信
					1 所有的RS主机都有VIP:可以基于内核参数的变化避免
					2 VIP必须配置相应的网关才能找到CIP
				4 进入必须通过LVS主机,出去无所谓
				
				
		模型分析
	2.5.3 简单实践	
		案例需求
			目的;
				当前网络拓扑情况下,实验lvs的DR模型的负载均衡
		需求分析
			网络环境设置
			后端web主机设施
			lvs集群设置
		技术点分析
			网络环境设置
				网卡配置
				网关配置
				地址冲突
			后端web主机设施
				软件源
				http服务
			lvs集群设置	
				lvs集群设置
				lvs主机增加
				效果测试
				
		操作实践
			网络环境:
				网卡配置
				网关配置
				vip配置
					echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
					echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
					echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
					echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce		
					注意:	
						尤其是在后端主机配置的时候,
						先配置内核参数,在设置vip到lo
						lvs-server主机的vip最好设置在eth0上面
						
			后端服务
				软件源
				httpd
			lvs集群设置
				软件安装
				集群设置
					ipvsadm -A -t 172.16.10.100:80 
					ipvsadm -a -t 172.16.10.100:80 -r 172.16.10.15 -g
					ipvsadm -a -t 172.16.10.100:80 -r 172.16.10.16 -g	
				测试效果:
					curl 172.16.10.100
		实践小结
			1 基础的网络配置很重要,lvs-server和所有Rs在同一个私网内
			2 客户端的网关配置、内网主机的网关配置对数据包的流转很重要
			3 VIP的配置以及ip冲突的措施
			3 配置ipvs规则的时候,记住要使用 -g(可以省略) 参数。	
			
	2.5.4 原理详解	
		模型原理
			整个过程,数据包中的网络层信息(源IP和目标IP)没有发生变化
			变化的是mac地址
		数据包分析
			tcpdump -i eth0 port80 -e
		完整数据包流程
			数据流入 客户端-路由器-lvs-RS主机
			数据流出 RS主机-路由器-客户端
			
			
	2.5.5 应用技巧
		原理技巧
			lvs主机在数据转发的时候,是基于目标mac地址转换而成
		实践技巧
			后端网络
				1 RS和lvs属于同一网段
				2 RS主机为了避免和LVS主机上的VIP冲突
					arp_ignore 和 arp_annonce 两个内核属性的更改
			数据传输
				lvs主机只处理连接进来的数据包,不处理输出的数据包,
				mac方式转发数据,不支持网络层之上的其他转发方式应用的场景:端口映射
			主机系统
				lvs 仅限 linux 
				RS 无所谓
2.6 TUN实践	
	2.6.1 前置知识	
		路由原理
			路由工作在OSI网络层,跨网络的数据传输
				原理:路由器内部维护了各个网段的路由表
				
			路由跳转:
				同一网段:直连路由
				跨网段:非直连路由
				
			路由设置;
				手工路由
					网卡配置中的GATEWAY
					route add
				动态路由:
					自动生成的输出转出口
					默认路由,是一种特殊的动态路由。
					
		路由的流程:
			主机A   --  主机B
				找到路由器
					看是否有路由条目,
						有  - 直接通过接口发送出去
						无  - 默认路由 
								无默认路由  丢数据包
				
		隧道技术
			它是一种跨多路由的实现直接数据传输的一种数据传输方式
			特点:
				将原始数据包,封装到一个虚拟的ip隧道数据包内部
			常见隧道技术:
				ipip gre  sit 
				
	2.6.2 隧道实践	
		案例需求
			跨网段之间主机,基于ip隧道技术直接跨网段通信
		需求分析
			要实现ip隧道技术,首先保证基础的网络是正常的
		技术点分析
		操作实践
			主要体现在两个Rs主机上,和我们的lvs-route没有太大关系
			主机1 操作:
				加载系统模块
				modprobe ipip
				modprobe ip_gre
				创建隧道网络
				# 创建隧道名tun0,模式采用gre,直通远端ip-172.16.20.15,对应本地ip-172.16.10.14,路由存活时间255
				ip tunnel add tun0 mode gre remote 172.16.20.15 local 172.16.10.14 ttl 255
				# 启动隧道
				ip link set tun0 up
				# 设定本机tun0上的虚拟ip,并制定对端ip-192.168.2.1
				ip addr add 192.168.1.1 peer 192.168.2.1 dev tun0
				# 设定本机隧道tun0的路由信息
				ip route add 192.168.2.0/24 dev tun0				
			主机2 操作:
				加载系统模块
				modprobe ipip
				modprobe ip_gre
				创建隧道网络
				ip tunnel add tun0 mode gre remote 172.16.10.14 local 172.16.20.15 ttl 255
				ip link set tun0 up
				ip addr add 192.168.2.1 peer 192.168.1.1 dev tun0
				ip route add 192.168.1.0/24 dev tun0	

			操作流程:
				1 加载隧道模块
				2 设置基础隧道设备
				3 配置隧道属性
				4 隧道网络的路由
				
	2.6.3 TUN简介
		 模型简介
			TUN  lvs主机和RS主机是基于ip隧道技术进行通信
			整个过程,数据包的源ip和目标ip未发生变化
		 模型分析
			客户端-lvs主机 外网网段
			lvs主机-RS主机 隧道网段
			
	2.6.4 简单实践
		 案例需求
			目的:lvs集群效果的TUN模型实践负载均衡
		 需求分析
			实践环境:单网络场景lvs-rs中间是隧道网络
			隧道网络中的数据包格式不是标准的,需要关闭隧道数据传输时候的数据格式检测:
				rp_filter
		 技术点分析
		 操作实践
			RS的tunl配置
				modprobe ipip
				echo '0' > /proc/sys/net/ipv4/ip_forward
				echo '1' > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
				echo '2' > /proc/sys/net/ipv4/conf/tunl0/arp_announce
				echo '1' > /proc/sys/net/ipv4/conf/all/arp_ignore
				echo '2' > /proc/sys/net/ipv4/conf/all/arp_announce
				echo '0' > /proc/sys/net/ipv4/conf/tunl0/rp_filter 
				echo '0' > /proc/sys/net/ipv4/conf/all/rp_filter
				ifconfig tunl0 192.168.8.100/32 up
				
			lvs规则;
				ipvsadm -A -t 192.168.8.100:80 
				ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.15 -i
				ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.16 -i				
		 实践小结
			1 基础的网络配置很重要,所有主机在同一个网络内
			2 只有lvs主机用到了ip_forward功能
			3 VIP的配置以及ip冲突的措施
			4 rp_filter安全规则的设定。		
			
	2.6.5 原理详解	
		模型原理
			客户端-lvs  正常的网络传输
			lvs-Rs 		虚拟的ip隧道
							ip隧道数据包(内部是正常数据包)
		
		实践技巧
			后端网络 
				LVS(DIP)和RS(RIP)可以是同一网络,也可以不是,
				RS上面的tunl0设置VIP,vip的地址冲突
				RS上面tunl0接受到的数据包不规范,关闭rp_filter功能
			数据传输 
				输入数据包经过lvs主机,输出不经过
				ip隧道技术,是网络层的技术,不支持传输层的端口映射功能
			后端主机
				lvs主机linux系统
				Rs主机无所谓。

0 人点赞