当前位置: 首页 > web >正文

linux运维学习第10周

目录

1、防火墙原理总结以及防火墙规则示例

1.1防火墙原理

1.1.1数据包过滤的基本逻辑

1.1.2内核层的流量控制机制

1.1.3防火的规则处理流程与动作

1.2防火墙规则示例

2、总结LVS的的NAT和DR模型工作原理,并完成DR工作模型实践

2.1NAT模型工作原理

2.2DR模型工作原理

2.3DR模型实践

2.3.1主机资源分析

2.3.2定制LVS-route主机

2.3.3定制lvs-server主机

2.3.4定制lvs-rs1主机

2.3.5定制lvs-rs2主机

2.3.6lvs-client主机定制默认的网关出口为lvs主机

2.3.7lvs-route主机环境配置

2.3.8lvs-server主机定制数据包转发

2.3.9RS1主机定制环境

 2.3.10RS2主机定制环境

2.3.11lvs-server主机定制集群

2.3.12测试效果

3、总结LVS调度算法

3.1算法分类 

3.2静态方法

3.3动态方法

4、完成keepalived高可用集群实践

4.1配置解析

4.2简单实践

4.2.1配置解析

4.2.2nginx环境配置

4.2.3网卡环境配置

4.2.4keepalived配置

4.2.5测试效果


1、防火墙原理总结以及防火墙规则示例

1.1防火墙原理

1.1.1数据包过滤的基本逻辑

防火墙本质是网络流量的门卫,通过预设规则对进出系统的数据包进行检查,决定其是否通过,检测原理基于五元组匹配,状态检测,上下文感知

1.1.2内核层的流量控制机制

Ntfilter框架是linux中用于网络数据包过滤、NAT和数据包修改的底层框架,包括五个重要的钩子函数。

iptables是针对IPV4网络的规则管理工具,通过操作Netfilter的钩子函数定义规则

nftables是iptables的替代品,更统一,更高效

1.1.3防火的规则处理流程与动作

规则按添加顺序依次匹配,一旦匹配成功则执行对应动作,不在检查后续规则

常见处理动作有accept,drop,reject,log.SNAR/DNAT

1.2防火墙规则示例

清空所有规则

iptables -F

丢弃来自10.0.0.12这个IP地址的所有入站流量

iptables -t filter -A INPUT -s 10.0.0.12 -j DROP

查看iptables规则

iptables -vnL

保存规则

iptables-save > iptables.rules

还原规则

iptables-restore < iptables.rules

2、总结LVS的的NAT和DR模型工作原理,并完成DR工作模型实践

2.1NAT模型工作原理

当客户端CIP访问LVS的VIP时,LVS将请求源IP地址改为DIP,目的IP地址转换为RIP,当后端服务器处理完请求并返回时,LVS将请求的源IP地址改为VIP,目的IP地址转换为CIP

2.2DR模型工作原理

客户端访问VIP,LVS调度器将数据包的目标MAC改为RIP的MAC,源MAC改为LVS自身网卡的MAC,通过二层MAC替换实现转发,让数据包看起来是从LVS直接到RS

RS收请求后处理并直接返回给CIP,绕开LVS

2.3DR模型实践

2.3.1主机资源分析

2.3.2定制LVS-route主机

vim /etc/netplan/50-cloud-init.yaml

修改配置为

network:version: 2ethernets:ens33:addresses:- 10.0.0.16/24nameservers:addresses:- 10.0.0.2routes:- to: defaultvia: 10.0.0.2ens37:addresses:- 192.168.8.16/24

生效配置

netplan apply

2.3.3定制lvs-server主机

ip add add 192.168.8.100/32 dev ens33:1

2.3.4定制lvs-rs1主机

ip a add 192.168.8.100/32 dev lo

2.3.5定制lvs-rs2主机

ip a add 192.168.8.100/32 dev lo

此时使用arping命令可以看到有三台主机存在192.168.8.100的IP地址

2.3.6lvs-client主机定制默认的网关出口为lvs主机

ip route del default
ip route add default via 10.0.0.16
ip route list

2.3.7lvs-route主机环境配置

root@ubuntu24-16:~# cat /etc/sysctl.d/forward.conf
net.ipv4.ip_forward = 1
root@ubuntu24-16:~# sysctl -p /etc/sysctl.d/forward.conf
net.ipv4.ip_forward = 1

2.3.8lvs-server主机定制数据包转发

定制内核参数

root@ubuntu24-13:~# cat /etc/sysctl.d/forward.conf
net.ipv4.ip_forward = 1
root@ubuntu24-13:~# sysctl -p /etc/sysctl.d/forward.conf
net.ipv4.ip_forward = 1

定制路由策略

ip route add default via 192.168.8.16

2.3.9RS1主机定制环境

ip route del default
ip route add default via 192.168.8.16

定制arp策略

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

 2.3.10RS2主机定制环境

ip route del default
ip route add default via 192.168.8.16

定制arp策略

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

2.3.11lvs-server主机定制集群

清除所有规则

ipvsadm -c

增加主机列表

ipvsadm -A -t 192.168.8.100:80
ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.14
ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.15

