<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Components :: Ay Docs</title>
    <link>https://ops.docs.72602.space/linux/components/index.html</link>
    <description>Cgroup有什么作用 IPVS</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Thu, 07 Mar 2024 15:00:59 +0800</lastBuildDate>
    <atom:link href="https://ops.docs.72602.space/linux/components/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cgroup有什么作用</title>
      <link>https://ops.docs.72602.space/linux/components/cgroup/index.html</link>
      <pubDate>Thu, 07 Mar 2024 15:00:59 +0800</pubDate>
      <guid>https://ops.docs.72602.space/linux/components/cgroup/index.html</guid>
      <description>cgroup 的功能非常丰富，除了 CPU 限制外，还提供了多种系统资源的管控能力：&#xA;1. 内存管理（memory） 1.1 内存限制 # 设置内存使用上限 echo &#34;100M&#34; &gt; /sys/fs/cgroup/memory/group1/memory.limit_in_bytes # 设置内存+Swap 上限 echo &#34;200M&#34; &gt; /sys/fs/cgroup/memory/group1/memory.memsw.limit_in_bytes 1.2 内存统计和监控 # 查看内存使用情况 cat /sys/fs/cgroup/memory/group1/memory.usage_in_bytes cat /sys/fs/cgroup/memory/group1/memory.stat 1.3 内存压力控制 # 设置内存回收压力 echo 100 &gt; /sys/fs/cgroup/memory/group1/memory.swappiness 2. 块设备 I/O 控制（blkio） 2.1 I/O 带宽限制 # 限制读带宽 1MB/s echo &#34;8:0 1048576&#34; &gt; /sys/fs/cgroup/blkio/group1/blkio.throttle.read_bps_device # 限制写带宽 2MB/s echo &#34;8:0 2097152&#34; &gt; /sys/fs/cgroup/blkio/group1/blkio.throttle.write_bps_device 2.2 I/OPS 限制 # 限制每秒读操作数 echo &#34;8:0 100&#34; &gt; /sys/fs/cgroup/blkio/group1/blkio.throttle.read_iops_device # 限制每秒写操作数 echo &#34;8:0 50&#34; &gt; /sys/fs/cgroup/blkio/group1/blkio.throttle.write_iops_device 2.3 I/O 权重分配 # 设置 I/O 优先级权重（100-1000） echo 500 &gt; /sys/fs/cgroup/blkio/group1/blkio.weight 3. 进程控制（pids） 3.1 进程数限制 # 限制最大进程数 echo 100 &gt; /sys/fs/cgroup/pids/group1/pids.max # 查看当前进程数 cat /sys/fs/cgroup/pids/group1/pids.current 4. 设备访问控制（devices） 4.1 设备权限管理 # 允许访问设备 echo &#34;c 1:3 rwm&#34; &gt; /sys/fs/cgroup/devices/group1/devices.allow # 拒绝访问设备 echo &#34;c 1:5 rwm&#34; &gt; /sys/fs/cgroup/devices/group1/devices.deny 5. 网络控制（net_cls, net_prio） 5.1 网络流量分类 # 设置网络流量类ID echo 0x100001 &gt; /sys/fs/cgroup/net_cls/group1/net_cls.classid 5.2 网络优先级 # 设置网络接口优先级 echo &#34;eth0 5&#34; &gt; /sys/fs/cgroup/net_prio/group1/net_prio.ifpriomap 6. 挂载点控制（devices） 6.1 文件系统访问限制 # 限制挂载命名空间操作 echo 1 &gt; /sys/fs/cgroup/group1/devices.deny 7. 统一层级 cgroup v2 功能 cgroup v2 提供了更统一的管理接口：</description>
    </item>
    <item>
      <title>IPVS</title>
      <link>https://ops.docs.72602.space/linux/components/ipvs/index.html</link>
      <pubDate>Thu, 07 Mar 2024 15:00:59 +0800</pubDate>
      <guid>https://ops.docs.72602.space/linux/components/ipvs/index.html</guid>
      <description>IPVS 是什么？ IPVS（IP Virtual Server） 是 Linux 内核内置的第4层（传输层）负载均衡器，是 LVS（Linux Virtual Server）项目的核心组件。&#xA;基本概念 工作层级：传输层（TCP/UDP） 实现方式：内核空间实现，高性能 功能：将 TCP/UDP 请求负载均衡到多个真实服务器 IPVS 的核心架构 客户端请求 ↓ 虚拟服务 (Virtual Service) - VIP:Port ↓ 负载均衡调度算法 ↓ 真实服务器池 (Real Servers) IPVS 的主要作用 1. 高性能负载均衡 # IPVS 处理能力可达数十万并发连接 # 相比 iptables 有更好的性能表现 2. 多种负载均衡算法 # 查看支持的调度算法 grep -i ip_vs /lib/modules/$(uname -r)/modules.builtin # 常用算法： rr # 轮询 (Round Robin) wrr # 加权轮询 (Weighted RR) lc # 最少连接 (Least Connection) wlc # 加权最少连接 (Weighted LC) sh # 源地址哈希 (Source Hashing) dh # 目标地址哈希 (Destination Hashing) 3. 多种工作模式 NAT 模式（网络地址转换） # 请求和响应都经过负载均衡器 # 配置示例 ipvsadm -A -t 192.168.1.100:80 -s rr ipvsadm -a -t 192.168.1.100:80 -r 10.244.1.10:80 -m ipvsadm -a -t 192.168.1.100:80 -r 10.244.1.11:80 -m DR 模式（直接路由） # 响应直接返回客户端，不经过负载均衡器 # 高性能模式 ipvsadm -A -t 192.168.1.100:80 -s rr ipvsadm -a -t 192.168.1.100:80 -r 10.244.1.10:80 -g ipvsadm -a -t 192.168.1.100:80 -r 10.244.1.11:80 -g TUN 模式（IP 隧道） # 通过 IP 隧道转发请求 ipvsadm -A -t 192.168.1.100:80 -s rr ipvsadm -a -t 192.168.1.100:80 -r 10.244.1.10:80 -i ipvsadm -a -t 192.168.1.100:80 -r 10.244.1.11:80 -i IPVS 在 Kubernetes 中的应用 kube-proxy IPVS 模式的优势 # 性能对比 iptables: O(n) 链式查找，规则多时性能下降 ipvs: O(1) 哈希表查找，高性能 Kubernetes 中的 IPVS 配置 # 查看 kube-proxy 是否使用 IPVS 模式 kubectl -n kube-system get pods -l k8s-app=kube-proxy -o yaml | grep mode # 查看 IPVS 规则 ipvsadm -Ln IPVS 的核心功能 1. 连接调度 # 不同调度算法的应用场景 rr # 通用场景，服务器性能相近 wrr # 服务器性能差异较大 lc # 长连接服务，如数据库 sh # 会话保持需求 2. 健康检查 # IPVS 本身不提供健康检查 # 需要配合 keepalived 或其他健康检查工具 3. 会话保持 # 使用源地址哈希实现会话保持 ipvsadm -A -t 192.168.1.100:80 -s sh IPVS 管理命令详解 基本操作 # 添加虚拟服务 ipvsadm -A -t|u|f &lt;service-address&gt; [-s scheduler] # 添加真实服务器 ipvsadm -a -t|u|f &lt;service-address&gt; -r &lt;server-address&gt; [-g|i|m] [-w weight] # 示例 ipvsadm -A -t 192.168.1.100:80 -s wlc ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:8080 -m -w 1 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:8080 -m -w 2 监控和统计 # 查看连接统计 ipvsadm -Ln --stats ipvsadm -Ln --rate # 查看当前连接 ipvsadm -Lnc # 查看超时设置 ipvsadm -L --timeout IPVS 与相关技术对比 IPVS vs iptables 特性 IPVS iptables 性能 O(1) 哈希查找 O(n) 链式查找 规模 支持大量服务 规则多时性能下降 功能 专业负载均衡 通用防火墙 算法 多种调度算法 简单轮询 IPVS vs Nginx 特性 IPVS Nginx 层级 第4层 (传输层) 第7层 (应用层) 性能 内核级，更高 用户空间，功能丰富 功能 基础负载均衡 内容路由、SSL终止等 实际应用场景 1. Kubernetes Service 代理 # kube-proxy 为每个 Service 创建 IPVS 规则 ipvsadm -Ln # 输出示例： TCP 10.96.0.1:443 rr -&gt; 192.168.1.10:6443 Masq 1 0 0 TCP 10.96.0.10:53 rr -&gt; 10.244.0.5:53 Masq 1 0 0 2. 高可用负载均衡 # 配合 keepalived 实现高可用 # 主备负载均衡器 + IPVS 3. 数据库读写分离 # 使用 IPVS 分发数据库连接 ipvsadm -A -t 192.168.1.100:3306 -s lc ipvsadm -a -t 192.168.1.100:3306 -r 192.168.1.20:3306 -m ipvsadm -a -t 192.168.1.100:3306 -r 192.168.1.21:3306 -m 总结 IPVS 的主要用途：</description>
    </item>
  </channel>
</rss>