선택된 인터페이스에서 Memcached 청취


9

eth0 (public)과 eth1 (private)의 두 가지 인터페이스가있는 데비안 서버에서 Memcached를 설정하고 있습니다.

개인 네트워크가 다운되었지만 eth0 (공개)이 아닌 경우에도 액세스 할 수 있도록 Memcached가 eth1과 lo (루프백) 모두를 수신하기를 원합니다.

로부터 man 페이지 이해 memcached를위한 것이 -l옵션은 하나의 IP 주소를 취할 수 있습니다. 로컬 연결에 UNIX 소켓을 사용하려고 생각했지만 매뉴얼 페이지에

-s
청취 할 유닉스 소켓 경로 ( 네트워크 지원을 비활성화합니다 ).

내가 아는 유일한 방법은 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 목록과 IP 목록 사이에 큰 간격 일 것 입니다 (memcached의 기본 내부 리소스 제한으로 인해 해당 인터페이스의 ~ 2 ^ 24 주소에 바인딩 할 수 없기 때문에)


쉼표로 구분 된 IP 주소 목록을 사용하면 작동합니다. 고마워요! 이 기능은 특정 버전에서 도입 되었습니까? 맨 페이지에서 "또는 쉼표로 구분 된 IP 주소 목록"줄을 찾을 수 없기 때문입니다.
A.Jesin

1
@ A.Jesin : 구식 구성을 조사한 결과, 적어도 2009 년 이후로이 문제가 해결되었습니다. 2007 년에 여러 IP 용 패치가 추가 된 것 같습니다. grokbase.com/t/danga/memcached/078qdmzphz/…lists.danga.com/ pipermail / memcached를 / 첨부 파일 / 20070823 / ... . 이것이 업스트림 memcached인지 아니면 결국 업스트림으로 만든 일부 로컬 모드인지는 확실하지 않습니다.
Eric Towers

@ A.Jesin : 또한 StackExchange 사이트에서 가장 적합한 답변을 "수락"할 수 있다는 점을 잊지 마십시오 (향후에 동일한 질문을 가진 다른 사람이 가장 적합한 답변을 즉시 찾을 수 있음).
Eric Towers

흥미 롭습니다! 이것은 업스트림으로 만든 것처럼 보이지만 CentOS 6.x 버전은 아직 지원하지 않습니다.
faker

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.