Mendcached mendengarkan pada antarmuka yang dipilih

9

Saya mengatur Memcached pada server Debian yang memiliki dua antarmuka - eth0 (publik) dan eth1 (pribadi).

Saya ingin Memcached untuk mendengarkan baik eth1 dan lo (loopback) sehingga dapat diakses bahkan jika jaringan pribadi turun tetapi BUKAN eth0 (publik).

Dari halaman manual untuk memcached saya mengerti bahwa -lopsi hanya dapat mengambil satu alamat IP. Saya berpikir untuk menggunakan soket UNIX untuk koneksi lokal tetapi halaman manual mengatakan

-s
Unix socket path untuk mendengarkan ( menonaktifkan dukungan jaringan ).

Satu-satunya metode lain yang saya tahu adalah memblokir koneksi via eth0 menggunakan IPTables. Apakah ada solusi lain yang tidak menggunakan firewall?

A.Jesin
sumber

Jawaban:

8

Tidak semudah mendaftar antarmuka dan mendapatkan semua alamat terikatnya, dan itu membutuhkan mengetahui semua alamat yang terikat pada antarmuka, tetapi itu bisa dilakukan. (Perhatikan bahwa Anda tidak bisa hanya daftar beberapa antarmuka, seperti yang Anda temukan - baik antarmuka tunggal, semua antarmuka, atau daftar IP.)

The -lpilihan dapat mengambil sebuah antarmuka, INADDR_ANY (yang berarti semua alamat pada semua interface), atau koma dipisahkan daftar alamat IP. Alamat IP mungkin memiliki spesifikasi port opsional. Jadi misalnya

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

akan memcached mendengarkan lo0 hanya pada 127.0.0.1 pada port 11211 dan 11212 dan juga ke alamat 10.1.2.3 (pada antarmuka mana pun itu) pada port apa pun yang diatur oleh -patau -U.

Anda harus mengetahui / memiliki semua alamat yang ingin Anda ikat. Ini mungkin kesenjangan yang besar antara lo0dan daftar IP (karena keterbatasan sumber daya internal memcached tidak akan mengizinkan pengikatan ke ~ 2 ^ 24 alamat pada antarmuka itu)

Menara Eric
sumber
Menggunakan daftar alamat IP yang dipisahkan koma tidak bekerja. Terima kasih banyak! Apakah fitur ini diperkenalkan dalam versi tertentu? Karena saya tidak dapat menemukan baris "atau daftar alamat IP yang dipisahkan koma" di halaman manual mana pun.
A.Jesin
1
@ A.Jesin: Mencolek konfigurasi lama, ini sudah ada sejak setidaknya 2009. Sepertinya patch untuk beberapa IP ditambahkan pada 2007 grokbase.com/t/danga/memcached/078qdmzphz/… dan lists.danga.com/ pipermail / memcached / attachments / 20070823 /… . Tidak jelas bagi saya apakah ini memcached upstream atau beberapa mod lokal yang akhirnya membuatnya upstream.
Eric Towers
@ A.Jesin: Juga, jangan lupa bahwa di situs StackExchange Anda dapat "menerima" jawaban yang paling cocok untuk Anda (sehingga, di masa depan, orang lain yang memiliki pertanyaan yang sama akan segera menemukan jawaban terbaik).
Eric Towers
Menarik! Ini tampaknya telah membuatnya upstream tetapi versi di CentOS 6.x belum mendukungnya.
faker
10

Seperti yang ditunjukkan dalam jawaban yang diterima, versi yang lebih baru mendukungnya:

memcached -l 127.0.0.1:11211,127.0.0.2:11211  

atau

memcached -l 127.0.0.1:11211 -l 127.0.0.2:11211  

Versi yang lebih lama (dikirimkan dengan CentOS 6.5 atau yang lebih lama) belum mendukung hal itu, mereka dapat mendengarkan semua antarmuka, satu alamat IP atau soket.
Tidak ada kombinasi keduanya.

Satu-satunya cara Anda untuk menyelesaikan ini adalah mengikatnya ke semua antarmuka dan firewall antarmuka publik atau mengikatnya ke 127.0.0.1 saja dan meneruskan permintaan ke eth1: 11211 ke lo0: 11211 via iptables.

pemalsu
sumber