Redis-Se connecter au serveur distant

Je viens d'installer Redis avec succès en utilisant les instructions sur le guide de démarrage rapide sur http://redis.io/topics/quickstart sur mon serveur Ubuntu 10.10. Je cours le service en tant que dameon (donc il peut être exécuté par init.d)

Le serveur fait partie du Cluster Rackspace avec des adresses IP internes et externes. L'hôte fonctionne sur le port 6379 (standard pour Redis)

J'ai ajouté une ligne dans iptables pour autoriser les connexions entrantes à partir du port 6379 comme indiqué ci-dessous:

 ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:6379 

Dans mon Code PHP sur un autre serveur, j'essaie de me connecter au nouveau serveur Redis ici:

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

$hostname = "IP ADDRESS HERE";

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

Une fois que je fais cela - je reçois toujours une connexion refusée. Dans mon redis.fichier conf, j'ai la commande bind locale commentée, donc il devrait être à l'écoute sur plus que l'adresse IP localhost. Je peux me connecter à la base de données sur la machine locale mais pas sur un autre serveur. J'ai essayé les IPs externes et internes sans chance.

Des suggestions pour que cela fonctionne?

104
demandé sur The Real Bill 2011-12-16 20:39:53

6 réponses

D'abord, je vérifierais pour vérifier qu'il écoute sur les adresses IP que vous attendez:

netstat -nlpt | grep 6379

Selon la façon dont vous démarrez/arrêtez, vous n'avez peut-être pas redémarré l'instance quand vous le pensiez. Le netstat vous dira s'il écoute où vous pensez qu'il est. Si pas, redémarrez-le et assurez-vous qu'il redémarre. S'il redémarre et n'écoute toujours pas où vous vous attendez, vérifiez votre fichier de configuration juste pour être sûr.

Après l'avoir établi, il écoute où vous l'attendez, à partir d'un noeud distant qui devrait avoir accès try:

redis-cli -h REMOTE.HOST ping

Vous pouvez également essayer cela à partir de l'hôte local mais utiliser L'adresse IP sur laquelle vous vous attendez à l'écouter au lieu d'un nom d'hôte ou d'un hôte local. Vous devriez le voir PONG en réponse dans les deux cas.

Si ce n'est pas le cas, VOTRE(vos) pare-feu vous bloque (s). Ce serait soit les IPTables locaux ou éventuellement un pare-feu entre les nœuds. Vous pouvez ajouter une instruction de journalisation à votre configuration IPtables pour enregistrer les connexions sur 6379 pour voir ce qui est happening. En outre, essayer de redis ping de local et non local à la même adresse IP devrait être illustratif. S'il répond localement mais pas à distance, je me pencherais vers un pare-feu intervenant en fonction de la complexité de vos règles de Tables IP sur le nœud.

115
répondu The Real Bill 2013-01-22 09:55:10

J'ai été coincé avec le même problème, et la réponse précédente ne m'a pas aidé (bien que bien écrite).

La solution est ici : vérifiez votre /etc/redis/redis.conf, et assurez-vous de changer le{[6 par défaut]}

bind 127.0.0.1

À

bind 0.0.0.0

, Puis redémarrez votre service (service redis-server restart)

Vous pouvez maintenant vérifier que redis écoute sur une interface non locale avec

redis-cli -h 192.168.x.x ping

(remplacer 192.168.x.x avec votre adresse IP)

Remarque Importante :, comme plusieurs utilisateurs, c'est pas safe pour définir ceci sur un serveur qui est exposé à Internet. Vous devez être certain que vous redis est protégé par tout moyen qui correspond à vos besoins.

292
répondu Orabîg 2017-06-09 22:55:44

En plus de l'excellente réponse donnée par Orabîg:

J'ai résolu ce problème en supprimant entièrement la section bind et en définissant protected-mode sur no.

#bind 127.0.0.1
protected-mode no

N'utilisez jamais cette méthode sur des serveurs exposés publiquement.

8
répondu deafnull 2017-09-20 10:40:53
  • Si vous avez téléchargé redis vous-même (pas apt-get install redis-server), puis édité le redis.conf avec les suggestions ci-dessus, assurez-vous que votre start redis avec {[5] } la configuration comme ça: ./src/redis-server redis.conf

    • aussi note de côté, j'inclue une capture d'écran du réglage de la boîte virtuelle à connectez-vous à redis, si vous êtes sous windows et vous connectez à une machine virtuelle virtualbox.

entrez la description de l'image ici

1
répondu Robot70 2017-05-18 13:33:22

Orabig est correct.

Vous pouvez lier 10.0.2.15 dans Ubuntu (VirtualBox) {[6] } puis faire un transfert de port de l'hôte à L'invité Ubuntu.

Dans /etc/redis/redis.conf

bind 10.0.2.15

Ensuite, redémarrez redis:

sudo systemctl restart redis

Ça marche!

1
répondu Michael Qin 2017-09-25 18:11:51

Définir tcp-keepalive sur 60 (Il était défini sur 0) dans la configuration Redis du serveur m'a aidé à résoudre ce problème.

0
répondu Saurabh 2016-06-16 07:55:04