Memcached nghe trên các giao diện được chọn


9

Tôi đang thiết lập Memcached trên máy chủ Debian có hai giao diện - eth0 (công khai) và eth1 (riêng tư).

Tôi muốn Memcached lắng nghe trên cả eth1 và lo (loopback) để có thể truy cập ngay cả khi mạng riêng bị sập nhưng KHÔNG eth0 (công khai).

Từ trang man cho memcached tôi hiểu rằng -ltùy chọn chỉ có thể lấy một địa chỉ IP. Tôi đã nghĩ đến việc sử dụng các socket UNIX cho các kết nối cục bộ nhưng trang man nói

-s
đường dẫn ổ cắm Unix để nghe ( tắt hỗ trợ mạng ).

Phương pháp khác duy nhất tôi biết là chặn kết nối thông qua eth0 bằng IPTables. Có giải pháp nào khác không sử dụng tường lửa không?

Câu trả lời:


8

Nó không thuận tiện như liệt kê một giao diện và nhận tất cả các địa chỉ bị ràng buộc của nó, và nó đòi hỏi phải biết tất cả các địa chỉ bị ràng buộc với một giao diện, nhưng nó có thể được thực hiện. (Lưu ý rằng bạn không thể chỉ liệt kê một số giao diện, như bạn đã khám phá - một giao diện duy nhất, tất cả các giao diện hoặc danh sách IP.)

Các -ltùy chọn có thể mất một giao diện, INADDR_ANY (có nghĩa là tất cả các địa chỉ trên tất cả các giao diện), hoặc một dấu phẩy tách ra danh sách các địa chỉ IP. Một địa chỉ IP có thể có một đặc điểm kỹ thuật cổng tùy chọn. Vì vậy, ví dụ

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

sẽ có memcached chỉ nghe lo0 trên 127.0.0.1 trên các cổng 11211 và 11212 và cả địa chỉ 10.1.2.3 (trên bất kỳ giao diện nào) trên bất kỳ cổng nào được đặt bởi -phoặc -U.

Bạn được yêu cầu phải biết / có tất cả các địa chỉ bạn muốn liên kết. Đây có lẽ là một khoảng cách lớn giữa lo0và một danh sách các IP (vì các giới hạn tài nguyên nội bộ mặc định của memcached sẽ không cho phép ràng buộc với ~ 2 ^ 24 địa chỉ trên giao diện đó)


Sử dụng danh sách địa chỉ IP được phân tách bằng dấu phẩy không hoạt động. Cảm ơn rất nhiều! Là tính năng này được giới thiệu trong một phiên bản cụ thể? Bởi vì tôi không thể tìm thấy dòng "hoặc danh sách địa chỉ IP được phân tách bằng dấu phẩy" trên bất kỳ trang nào.
A.Jesin

1
@ A.Jesin: chọc qua cấu hình cũ, điều này đã được khoảng từ ít nhất năm 2009. trông giống như một miếng vá cho nhiều khu công nghiệp đã được bổ sung vào năm 2007 grokbase.com/t/danga/memcached/078qdmzphz/...lists.danga.com/ pipermail / memcached / file đính kèm / 20070823 / Lỗi . Không rõ ràng với tôi nếu điều này là ngược dòng memcached hoặc một số mod cục bộ cuối cùng đã làm cho nó ngược dòng.
Tháp Eric

@ A.Jesin: Ngoài ra, đừng quên rằng trên các trang web StackExchange bạn có thể "chấp nhận" câu trả lời phù hợp nhất với mình (để trong tương lai, những người khác có cùng câu hỏi của bạn sẽ tìm thấy câu trả lời tốt nhất ngay lập tức).
Tháp Eric

Hấp dẫn! Điều này dường như đã làm cho nó ngược dòng nhưng phiên bản trong CentOS 6.x vẫn chưa hỗ trợ nó.
mạo

10

Như đã chỉ ra trong câu trả lời được chấp nhận, các phiên bản mới hơn hỗ trợ nó:

memcached -l 127.0.0.1:11211,127.0.0.2:11211  

hoặc là

memcached -l 127.0.0.1:11211 -l 127.0.0.2:11211  

Các phiên bản cũ hơn (được cung cấp với CentOS 6.5 trở về trước) chưa hỗ trợ điều đó, chúng có thể lắng nghe trên tất cả các giao diện, một địa chỉ IP hoặc ổ cắm.
Không phải bất kỳ sự kết hợp của những người.

Cách duy nhất của bạn để giải quyết vấn đề này là liên kết nó với tất cả các giao diện và tường lửa giao diện công cộng hoặc chỉ liên kết nó với 127.0.0.1 và chuyển tiếp các yêu cầu tới eth1: 11211 đến lo0: 11211 thông qua iptables.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.