进阶 docs.memcached.org 2026-10-13 18:51:48 · 21 阅读

第12章 Memcached 内置代理运行指南

第12章:运行内置代理

运行内置代理

本页介绍如何将 Memcached 作为其他 Memcached 服务器的代理运行。 关于代理的总体概述,请参阅“内置代理”。若需了解编译和运行代理的手动入门教程,请参阅“内置代理快速入门”。

开始之前

运行代理前,您需要准备以下内容: * 已启用代理功能并安装到系统上的 Memcached。 * 已下载到文件系统某路径的代理路由库文件。 * 您创建的代理配置文件。

更多信息,请参阅“安装内置代理”和“配置内置代理”。

运行代理

要运行代理,请使用 proxy_config 和 proxy_arg 命令行选项启动启用了代理功能的 Memcached 二进制文件: memcached -o proxy_config=ROUTE_LIBRARY_PATH,proxy_arg=CONFIGURATION_PATH FURTHER_ARGUMENTS

请替换以下参数: * ROUTE_LIBRARY_PATH:代理路由库文件的系统路径。 * CONFIGURATION_PATH:您的代理配置文件的系统路径。 * FURTHER_ARGUMENTS:额外的 Memcached 命令行标志。获取完整列表,请运行 memcached --help。

要在后台运行代理,在命令末尾添加 &,遵循常规 Unix 惯例。

示例命令

以下示例命令启动一个具有下列特征的 Memcached 代理: * 代理加载其自带的名为 routelib 的路由库文件。关于更新或修改此文件的更多信息,请参阅“下载并构建代理”。 * 代理加载存储在用户主目录中名为 my_config.lua 的配置文件。 * 代理在 TCP 端口 11212 上监听连接。 * 代理在后台运行。

# 使用内置的 routelib memcached -o proxy_config=routelib,proxy_arg=$HOME/my_config.lua -p 11212 & # 手动使用修改过的或更新的 routelib memcached -o proxy_config=$HOME/routelib.lua,proxy_arg=$HOME/my_config.lua -p 11212 &

测试连接

启动后,Memcached 代理提供的网络接口与普通 Memcached 服务器非常相似。要测试其是否已启动并在预期端口上监听,可使用 telnet 连接该端口,并尝试执行 Memcached 协议中的基本命令。

例如,如果代理运行在端口 11211 上,您可以使用以下命令直接连接代理: telnet 11211

如果 Memcached 正在该端口运行,telnet 程序返回的响应类似于以下内容: Trying ::1... Connected to localhost. Escape character is '^]'.

请求一个任意键名(如 proxy-test)下的数据,该键名无需对应您的 Memcached 节点中已知的任何键: get proxy-test

如果有数据,Memcached 会回复该键下存储的数据,随后以 END 结尾。

要退出此测试连接,请执行以下步骤: 1. 按 Ctrl + ]。 2. 在 telnet> 提示符下输入 quit。

运行具有多个标记 TCP 端口的代理

您可以选择让代理监听多个 TCP 端口,并为每个端口分配一个短文本字符串标签。这允许您在代理配置文件中定义多个完整的路由树,代理将根据客户端连接的端口以不同方式处理请求。

要指定多个带标记的 TCP 端口,请为每个端口包含一次 -l 或 --listen 命令行标志,语法为 TAG:HOST:PORT。您可以混合使用无标记端口和带标记端口。

例如,以下命令运行代理并启用三个 TCP 端口。其中两个端口分别标记为 main 和 alt,另一个端口没有关联任何标签: memcached -o proxy_config=routelib,proxy_arg=$HOME/my_config.lua -l 127.0.0.1:11211 -l main:127.0.0.1:11212 -l alt:127.0.0.1:11213 &

关于根据连接端口配置代理处理请求的更多信息,请参阅“定义多个路由树”。

查看代理统计信息

要查看 Memcached 进程收集的统计数据,请向代理发送 stats proxy 命令。

输出类似于以下内容: STAT active_req_limit 0 STAT buffer_memory_limit 0 STAT buffer_memory_used 0 STAT vm_gc_runs 3 STAT vm_memory_kb 384 STAT cmd_mg 0 STAT cmd_ms 0 STAT cmd_md 0 STAT cmd_mn 0 STAT cmd_ma 0 STAT cmd_me 0 STAT cmd_get 2 STAT cmd_gat 0 STAT cmd_set 0 STAT cmd_add 0 STAT cmd_cas 0 STAT cmd_gets 0 STAT cmd_gats 0 STAT cmd_incr 0 STAT cmd_decr 0 STAT cmd_touch 0 STAT cmd_append 0 STAT cmd_prepend 0 STAT cmd_delete 0 STAT cmd_replace 0 END

记录代理事件

要捕获与代理相关的 Memcached 事件日志,请向代理发送 watch proxyevents 命令。

代理将响应 OK。在该连接的剩余时间内,代理会流式传输任何发生的代理相关事件的日志。

例如,如果您运行 watch proxyevents 随后某个后端服务器意外宕机,您可能会看到以下此类消息: ts=1726602194.226721 gid=4 type=proxy_backend error=disconnected name=127.0.0.1 port=11213 label=127.0.0.1:11213 depth=0 rbuf= ts=1726602194.227476 gid=11 type=proxy_backend error=reading name=127.0.0.1 port=11213 label=127.0.0.1:11213 depth=0 rbuf= ts=1726602194.227681 gid=12 type=proxy_backend error=connecting name=127.0.0.1 port=11213 label=127.0.0.1:11213 depth=0 rbuf= ts=1726602194.227708 gid=13 type=proxy_backend error=connecting name=127.0.0.1 port=11213 label=127.0.0.1:11213 depth=0 rbuf= ts=1726602194.227890 gid=14 type=proxy_backend error=markedbad name=127.0.0.1 port=11213 label=127.0.0.1:11213 retry=3 ts=1726602194.226510 gid=3 type=proxy_backend error=disconnected name=127.0.0.1 port=11213 label=127.0.0.1:11213 depth=0 rbuf=

配置示例 基础设施示例

评论 (0)