代码语言: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主机无所谓。