Je viens d'installer Redis avec succès en utilisant les instructions du guide de démarrage rapide sur http://redis.io/topics/quickstart sur mon serveur Ubuntu 10.10. J'exécute le service en tant que dameon (il peut donc être exécuté par init.d)
Le serveur fait partie de Rackspace Cluster avec des adresses IP internes et externes. L'hôte fonctionne sur le port 6379 (standard pour Redis)
J'ai ajouté une ligne dans les iptables pour autoriser les connexions entrantes du port 6379 comme indiqué ci-dessous:
ACCEPT tcp -- anywhere anywhere tcp dpt:6379
Dans mon code PHP sur un autre serveur, j'essaye 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 fichier redis.conf, j'ai la commande de liaison locale commentée, elle devrait donc écouter plus que l'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 adresses IP externes et internes sans succès.
Des suggestions pour que cela fonctionne?
la source
redis-cli -h hostname
Réponses:
Tout d'abord, je vérifierais qu'il écoute sur les adresses IP que vous attendez:
Selon la façon dont vous démarrez / arrêtez, vous n'avez peut-être pas redémarré l'instance alors que vous pensiez l'avoir fait. Le netstat vous dira s'il écoute là où vous le pensez. Sinon, redémarrez-le et assurez-vous qu'il redémarre. S'il redémarre et n'écoute toujours pas là où vous le souhaitez, vérifiez votre fichier de configuration pour être sûr.
Après avoir établi qu'il écoute là où vous vous attendez, à partir d'un nœud distant qui devrait avoir accès, essayez:
Vous pouvez également essayer cela à partir de l'hôte local, mais utilisez l'adresse IP sur laquelle vous vous attendez à ce qu'il écoute 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.
Sinon, votre ou vos pare-feu vous bloquent. Ce serait soit les IPTables locaux, soit é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 se passe. En outre, essayer de redisposer le ping de local et non local vers la même adresse IP devrait être illustratif. S'il répond localement mais pas à distance, je pencherais vers un pare-feu intervenant en fonction de la complexité de vos règles de tables IP sur le nœud.
la source
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 la valeur par défautà
Puis redémarrez votre service (
service redis-server restart
)Vous pouvez alors maintenant vérifier que redis écoute sur une interface non locale avec
(remplacez 192.168.xx par votre adresse IP)
Remarque importante: comme plusieurs utilisateurs l'ont déclaré, il n'est pas sûr de le configurer sur un serveur exposé à Internet. Vous devez être certain que votre redis est protégé par tous les moyens qui correspondent à vos besoins.
la source
bind 0, ::
,bind 0, [::]
,bind 0\nbind6 ::
(où \ n est un saut de ligne) etbind 0 [::]
mais la seule chose qui fonctionne est de ne pas avoir unebind
ligne dans la configuration du tout. Par défaut, il écoute sur 0 (ou 0.0.0.0/0) et [::] donc il n'y a pas de problème, mais j'aimerais connaître la méthode appropriée si j'en ai besoin une fois. Cela ne semble être documenté nulle part.iptables
) pour bloquer les clients non autorisés.En plus de l'excellente réponse d'Orabîg:
J'ai résolu ce problème en supprimant
bind
entièrement la section et en la définissantprotected-mode
surno
.N'utilisez jamais cette méthode sur des serveurs exposés publiquement.
la source
Orabig a raison.
Vous pouvez lier 10.0.2.15 dans Ubuntu (VirtualBox) puis effectuer un transfert de port de l'hôte à l'invité Ubuntu.
dans /etc/redis/redis.conf
puis, redémarrez redis:
Cela fonctionnera!
la source
J'ai eu des problèmes avec la connexion à distance à Redis pendant quelques jours. Enfin je l'ai fait. Voici la liste de contrôle complète que j'ai préparée pour suivre pour me connecter. Certaines des solutions sont données dans les réponses ci-dessus. Pourtant, je voulais que ma réponse soit un nano-wiki sur le sujet :) J'ai également ajouté des liens utiles.
Si redis fonctionne localement:
Si le mot de passe n'est pas défini
Voir
/etc/redis/redis.conf
config (c'est l'emplacement par défaut pour Ubuntu 18.04, vous pouvez l'avoir à un emplacement différent):Si le mode protégé est défini sur `` non '' dans la configuration:
si la liaison IP est ouverte pour un accès depuis Internet dans la configuration:
Si le pare-feu Linux autorise les connexions
(ici pour Ubuntu 18.04) Vérifiez qu'il permet au trafic Internet entrant d'aller au port
6379
(le port par défaut de Redis)Redémarrez le service Redis
N'oubliez pas de redémarrer le service Redis pour que les modifications prennent effet et voir qu'il est en cours d'exécution:
Vérifiez s'il fonctionne comme un serveur distant
à partir de votre ligne de commande, utilisez
redis-cli
comme si le serveur Redis était sur le serveur distant:Si vous pouvez envoyer un ping-PONG à votre serveur Redis via votre serveur Internet connecté en tant que serveur distant, la connexion Redis à distance fonctionne.
Avertissement de sécurité
Tout ce qui précède rend vos données Redis complètement ouvertes à quiconque sur Internet.
Pour sécuriser fondamentalement l'utilisation
requirepass
et lesprotected-mode yes
paramètres de Redis dans la configuration de Redis (voir ci-dessus) et bloquer les commandes Redis dangereuses (voir le lien ci-dessus), pour une compréhension plus approfondie, consultez cet article et la section sur la sécurité du site Redis ).Liens utiles
Quelques liens pour vous aider Comment installer et sécuriser Redis sur Ubuntu 18.04 et comment configurer le pare-feu Ubuntu 18.04 .
J'espère que ça aide.
la source
si vous avez téléchargé vous-même redis (pas apt-get install redis-server) et que vous avez ensuite édité le redis.conf avec les suggestions ci-dessus, assurez-vous que votre démarrage est redis avec la configuration comme ceci:
./src/redis-server redis.conf
la source
La définition de tcp-keepalive sur 60 (il a été défini sur 0) dans la configuration redis du serveur m'a aidé à résoudre ce problème.
la source