linux运维学习第10周

发布于:2025-06-30 ⋅ 阅读:(14) ⋅ 点赞:(0)

目录

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: 2
    ethernets:
        ens33:
            addresses:
            - 10.0.0.16/24
            nameservers:
              addresses:
                - 10.0.0.2
            routes:
              - to: default
                via: 10.0.0.2
        ens37:
            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、BACKUP
   interface 指定在哪个网卡上绑定VIP
   virtual_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: 2
  renderer: NetworkManager
  ethernets:
    ens33:
      addresses:
      - "10.0.0.13/24"
      nameservers:
        addresses:
        - 10.0.0.2
      routes:
        - to: default
          via: 10.0.0.2
    ens37:
      addresses:
      - "192.168.8.13/24"

生效网卡

netplan apply

从机定制网卡

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:
      addresses:
      - "10.0.0.23/24"
      nameservers:
        addresses:
        - 10.0.0.2
      routes:
        - to: default
          via: 10.0.0.2
    ens37:
      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 MASTER
    interface ens37
    virtual_router_id 50
    priority 100
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.8.100
    }
}

重启服务

systemctl restart keepalived.service

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

global_defs {
    router_id kpslave
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens37
    virtual_router_id 50
    priority 99
    authentication {
        auth_type PASS
        auth_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主机,成功实现了高可用的简单实践


网站公告

今日签到

点亮在社区的每一天
去签到