2.3.12测试效果

[root@rocky9-12 ~]# curl 192.168.8.100
<h1>hello RS2</h1>
[root@rocky9-12 ~]# curl 192.168.8.100
<h1>hello RS1</h1>

3、总结LVS调度算法

3.1算法分类 

静态方法:仅仅从调度策略本身实现的功能角度进行工作
RR、WRR、DH、SH
动态方法:在满足调度策略本身实现功的前提下,还要考虑后端主机的动态负载效果
LC、WLC、LBLC、LBLCR、SED、NQ


3.2静态方法

RR:Round Robin,轮询算法,
 LVS 服务器将前端请求轮流转发到后端每一台 RS 服务器上,后端每台 RS 服务器处理的请求量都是相同的
WRR:Weight RR,加权轮询算法,
 LVS 服务器将前端请求根据后端 RS 服务器的权重进行转发,对于后端 RS 服务器中性能好的机器可以设置较高的权
重,物尽其用
SH:Source Hash,源 IP 地址 hash,
 将来自于同一个 IP 地址的客户端请求调度到后端同一台 RS 服务器上,从而实现会话保持
DH:Destinatio Hash,目标 IP 地址 hash,
 客户端的请求第一次被调度到某到 RS 服务器后,其后续的请求都将会被发往同一台 RS 服务器,一般用于正向代理缓
存场景

3.3动态方法

LC:Least Connections,最少连接算法,
 将前端请求调度到己建立的连接数最少的后端 RS 服务器上,如果集群后端服务器具有相同的配置和相近的系统性能,采用此调度算法可以较好的均衡负载。
 Overhead = 活动连接数 * 256 + 非活动连接数负载值越小,则被调度的优先级越高,256个非活动连接相当于1个活动连接
WLC:Weighted Least Connections,加权最少连接算法,此算法是 LVS 的默认调度算法
 在 LC 算法中,只考虑了 RS 服务器的连接数,而没有考虑 RS 服务器会有不同的配置和性能,此算法优化了负载均衡性能,具有较高权重值的 RS 服务器将承受较大比例的活动连接负载。
 Overhead =(活动连接数 * 256 + 非活动连接数)/ Weight
权重值越大,则计算出的负载值越小,相应的,被调度的优先级越高 256个非活动连接相当于1个活动连接)。

SED:Shortest Expected Delay,最短延迟调度算法,此算法是 WLC 算法的改进版
为了避免WLC在初始环境下,多台主机没有任何活动请求,这个时候权重值就失效了,所以出了SED,也就是说,将所有主机的活动连接数,默认都是存在至少1个活动连接。
Overhead =(活动连接数 + 1)* 256 / Weight
权重值越大,则计算出的负载值越小,相应的,被调度的优先级越高
不考虑非活动连接的原因是为了防止 WLC 算法中 非活动连接数 过大影响调度的准确性,+1 是为了保证被除数大于0,防止出现计算结果为0的情况,计算结果为0则意味着每台 RS 被调度的概率是一致的,权重值设置无效。
NQ:Never Queue,最少队列调度算法/永不排队调度算法,初始的时候先做一次轮循,保证每台 RS 都至少被调度一次,后续使用 SED 调度算法。

4、完成keepalived高可用集群实践

4.1配置解析

keepalived默认配置文件主要有三部分组成,global_defs、vrrp_instance、virtual_server,其中最重要的配置内容是vrrp_instance,在这个配置段中,设置了我们keepalived对外提供的统一入口

global_defs - 全局配置段在这部分的配置段中,我们暂时只需要关心router_id即可router_id 设定当前keepalived提供的路由标识,它在keepalived集群中必须唯一
vrrp_instance - vrrp配置段在这部分的配置段中,我们选优关心以下几处的配置信息:state 描述keepalived主机间的角色定位的,一般只有两个值MASTER、BACKUPinterface 指定在哪个网卡上绑定VIPvirtual_router_id 指定VIP的唯一标识,在keepalived集群中,此配置必须一致。priority 被VRRP协议来判断那个router_id作为主路由,值越大,优先级越高authentication 多个路由之间通信的认证virtual_ipaddress 指定VIP的地址,可以是多个。virtual_server - vs配置段在这部分的配置段中,我们主要关系一下几处的配置信息:lb_algo 定制算法信息protocol 数据通信协议的定制real_server 后端真实主机的定制

4.2简单实践

4.2.1配置解析

两台主机10.0.0.13和10.0.0.23作为高可用方案主机,其中10.0.0.13作为主机,10.0.0.23作为从机,当主机出故障时,从机自动接替主机的工作

4.2.2nginx环境配置

10.0.0.13主机nginx环境配置

apt install nginx rsyslog -y
echo 'keepalived master' > /var/www/html/index.nginx-debian.html

测试效果

root@ubantu24-13:~# curl localhost
keepalived master

10.0.0.23从机nginx环境配置

apt install nginx rsyslog -y
echo 'keepalived slave' > /var/www/html/index.nginx-debian.html

测试效果

root@ubantu24-23:~# curl localhost
keepalived slave

4.2.3网卡环境配置

主机定制网卡

