Memcachedは選択したインターフェースでリッスンします


9

Memcachedを、eth0(パブリック)とeth1(プライベート)の2つのインターフェースを持つDebianサーバーにセットアップしています。

Memcachedでeth1とlo(ループバック)の両方をリッスンして、プライベートネットワークがダウンしてもeth0(パブリック)がダウンしていなくてもアクセスできるようにしたいと思います。

memcached のmanページから、この-lオプションは1つのIPアドレスしか使用できないことを理解しています。ローカル接続にUNIXソケットを使用することを考えましたが、マニュアルページには

-s
リッスンするUnixソケットパス(ネットワークサポートを無効にします)。

私が知っている他の唯一の方法は、IPTablesを使用してeth0経由の接続をブロックすることです。ファイアウォールを利用しない他のソリューションはありますか?

回答:


8

これは、インターフェースをリストしてバインドされたアドレスをすべて取得するほど便利ではありません。また、インターフェースにバインドされたすべてのアドレスを知る必要がありますが、それは可能です。(発見したように、単一のインターフェース、すべてのインターフェース、またはIPのリストのように、一部のインターフェースのみをリストすることはできません。)

この-lオプションは、インターフェイス、INADDR_ANY(すべてのインターフェイスのすべてのアドレスを意味する)、またはIPアドレスのコンマ区切りリストを使用できます。IPアドレスには、オプションのポート指定がある場合があります。したがって、たとえば

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

memcachedは、ポート11211および11212の127.0.0.1でのみlo0をリッスンし、-pまたはで設定されたポートのアドレス10.1.2.3(どちらのインターフェースでも)をリッスンします-U

バインドしたいすべてのアドレスを知っている/持っている必要があります。これはおそらく、lo0IPのリストとの間の大きなギャップです(memcachedのデフォルトの内部リソース制限により、そのインターフェースの〜2 ^ 24アドレスへのバインドが許可されないため)


IPアドレスのコンマ区切りリストを使用しても機能します。どうもありがとう!この機能は特定のバージョンで導入されましたか?マンページに「またはIPアドレスのカンマ区切りリスト」という行が見つからないため。
A.Jesin 2014

1
@ A.Jesin:古い構成を突っ込んで、これは少なくとも2009年以来存在しています。複数のIPのパッチが2007grokbase.com/t/danga/memcached/078qdmzphz/…lists.danga.com/に追加されたようですpipermail / memcached / attachments / 20070823 /…。これがアップストリームのmemcachedか、最終的にアップストリームになったローカルMODかは不明です。
エリックタワーズ

@ A.Jesin:また、StackExchangeサイトでは、自分に最適な答えを「受け入れる」ことができることを忘れないでください(将来、同じ質問を持つ他の人がすぐに最良の答えを見つけるようになります)。
エリックタワーズ

面白い!これはアップストリームになっているようですが、CentOS 6.xのバージョンではまだサポートされていません。
偽物14

10

受け入れられた回答で指摘されているように、新しいバージョンはそれをサポートしています:

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のみにバインドして、リクエストをiptables経由でeth1:11211からlo0:11211に転送することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.