多服务器协调#

当您运行多个 LMCache 多进程 (MP) 服务器时,**MP 协调器**是一个独立的服务,它们会向其注册,从而为您提供每个运行中的服务器的单一、全队视图。每个 MP 服务器独立缓存;协调器将它们结合成一个协调的队列。

运行协调器#

协调器是一个 FastAPI 服务。使用以下命令启动它:

lmcache coordinator

预期的日志输出:

LMCache INFO: MP coordinator listening on http://0.0.0.0:9300

CLI 接受 --host--port--instance-timeout--health-check-interval;任何标志都会覆盖下面匹配的环境变量。有关详细信息,请参见 lmcache coordinator。同样,协调器仍然可以通过 python3 -m lmcache.v1.mp_coordinator 作为模块启动。

配置#

协调器通过 LMCACHE_MP_COORDINATOR_* 环境变量进行配置:

环境变量

默认

描述

LMCACHE_MP_COORDINATOR_HOST

0.0.0.0

HTTP服务器绑定的主机。

LMCACHE_MP_COORDINATOR_PORT

9300

HTTP服务器绑定的端口。

LMCACHE_MP_COORDINATOR_INSTANCE_TIMEOUT

30

在没有心跳的情况下经过的秒数,之后服务器将从集群中移除。

LMCACHE_MP_COORDINATOR_HEALTH_CHECK_INTERVAL

10

健康检查扫描之间的秒数。0 禁用逐出。

连接 MP 服务器#

当您使用 --coordinator-url 指向一个协调器时,MP 服务器(lmcache server)会加入协调器。它在启动时注册,运行时进行心跳,关闭时注销——所有这些都在服务器自己的事件循环中。这是可选的:如果未设置 URL,服务器将按以前的方式运行。每个标志都可以回退到匹配的 LMCACHE_COORDINATOR_* 环境变量(对于 Kubernetes 向下 API 很方便);显式标志优先于环境变量。

标志(在 MP 服务器上)

环境回退

描述

--coordinator-url

LMCACHE_COORDINATOR_URL

协调器基础 URL,例如 http://coordinator:9300。设置后启用注册。

--coordinator-advertise-ip

LMCACHE_COORDINATOR_ADVERTISE_IP

协调器应通过此服务器访问的 IP(默认为服务器的外部 IP)。

--coordinator-heartbeat-interval

LMCACHE_COORDINATOR_HEARTBEAT_INTERVAL

心跳之间的秒数(必须为 > 0,默认值为 5)。保持远低于协调器的 INSTANCE_TIMEOUT

服务器在其遥测身份下注册 (--service-instance-id / OTel service.instance.id);如果未设置,则协调器会分配一个 ID。

注册是尽力而为的:如果协调器无法访问,MP 服务器会记录警告,持续重试,并继续提供服务。启动时会拒绝格式错误的心跳间隔值。

检查集群#

两个只读端点让您观察协调器:

  • GET /instances -- 列出每个注册的 MP 服务器。

  • GET /healthz -- 协调器存活探测(用于 Kubernetes)。

curl -s http://localhost:9300/instances
# -> {"instances": [{"instance_id": "...", "ip": "10.0.0.5", "http_port": 8080, ...}]}

curl -s http://localhost:9300/healthz
# -> {"status": "healthy"}