network:version: 2renderer: NetworkManagerethernets:ens33:addresses:- "10.0.0.13/24"nameservers:addresses:- 10.0.0.2routes:- to: defaultvia: 10.0.0.2ens37:addresses:- "192.168.8.13/24"

生效网卡

netplan apply

从机定制网卡

network:version: 2renderer: NetworkManagerethernets:ens33:addresses:- "10.0.0.23/24"nameservers:addresses:- 10.0.0.2routes:- to: defaultvia: 10.0.0.2ens37:addresses:- "192.168.8.23/24"

4.2.4keepalived配置

主机安装并启动keepalived

apt install keepalived -y
cp /etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf
sed -i '/virtual_server/,$d' /etc/keepalived/keepalived.conf
sed -i 's/eth0/ens33/g' /etc/keepalived/keepalived.conf
systemctl start keepalived

主机配置文件

global_defs {router_id kpmaster
}vrrp_instance VI_1 {state MASTERinterface ens37virtual_router_id 50priority 100authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.8.100}
}

重启服务

systemctl restart keepalived.service

从机也是先安装并启动,从机的配置文件为

global_defs {router_id kpslave
}vrrp_instance VI_1 {state BACKUPinterface ens37virtual_router_id 50priority 99authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.8.100}
}

由于主机占用VIP,所以此时从机并没有显示VIP

4.2.5测试效果

nginx访问测试

root@ubantu24-13:~# for i in {1..10};do curl 192.168.8.100;done
keepalived master
keepalived master
keepalived master
keepalived master
keepalived master
keepalived master
keepalived master
keepalived master
keepalived master
keepalived master

断开13主机的keepalived服务,使用23主机进行抓包

root@ubantu24-23:/etc/netplan# tcpdump -i ens37 -nn host 224.0.0.18
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on ens37, link-type EN10MB (Ethernet), snapshot length 262144 bytes
23:40:57.761786 IP 192.168.8.23 > 224.0.0.18: VRRPv2, Advertisement, vrid 50, prio 99, authtype simple, intvl 1s, length 20
23:40:58.762719 IP 192.168.8.23 > 224.0.0.18: VRRPv2, Advertisement, vrid 50, prio 99, authtype simple, intvl 1s, length 20
23:40:59.763249 IP 192.168.8.23 > 224.0.0.18: VRRPv2, Advertisement, vrid 50, prio 99, authtype simple, intvl 1s, length 20
23:41:00.764078 IP 192.168.8.23 > 224.0.0.18: VRRPv2, Advertisement, vrid 50, prio 99, authtype simple, intvl 1s, length 20
23:41:01.765074 IP 192.168.8.23 > 224.0.0.18: VRRPv2, Advertisement, vrid 50, prio 99, authtype simple, intvl 1s, length 20
^C
5 packets captured
5 packets received by filter
0 packets dropped by kernel

查看IP

root@ubantu24-23:~# hostname -I
10.0.0.23 192.168.8.23 192.168.8.100

此时从机已经获得VIP

重新开启主机keepalived服务

通过ip a命令可以查看到VIP已经回到13主机,成功实现了高可用的简单实践

http://www.xdnf.cn/news/14818.html

相关文章:

  • 设计模式:观察者模式 (Observer) 案例详解
  • 消息队列:Redis Stream到RabbitMQ的转换
  • MongoDB06 - MongoDB 地理空间
  • PyQt5—QPushButton 功能 API 学习笔记
  • Zynq7020 Linux更新启动分区文件导致文件大小为0的处理方式
  • 力扣第84题-柱状图中最大的矩形
  • Webpack中的Loader详解
  • 用户行为序列建模(篇六)-【阿里】DSIN
  • 实战篇----利用 LangChain 和 BERT 用于命名实体识别-----完整代码
  • flask使用-链接mongoDB
  • Python爬虫-爬取汽车之家全部汽车品牌及车型数据
  • ListExtension 扩展方法增加 转DataTable()方法
  • Lua现学现卖
  • DOP数据开放平台(真实线上项目)
  • 电商返利APP架构设计:如何基于Spring Cloud构建高并发佣金结算系统
  • OpenLayers 下载地图切片
  • 解决cursor无法下载插件等网络问题
  • vue-29(创建 Nuxt.js 项目)
  • 从用户到权限:解密 AWS IAM Identity Center 的授权之道
  • 给定一个没有重复元素的数组,写出生成这个数组的MaxTree的函数
  • TDengine 如何使用 MQTT 采集数据?
  • lambda、function基础/响应式编程基础
  • [论文阅读] 软件工程 | 微前端在电商领域的实践:一项案例研究的深度解析
  • NLP中的同义词替换及我踩的坑
  • 创客匠人视角:创始人 IP 打造为何成为知识变现的核心竞争力
  • 【算法深练】单调栈:有序入栈,及时删除垃圾数据
  • 鸿蒙5:组件监听和部分状态管理V2
  • 为何需要防爆平板?它究竟有何能耐?
  • 【龙泽科技】新能源汽车故障诊断仿真教学软件【吉利几何G6】
  • 学习使用dotnet-dump工具分析.net内存转储文件(2)