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

Поддерживает ли Memcached IPv6

Кто-нибудь использовал Memcached с IPv6? Можете ли вы предоставить какие-либо советы по настройке, ошибки или упомянуть какие-либо проблемы со стабильностью, которые у вас были?

memcached 1.2.5 и новее должен иметь поддержку IPv6.
Я не могу поручиться за его функциональность, поскольку я лично не использую memcached, но ищу "IPv6" в их баг трекер не показывает ничего вопиюще сломанного, поэтому я должен предположить, что он работает хотя бы в первом приближении :)

memcached поддерживает IPv6. Вы можете указать его при запуске, используя -l параметр. Как ведут себя IPv4 и IPv6 по сравнению с установкой по умолчанию? Давайте посмотрим на сеанс Debian, в котором мы устанавливаем memcached, прослушиваем порт (ы) по умолчанию и запускаем два демона memcached, один из которых привязан к IP-адресу v6, а другой - к IP-адресу v4.

Linux hostname 3.0.4-linode38 #1 SMP Thu Sep 22 14:59:08 EDT 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

root@hostname:~# apt-get install memcached

Setting up memcached (1.4.5-1) ...
Starting memcached: memcached.

root@hostname:~# apt-get install libmemcached-tools libmemcached-dev

Setting up libmemcached-tools (0.40-1) ...

root@hostname:~# memccapable 
ascii quit                              [pass]
ascii version                           [pass]
ascii verbosity                         [FAIL]
1 of 54 tests failed

Мы можем использовать memccapable чтобы проверить это memcached действительно работает.


root@hostname:~# memcached -d -P /tmp/mcd.pid -v -l 2600:3c03::dead:beef:feeb:daed -u nobody -p 10001 -U 10001
root@hostname:~# memcached -d -P /tmp/mcd2.pid -v -l 10.0.1.2 -u nobody -p 10002 -U 10002

Мы только что запустили наш IPv6 memcached на порту 10001 и наш IPv4 memcached на порт 10002

root@hostname:~# memcstat --servers=127.0.0.1:11211,127.0.0.1:10001,127.0.0.1:10002
Server: 127.0.0.1 (11211)
     pid: 2131
     uptime: 689
     time: 1325757557
     version: 1.4.5

Server: 127.0.0.1 (10001)
     pid: 0
     uptime: 0
     time: 0
     version: 

Server: 127.0.0.1 (10002)
     pid: 0
     uptime: 0
     time: 0
     version: 

memcstat позволяет нам проверять состояние нескольких хостов одновременно. Мы видим, что memcached не привязан к портам localhost 10001 или 10002, что имеет смысл, поскольку мы явно указали наши IP-адреса. Теперь давайте проверим наш IPv4-адрес на наличие серверов memcached на каждом из портов.

root@hostname:~# memcstat --servers=10.0.1.2:11211,10.0.1.2:10001,10.0.1.2:10002
Server: 10.0.1.2 (11211)
     pid: 0
     uptime: 0
     time: 0
     version: 

Server: 10.0.1.2 (10001)
     pid: 0
     uptime: 0
     time: 0
     version: 

Server: 10.0.1.2 (10002)
     pid: 2699
     uptime: 89
     time: 1325757596
     version: 1.4.5

Мы видим, что наш IPv6 memcached недоступен с нашего IPv4-адреса. memcstat не (начиная с Debian 6.0.3) ccapable принимать адреса IPv6 в командной строке, поэтому мы сделаем три отдельных memccapable.

root@hostname:~# memccapable -h 2600:3c03::dead:beef:feeb:daed -p 11211
ascii quit                              [pass]
ascii version                           [pass]
ascii verbosity                         [FAIL]
1 of 54 tests failed

root@hostname:~# memccapable -h 2600:3c03::dead:beef:feeb:daed -p 10001
ascii quit                              [pass]
ascii version                           [pass]
ascii verbosity                         [FAIL]
1 of 54 tests failed

root@hostname:~# memccapable -h 2600:3c03::dead:beef:feeb:daed -p 10002
Failed to connect socket: Connection refused
Failed to connect to : Connection refused

root@hostname:~# 

Это интересно. Установка memcached по умолчанию привязана к localhost и IPv6-адресу, но не к нашему IPv4-адресу. Это может зависеть от конкретной среды сервера / хостинга. Следует отметить, что наш явно определенный порт 10002 на IPv4-адресе недоступен при указании нашего IPv6-адреса, а наш экземпляр порта 10001 доступен.

Итак, да, memcached делает поддержка IPv6. Вы также можете указать эти параметры в файле /etc/memcached.conf. Обратите внимание на предупреждение в этом файле, в котором предлагается прослушивать только интерфейс, защищенный брандмауэром. Если ваш интерфейс IPv6 является общедоступным / доступным, вы рискуете раскрыть уязвимые элементы кеша.