使用虚拟 IP 地址
使用虚拟 IP 地址
DC/OS 可将流量从单个虚拟 IP (VIP) 映射到多个 IP 地址和端口。DC/OS VIP 是基于名称的,这意味着客户端是连接服务地址而非 IP 地址。
DC/OS 自动生成不会与 IP VIP 相冲突的基于名称的 VIP,因此您不必担心冲突问题。此特性允许在安装服务时自动创建基于名称的 VIP。
基于名称的 VIP 包含以下组件:
- 专用虚拟 IP 地址
- 端口(服务可用的端口)
- 服务名
portDefininitions
如果不使用 Docker 容器portMappings
如果使用 Docker 容器
### 前提条件
<service-name>.marathon.l4lb.thisdcos.directory:<port>
- 您应用程序独特的 VIP 地址池。
创建 VIP
- 从 DC/OS GUI,单击服务选项卡,然后单击运行服务。
- 在网络选项卡上,选择网络类型 > 虚拟网络:dcos。
-
展开添加服务端点,为以下内容提供回复:
- 容器端口
- 服务端点名称
- 端口映射
- 负载均衡服务地址
my-service.marathon.l4lb.thisdcos.directory:5555
的服务。 - 单击查看和运行和运行服务。
broker.<service.name>.l4lb.thisdcos.directory:9092
。
按照以下步骤查看 Kafka 的 VIP。
### 通过 GUI
- 单击网络 > 网络,然后选择dcos。
- 选择任务以查看详情。 图 3 - VIP 服务详情
通过 CLI
前提条件: Kafka 服务和 CLI 必须 已安装。
-
运行此命令:
dcos kafka endpoints broker
输出应类似于:
{
"address": [
"10.0.2.199:9918"
],
"zookeeper": "master.mesos:2181/dcos-service-kafka",
"dns": [
"broker-0.kafka.mesos:9918"
],
"vip": "broker.kafka.l4lb.thisdcos.directory:9092"
}
常见问题
连接似乎随意关闭
数据库等长时间连接的应用程序(如 Postgresql)通常会出现这种情况。若要修复,请尝试开启 keepalive。keepalive 可以是应用程序特定的机制(如心跳),或是 TCP keepalive 等协议中的某些内容。需要有 keepalive,因为负载均衡器无法区分空闲连接或死机连接,原因是数据包在任何一种情况下都不会被发送。默认超时取决于内核配置,但通常为 5 分钟。