복붙노트

[REDIS] 레디 스 - 원격 서버에 연결

REDIS

레디 스 - 원격 서버에 연결

난 그냥 성공적으로 내 우분투 10.10 서버에 http://redis.io/topics/quickstart에 빠른 시작 가이드의 지침을 사용하여 레디 스를 설치했습니다. 내가 dameon으로 서비스를 실행하고있어 (이있는 init.d에 의해 운영 될 수 있도록)

서버는 내부 및 외부 IP를 랙 스페이스 (Rackspace) 클러스터의 일부입니다. 호스트 포트 6379에서 실행 (레디 스에 대한 표준)

아래 그림과 같이 I 포트 6379에서 들어오는 연결을 허용하기 위해 iptables에의 행을 추가했습니다 :

 ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:6379 

다른 서버에 내 PHP 코드에서, 나는 여기에 새로운 레디 스 서버에 연결을 시도하고있다 :

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

$hostname = "IP ADDRESS HERE";

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

내가 이렇게되면 - 난 항상 거부 연결을 얻을. 내 redis.conf 파일에서 나는 로컬 호스트 IP보다 더 청취해야하므로, 로컬 바인드 명령을 주석 처리합니다. 나는 다른 서버에 그냥 로컬 시스템에서 데이터베이스에 연결할 수 있습니다. 나는 행운과 외부 및 내부 IP를 시도했습니다.

일이 점점에 대한 어떤 제안?

해결법

  1. ==============================

    1.첫째로 나는 당신이 될 것으로 예상되는 IP를에서 수신 확인 확인 것입니다 :

    첫째로 나는 당신이 될 것으로 예상되는 IP를에서 수신 확인 확인 것입니다 :

    netstat -nlpt | grep 6379
    

    당신이 시작하는 방법에 따라 / 당신이했다고 생각했을 때 실제로 인스턴스를 다시 시작하지 않았을 수 있습니다 중지합니다. 당신이 생각 청취 경우, NETSTAT는 당신을 말할 것이다. 그렇지 않은 경우, 반드시 다시 시작할을 다시 시작합니다. 당신이 기대하는 곳 수신하지 여전히 다시 시작하고, 그냥 확인하기 위해 설정 파일을 확인합니다.

    당신이 액세스 시도를해야 원격 노드에서, 그것을 기대하는 곳 수신 대기 설정 한 후 :

    redis-cli -h REMOTE.HOST ping
    

    당신은 또한 당신이 그것을 대신 호스트 이름 또는 로컬 호스트의 수신 대기 할 것으로 예상되는 IP를 로컬 호스트에서 해당 시도하지만 사용할 수 있습니다. 당신은 두 경우 모두 응답 탁구 볼 수 있습니다.

    그렇지 않은 경우, 방화벽 (들)을 /를 차단한다. 이 지역 IPTables에 또는 아마도 노드 사이에 방화벽이 될 것입니다. 당신은 무슨 일이 일어나고 있는지보고 6379을 통해 연결을 로그온 할 때의 iptables 구성에 로깅 문을 추가 할 수 있습니다. 또한, 시도 그는 같은 IP 로컬과 로컬이 아닌 것은 예시한다에서 핑 레디 스. 이 원격으로 로컬이 아닌 응답하는 경우, 당신에 노드 IP 테이블 규칙의 복잡성에 따라 방화벽 개입으로 의지 할 것입니다.

  2. ==============================

    2.저도 같은 문제에 붙어 있었고, (잘 쓰여진 불구하고) 위의 대답은 나에게 도움이되지 않았다.

    저도 같은 문제에 붙어 있었고, (잘 쓰여진 불구하고) 위의 대답은 나에게 도움이되지 않았다.

    이 솔루션은 여기에 있습니다 : 당신의 /etc/redis/redis.conf을 확인하고 기본값을 변경해야합니다

    bind 127.0.0.1
    

    bind 0.0.0.0
    

    그런 다음 서비스 (서비스 레디 스 서버를 다시 시작)를 다시 시작

    그러면 이제 비 - 로컬 인터페이스에서 수신되는 레디 스를 확인하실 수 있습니다

    redis-cli -h 192.168.x.x ping
    

    (당신의 IP 주소로 192.168.x.x 대체)

    중요 사항 : 여러 사용자가 명시된 바와 같이, 그것은 인터넷에 노출 된 서버에서이 설정을 안전하지 않습니다. 당신은 당신의 요구에 맞는 어떤 수단을 보호 레디 스 것을 확신해야한다.

  3. ==============================

    3.Orabîg에 의해 주어진 우수한 대답에 추가 :

    Orabîg에 의해 주어진 우수한 대답에 추가 :

    나는 완전히 바인드 부분을 제거하고 더에 보호 모드를 설정하지하여이 문제를 해결.

    #bind 127.0.0.1
    protected-mode no
    

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

  4. ==============================

    4.Orabig 올바른 것입니다.

    Orabig 올바른 것입니다.

    그런 다음 손님 우분투 호스트에서 포트 포워딩을 우분투 (버추얼 박스)에서 10.0.2.15를 바인딩 할 수 있습니다.

    /etc/redis/redis.conf에서

    bind 10.0.2.15
    

    다음, 다시 시작 레디 스 :

    sudo systemctl restart redis
    

    그것은 작동된다!

  5. ==============================

    5.

  6. ==============================

    6.60 TCP-킵 얼라이브 설정 서버의 레디 스 구성에 (그것은 0으로 설정했다) 내가이 문제를 해결 도왔다.

    60 TCP-킵 얼라이브 설정 서버의 레디 스 구성에 (그것은 0으로 설정했다) 내가이 문제를 해결 도왔다.

  7. from https://stackoverflow.com/questions/8537254/redis-connect-to-remote-server by cc-by-sa and MIT license