program tip

Redis-원격 서버에 연결

radiobox 2020. 8. 2. 18:05
반응형

Redis-원격 서버에 연결


방금 Ubuntu 10.10 서버의 http://redis.io/topics/quickstart있는 빠른 시작 안내서의 지침을 사용하여 Redis를 성공적으로 설치했습니다 . 서비스를 dameon으로 실행하고 있습니다 (init.d에서 실행할 수 있음)

서버는 내부 및 외부 IP가있는 랙 스페이스 클러스터의 일부입니다. 호스트가 포트 6379에서 실행 중입니다 (Redis 표준).

아래에 표시된 것처럼 포트 6379에서 들어오는 연결을 허용하기 위해 iptables에 행을 추가했습니다.

 ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:6379 

다른 서버의 PHP 코드에서 새 Redis 서버에 연결하려고합니다.

$this->load->helper("iredis");

$hostname = "IP ADDRESS HERE";

$redis = new iRedis(array('hostname' => $hostname, 'port' => 6379));

이 작업을 수행하면 항상 연결이 거부됩니다. 내 redis.conf 파일에서 로컬 바인드 명령이 주석 처리되어 있으므로 로컬 호스트 IP 이상을 수신 대기해야합니다. 다른 서버가 아닌 로컬 컴퓨터의 데이터베이스에 연결할 수 있습니다. 운 좋게 외부 및 내부 IP를 사용해 보았습니다.

이 작업을 수행하는 데 대한 제안 사항이 있습니까?


먼저 IP 주소가 수신 대기 중인지 확인합니다.

netstat -nlpt | grep 6379

시작 / 중지 방법에 따라 실제로 생각했을 때 인스턴스를 다시 시작하지 않았을 수 있습니다. netstat는 그것이 생각하는 곳을 듣고 있는지 알려줍니다. 그렇지 않으면 다시 시작하고 다시 시작하십시오. 다시 시작한 후에도 여전히 듣지 않는 경우 구성 파일을 확인하십시오.

설정 후 액세스 시도가 필요한 원격 노드에서 원하는 위치에서 청취 중입니다.

redis-cli -h REMOTE.HOST ping

로컬 호스트에서도 시도해 볼 수 있지만 호스트 이름 또는 로컬 호스트 대신 수신 대기하는 IP를 사용하십시오. 두 경우 모두 PONG으로 응답해야합니다.

그렇지 않은 경우 방화벽이 차단되고 있습니다. 이것은 로컬 IPTable이거나 노드 사이의 방화벽 일 수 있습니다. IPtables 구성에 로깅 명령문을 추가하여 6379를 통해 연결을 로깅하여 발생하는 상황을 확인할 수 있습니다. 또한 로컬 및 비 로컬에서 동일한 IP로 ping을 시도하는 것은 예시 적입니다. 로컬로 응답하지만 원격으로 응답하지 않으면 노드의 IP 테이블 규칙의 복잡성에 따라 중재 방화벽에 의존합니다.


나는 같은 문제에 갇혀 있었고 위의 대답은 도움이되지 않았습니다 (잘 작성되었지만).

해결책은 다음과 같습니다.를 확인 /etc/redis/redis.conf하고 기본값을 변경하십시오.

bind 127.0.0.1

bind 0.0.0.0

그런 다음 서비스를 다시 시작하십시오 ( service redis-server restart)

이제 redis가 로컬이 아닌 인터페이스에서 수신 대기 중인지 확인할 수 있습니다.

redis-cli -h 192.168.x.x ping

(192.168.xx를 IP 주소로 교체하십시오)

중요 사항 : 여러 사용자가 언급했듯이 인터넷에 노출 된 서버에서 이것을 설정하는 것은 안전하지 않습니다 . redis가 필요에 맞는 수단으로 보호되어 있는지 확인해야합니다.


Orabîg의 훌륭한 답변 외에도 :

bind섹션을 완전히 제거 하고로 설정 하여이 문제를 해결 protected-mode했습니다 no.

#bind 127.0.0.1
protected-mode no

공개적으로 노출 된 서버에서는이 방법을 사용하지 마십시오.


오라 빅이 맞습니다.

Ubuntu (VirtualBox) 에서 10.0.2.15를 바인딩 한 다음 호스트에서 게스트 Ubuntu 포트 전달 을 수행 할 수 있습니다 .

/etc/redis/redis.conf에

bind 10.0.2.15

그런 다음 redis를 다시 시작하십시오.

sudo systemctl restart redis

작동합니다!


  • redis를 직접 다운로드 한 다음 (apt-get install redis-server 아님) 위의 제안으로 redis.conf를 편집 한 경우 다음 같이 구성으로 시작 redis 확인하십시오 ../src/redis-server redis.conf

    • 또한 사이드 노트 Windows에 있고 virtualbox vm에 연결하는 경우 redis에 연결하기위한 가상 상자 설정의 스크린 샷을 포함하고 있습니다.

여기에 이미지 설명을 입력하십시오


서버의 redis 구성에서 tcp-keepalive를 60 (0으로 설정)으로 설정하면이 문제를 해결하는 데 도움이되었습니다.

참고 URL : https://stackoverflow.com/questions/8537254/redis-connect-to-remote-server

반응형