Назад | Перейти на главную страницу

Memcached прослушивает выбранные интерфейсы

Я устанавливаю Memcached на сервере Debian, который имеет два интерфейса - eth0 (общедоступный) и eth1 (частный).

Я хочу, чтобы Memcached прослушивал как eth1, так и lo (loopback), чтобы к нему можно было получить доступ, даже если частная сеть выйдет из строя, но НЕ eth0 (общедоступная).

Из страница руководства для memcached я понимаю, что -l опция может принимать только один IP-адрес. Я думал об использовании сокетов UNIX для локальных подключений, но на странице руководства сказано

-s
Путь к сокету Unix для прослушивания (отключает поддержку сети).

Единственный известный мне способ - заблокировать соединения через eth0 с помощью IPTables. Есть ли какое-нибудь другое решение, в котором не используется брандмауэр?

Как указано в принятом ответе, более новые версии поддерживают его:

memcached -l 127.0.0.1:11211,127.0.0.2:11211  

или

memcached -l 127.0.0.1:11211 -l 127.0.0.2:11211  

Более старые версии (поставляемые с CentOS 6.5 или ранее) еще не поддерживают это, они могут либо прослушивать все интерфейсы, один IP-адрес или сокет.
Не любое их сочетание.

Единственный способ решить эту проблему - привязать его ко всем интерфейсам и межсетевому экрану к общедоступному интерфейсу или привязать его только к 127.0.0.1 и перенаправить запросы на eth1: 11211 на lo0: 11211 через iptables.

Это не так удобно, как перечисление интерфейса и получение всех его связанных адресов, и для этого требуется знать все адреса, привязанные к интерфейсу, но это можно сделать. (Обратите внимание, что вы не можете просто перечислить некоторые интерфейсы, как вы обнаружили - один интерфейс, все интерфейсы или список IP-адресов.)

В -l опция может принимать интерфейс, INADDR_ANY (что означает все адреса на всех интерфейсах) или список IP-адресов, разделенных запятыми. IP-адрес может иметь необязательную спецификацию порта. Так, например

memcached -l 127.0.0.1:11211,127.0.0.1:11212,10.1.2.3

будет иметь memcached для прослушивания lo0 только на 127.0.0.1 на портах 11211 и 11212, а также на адрес 10.1.2.3 (на любом интерфейсе) на любом порту, установленном -p или -U.

Вы должны знать / иметь все адреса, которые хотите привязать. Возможно, это большой разрыв между lo0 и список IP-адресов (поскольку ограничения внутренних ресурсов memcached по умолчанию не разрешают привязку к ~ 2 ^ 24 адресам на этом интерфейсе)