IPvs-sysctl

/proc/sys/net/ipv4/vs/* 变量:

am_droprate - 整数

默认值 10

它设置始终模式丢包率,用于丢包率防御的模式3中。

amemthresh - 整数

默认值 1024

它设置可用内存阈值(以页为单位),用于自动防御模式中。当没有足够的可用内存时,将启用相应的策略,并将变量自动设置为2,否则禁用该策略,并将变量设置为1。

backup_only - 布尔值
  • 0 - 禁用(默认)

  • 非0 - 启用

如果设置,则在服务器处于备份模式时禁用 director 功能,以避免 DR/TUN 方法的包循环。

conn_reuse_mode - 整数

1 - 默认

控制 ipvs 如何处理检测到端口重用的连接。它是一个位图,值为:

0:禁用对端口重用的任何特殊处理。新连接将传递到为先前连接提供服务的同一真实服务器。

位 1:在安全时启用新连接的重新调度。也就是说,只要 expire_nodest_conn 和对于 TCP 套接字,当连接处于 TIME_WAIT 状态时(仅在使用 NAT 模式时才有可能)。

位 2:是位 1 加上,对于 TCP 连接,当连接处于 FIN_WAIT 状态时,因为这是负载均衡器在直接路由模式下看到的最后一个状态。此位有助于向非常繁忙的集群添加新的真实服务器。

conntrack - 布尔值
  • 0 - 禁用(默认)

  • 非0 - 启用

如果设置,则为 IPVS 处理的连接维护连接跟踪条目。

如果要由有状态防火墙规则处理 IPVS 处理的连接,则应启用此设置。也就是说,使用连接跟踪的 iptables 规则。否则,禁用此设置是一种性能优化。

无论此设置如何,由 IPVS FTP 应用程序模块处理的连接都将具有连接跟踪条目。

仅当 IPVS 使用 CONFIG_IP_VS_NFCT 编译时可用。

cache_bypass - 布尔值
  • 0 - 禁用(默认)

  • 非0 - 启用

如果启用,则当没有可用的缓存服务器且目标地址不是本地地址时(iph->daddr 是 RTN_UNICAST),将数据包直接转发到原始目标。它主要用于透明 Web 缓存集群。

debug_level - 整数
  • 0 - 传输错误消息(默认)

  • 1 - 非致命错误消息

  • 2 - 配置

  • 3 - 目标垃圾

  • 4 - 丢弃条目

  • 5 - 服务查找

  • 6 - 调度

  • 7 - 连接新建/过期、查找和同步

  • 8 - 状态转换

  • 9 - 绑定目标、模板检查和应用程序

  • 10 - IPVS 数据包传输

  • 11 - IPVS 数据包处理 (ip_vs_in/ip_vs_out)

  • 12 或更多 - 数据包遍历

仅当 IPVS 使用 CONFIG_IP_VS_DEBUG 编译时可用。

更高的调试级别包括较低调试级别的消息,因此设置调试级别 2 包括级别 0、1 和 2 的消息。因此,级别越高,日志记录越详细。

drop_entry - 整数
  • 0 - 禁用(默认)

drop_entry 防御是为了随机丢弃连接哈希表中的条目,只是为了为新连接收集一些内存。在当前代码中,可以每秒激活一次 drop_entry 过程,然后它随机扫描整个哈希表的 1/32,并丢弃处于 SYN-RECV/SYNACK 状态的条目,这应该对 syn-flooding 攻击有效。

drop_entry 的有效值是从 0 到 3,其中 0 表示此策略始终禁用,1 和 2 表示自动模式(当没有足够的可用内存时,启用该策略,并将变量自动设置为 2,否则禁用该策略,并将变量设置为 1),3 表示该策略始终启用。

drop_packet - 整数
  • 0 - 禁用(默认)

drop_packet 防御旨在转发到真实服务器之前丢弃 1/rate 个数据包。如果速率为 1,则丢弃所有传入数据包。

值的定义与 drop_entry 的定义相同。在自动模式下,速率由以下公式确定:当可用内存小于可用内存阈值时,速率 = amemthresh / (amemthresh - available_memory)。当设置模式 3 时,始终模式丢包率由 /proc/sys/net/ipv4/vs/am_droprate 控制。

est_cpulist - CPULIST

允许用于估计 kthread 的 CPU

语法:标准 cpulist 格式 空列表 - 停止 kthread 任务和估计 默认 - 系统用于 kthread 的 housekeeping CPU

示例:“all”:所有可能的 CPU “0-N”:所有可能的 CPU,N 表示最后一个 CPU 编号 “0,1-N:1/2”:第一个和所有具有奇数的 CPU ““:空列表

est_nice - 整数

默认值 0 有效范围:-20(更有利).. 19(更不利)

用于估计 kthread 的 Nice 值(调度优先级)

expire_nodest_conn - 布尔值
  • 0 - 禁用(默认)

  • 非0 - 启用

默认值为 0,当其目标服务器不可用时,负载均衡器将静默丢弃数据包。当用户空间监控程序删除目标服务器(由于服务器过载或错误检测)并在以后添加回服务器时,这可能很有用,并且与服务器的连接可以继续。

如果启用此功能,则当数据包到达且其目标服务器不可用时,负载均衡器将立即使连接过期,然后客户端程序将收到连接已关闭的通知。这相当于某些人要求的在其目标不可用时刷新连接的功能。

expire_quiescent_template - 布尔值
  • 0 - 禁用(默认)

  • 非0 - 启用

当设置为非零值时,当目标服务器处于静默状态时,负载均衡器将使持久性模板过期。当用户通过将其权重设置为 0 来使目标服务器静默,并且希望将后续持久连接发送到不同的目标服务器时,这可能很有用。默认情况下,允许新的持久连接连接到静默目标服务器。

如果启用此功能,则当要使用持久性模板来调度新连接并且目标服务器处于静默状态时,负载均衡器将使持久性模板过期。

ignore_tunneled - 布尔值
  • 0 - 禁用(默认)

  • 非0 - 启用

如果设置,ipvs 将在所有无法识别协议的数据包上设置 ipvs_property。这可以防止我们路由隧道协议(如 ipip),这有助于防止重新调度已隧道传输到 ipvs 主机的数据包(即,防止 ipvs 在 ipvs 也充当真实服务器时进行路由循环)。

nat_icmp_send - 布尔值
  • 0 - 禁用(默认)

  • 非0 - 启用

当负载均衡器从真实服务器接收数据包,但连接条目不存在时,它控制为 VS/NAT 发送 icmp 错误消息 (ICMP_DEST_UNREACH)。

pmtu_disc - 布尔值
  • 0 - 禁用

  • 非 0 - 启用(默认)

默认情况下,拒绝所有超过 PMTU 的 DF 数据包,并显示 FRAG_NEEDED,而与转发方法无关。对于 TUN 方法,可以禁用该标志以对这些数据包进行分片。

secure_tcp - 整数
  • 0 - 禁用(默认)

secure_tcp 防御是使用更复杂的 TCP 状态转换表。对于 VS/NAT,它还会延迟进入 TCP ESTABLISHED 状态,直到完成三次握手。

值的定义与 drop_entry 和 drop_packet 的定义相同。

sync_threshold - 2 个整数的向量:sync_threshold、sync_period

默认值 3 50

它设置同步阈值,这是连接在同步之前需要接收的最小传入数据包数。每次其传入数据包数对 sync_period 取模等于阈值时,都会同步连接。阈值的范围为 0 到 sync_period。

当 sync_period 和 sync_refresh_period 为 0 时,仅为状态更改发送同步,或者仅当 pkts 匹配 sync_threshold 时发送一次同步

sync_refresh_period - 无符号整数

默认值 0

以秒为单位,报告的连接计时器中的差异会触发新的同步消息。如果自上次同步以来连接状态未更改,则可以使用它来避免指定周期(或连接超时的一半,如果较短)的同步消息。

这对于具有高流量的正常连接很有用,可以降低同步速率。此外,以 sync_refresh_period/8 的周期重试 sync_retries 次。

sync_retries - 整数

默认值 0

定义以 sync_refresh_period/8 为周期的同步重试次数。有助于防止同步消息丢失。sync_retries 的范围为 0 到 3。

sync_qlen_max - 无符号长整型

尚未发送的排队同步消息的硬性限制。它默认为内存页面的 1/32,但实际上表示消息数。当发送速率低于排队速率时,它可以保护我们免于分配大量内存。

sync_sock_size - 整数

默认值 0

SNDBUF(主服务器)或 RCVBUF(从服务器)套接字限制的配置。默认值为 0(保留系统默认值)。

sync_ports - 整数

默认值 1

主服务器和备份服务器可用于同步流量的线程数。每个线程将使用单个 UDP 端口,线程 0 将使用默认端口 8848,而最后一个线程将使用端口 8848+sync_ports-1。

snat_reroute - 布尔值
  • 0 - 禁用

  • 非 0 - 启用(默认)

如果启用,则重新计算来自真实服务器的 SNAT 数据包的路由,以便像数据包来自 director 一样进行路由。否则,它们将像由 director 转发一样进行路由。

如果策略路由生效,则来自 director 的数据包的路由可能与由 director 转发的数据包的路由不同。

如果策略路由未生效,则重新计算的路由将始终与原始路由相同,因此禁用 snat_reroute 并避免重新计算是一种优化。

sync_persist_mode - 整数

默认值 0

在使用持久性时控制连接的同步

0:所有类型的连接都已同步

1:尝试根据连接类型减少同步流量。对于持久服务,避免同步正常连接,仅对持久性模板进行同步。在这种情况下,对于 TCP 和 SCTP,可能需要在备份服务器上启用 sloppy_tcp 和 sloppy_sctp 标志。对于非持久服务,不应用此类优化,假定为模式 0。

sync_version - 整数

默认值 1

发送同步消息时使用的同步协议的版本。

0 选择原始同步协议(版本 0)。应在向仅了解原始同步协议的旧系统发送同步消息时使用此协议。

1 选择当前同步协议(版本 1)。应尽可能使用此协议。

具有此 sync_version 条目的内核能够接收同步协议版本 1 和版本 2 的消息。

run_estimation - 布尔值

0 - 禁用 非 0 - 启用(默认)

如果禁用,则将暂停估计,并停止 kthread 任务。

您始终可以通过将此值设置为 1 来重新启用估计。但请注意,重新启用后的第一次估计并不准确。