多服务器协调#
当您运行多个 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_* 环境变量进行配置:
环境变量 |
默认 |
描述 |
|---|---|---|
|
|
HTTP服务器绑定的主机。 |
|
|
HTTP服务器绑定的端口。 |
|
|
在没有心跳的情况下经过的秒数,之后服务器将从集群中移除。 |
|
|
健康检查扫描之间的秒数。 |
连接 MP 服务器#
当您使用 --coordinator-url 指向一个协调器时,MP 服务器(lmcache server)会加入协调器。它在启动时注册,运行时进行心跳,关闭时注销——所有这些都在服务器自己的事件循环中。这是可选的:如果未设置 URL,服务器将按以前的方式运行。每个标志都可以回退到匹配的 LMCACHE_COORDINATOR_* 环境变量(对于 Kubernetes 向下 API 很方便);显式标志优先于环境变量。
标志(在 MP 服务器上) |
环境回退 |
描述 |
|---|---|---|
|
|
协调器基础 URL,例如 |
|
|
协调器应通过此服务器访问的 IP(默认为服务器的外部 IP)。 |
|
|
心跳之间的秒数(必须为 |
服务器在其遥测身份下注册 (--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"}