我在具有两个接口的 Debian 服务器上设置 Memcached - eth0(公共)和 eth1(私有)。
我希望 Memcached 同时监听 eth1 和 lo(环回),这样即使专用网络出现故障但不是 eth0(公共)也可以访问它。
从memcached的手册页我了解到该-l
选项只能使用一个 IP 地址。我想过使用 UNIX 套接字进行本地连接,但手册页说
-s
要侦听的 Unix 套接字路径(禁用网络支持)。
我知道的唯一其他方法是使用 IPTables 通过 eth0 阻止连接。有没有其他不使用防火墙的解决方案?
fak*_*ker 10
正如接受的答案中指出的那样,较新的版本确实支持它:
memcached -l 127.0.0.1:11211,127.0.0.2:11211
Run Code Online (Sandbox Code Playgroud)
或者
memcached -l 127.0.0.1:11211 -l 127.0.0.2:11211
Run Code Online (Sandbox Code Playgroud)
旧版本(随 CentOS 6.5 或更早版本提供)尚不支持,它们可以侦听所有接口、单个 IP 地址或套接字。
不是这些的任何组合。
解决此问题的唯一方法是将其绑定到所有接口并防火墙公共接口或仅将其绑定到 127.0.0.1 并通过 iptables 将请求转发到 eth1:11211 到 lo0:11211。
它不像列出一个接口并获取其所有绑定地址那么方便,它需要知道所有绑定到一个接口的地址,但它可以做到。(请注意,您不能像发现的那样只列出某些接口——单个接口、所有接口或 IP 列表。)
该-l
选项可以采用接口、INADDR_ANY(表示所有接口上的所有地址)或逗号分隔的 IP 地址列表。IP 地址可能具有可选的端口规范。所以,例如
memcached -l 127.0.0.1:11211,127.0.0.1:11212,10.1.2.3
Run Code Online (Sandbox Code Playgroud)
将让 memcached 仅在端口 11211 和 11212 上的 127.0.0.1 上侦听 lo0,并且还会侦听由-p
或设置的任何端口上的地址 10.1.2.3(无论在哪个接口上)-U
。
您需要知道/拥有要绑定的所有地址。这可能lo0
与 IP 列表之间存在很大差距(因为 memcached 的默认内部资源限制不允许绑定到该接口上的 ~2^24 地址)
归档时间: |
|
查看次数: |
13563 次 |
最近记录: |