如何配置网络负载均衡器

注意

网络负载均衡器目前适用于 OVN 网络.

网络负载均衡器类似于转发,它们允许将外部 IP 地址上的特定端口转发到负载均衡器所属网络中内部 IP 地址上的特定端口。负载均衡器和转发之间的区别在于,负载均衡器可用于在多个内部后端地址之间共享入站流量。

如果您有有限的外部 IP 地址,或想要在多个实例上共享单个外部地址和端口,则此功能非常有用。

负载均衡器由以下部分组成

  • 单个外部监听 IP 地址。

  • 一个或多个命名的后端,包括内部 IP 和可选的端口范围。

  • 一个或多个监听端口范围,配置为转发到一个或多个命名的后端。

创建网络负载均衡器

使用以下命令创建网络负载均衡器

incus network load-balancer create <network_name> <listen_address> [configuration_options...]

每个负载均衡器都分配给一个网络。它需要一个外部监听地址(有关可以负载均衡哪些地址的更多信息,请参阅 监听地址要求)。

负载均衡器属性

网络负载均衡器具有以下属性

属性

类型

必需

描述

listen_address

字符串

要监听的 IP 地址

description

字符串

网络负载均衡器的描述

config

字符串集

配置选项,作为键值对(见下文)

backends

后端列表

后端规范 的列表

ports

端口列表

端口规范 的列表

配置选项

以下配置选项可用于负载均衡器

healthcheck

是否对后端执行检查

healthcheck
类型

布尔值

默认值

false

healthcheck.failure_count

将后端视为脱机的失败测试次数

healthcheck.failure_count
类型

整数

默认值

3

healthcheck.interval

健康检查之间的时间间隔(以秒为单位)

healthcheck.interval
类型

整数

默认值

10

healthcheck.success_count

将后端视为在线的成功测试次数

healthcheck.success_count
类型

整数

默认值

3

healthcheck.timeout

测试超时

healthcheck.timeout
类型

整数

默认值

30

user.*

自由格式的用户键值存储

user.*
类型

字符串

用户键可用于搜索。

监听地址要求

以下要求必须满足,才能使用有效的监听地址

  • 允许的监听地址必须在上行网络的 ipv{n}.routes 设置或项目的 restricted.networks.subnets 设置(如果已设置)中定义。

  • 监听地址不得与该网络中其他网络或实体正在使用的子网重叠。

配置后端

您可以将后端规范添加到网络负载均衡器以定义目标地址(以及可选的端口)。后端目标地址必须与负载均衡器关联的网络位于同一子网中。

使用以下命令添加后端规范

incus network load-balancer backend add <network_name> <listen_address> <backend_name> <listen_ports> <target_address> [<target_ports>]

目标端口是可选的。如果未指定,负载均衡器将使用后端的后端目标端口的监听端口。

如果您想将流量转发到不同的端口,您可以选择以下两种方式

  • 指定单个目标端口,以将来自所有监听端口的流量转发到此目标端口。

  • 指定一组目标端口,端口数量与监听端口数量相同,以将来自第一个监听端口的流量转发到第一个目标端口,将来自第二个监听端口的流量转发到第二个目标端口,依此类推。

后端属性

网络负载均衡器后端具有以下属性

属性

类型

必需

描述

name

字符串

后端的名称

target_address

字符串

要转发到的 IP 地址

target_port

字符串

目标端口(例如 70,80-9090),如果为空,则与 端口listen_port 相同。

description

字符串

后端描述

配置端口

您可以在网络负载均衡器中添加端口规范,以将来自侦听地址上特定端口的流量转发到一个或多个目标后端上的特定端口。

使用以下命令添加端口规范

incus network load-balancer port add <network_name> <listen_address> <protocol> <listen_ports> <backend_name>[,<backend_name>...]

您可以指定单个侦听端口或一组端口。指定的后端必须具有与端口的侦听端口设置兼容的目标端口设置。

端口属性

网络负载均衡器端口具有以下属性

属性

类型

必需

描述

protocol

字符串

端口的协议 (tcpudp)

listen_port

字符串

侦听端口(例如 80,90-100)

target_backend

后端列表

要转发到的后端名称

description

字符串

端口描述

编辑网络负载均衡器

使用以下命令编辑网络负载均衡器

incus network load-balancer edit <network_name> <listen_address>

此命令以 YAML 格式打开网络负载均衡器以供编辑。您可以编辑通用配置、后端和端口规范。

删除网络负载均衡器

使用以下命令删除网络负载均衡器

incus network load-balancer delete <network_name> <listen_address>