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?
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.
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.
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.
-
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.
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!
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.