impossible de se connecter à cassandra docker avec cqlsh
Je suis d'exécuter Cassandra conteneur docker:
docker pull cassandra
run --name cassandra -p 9042:9042 -p 9160:9160 -d cassandra
La commande netstat-tpln est:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
LISTEN - tcp6 0 0 [::]:9160 [::]:*
LISTEN - tcp6 0 0 [::]:9042 [::]:*
Connexion à la C* local cqlsh est Ok:
docker exec -it cassandra /bin/bash
#cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.1.1 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh> show host
Connected to Test Cluster at 127.0.0.1:9042.
J'ai installer le local cqlsh:
$cqlsh --version
cqlsh 4.1.1
mais, je n'ai pas de connecton avec docker conteneur à partir de localhost:
$sqlsh
Traceback (most recent call last):
File "/usr/sbin/cqlsh", line 2067, in <module>
main(*read_options(sys.argv[1:], os.environ))
. . .
File "/home/akalend/src/cqlsh_standalone/lib/thrift-python-internal-only-0.9.1.zip/thrift/transport/TSocket.py", line 103, in read
socket.error: [Errno 104] Connection reset by peer
Donc, je n'ai pas de connexion à partir de localhost php-pilote.
Comment je peux connexion cassandra docker avec mon script php & cqlsh?
Pourquoi docker mappage de port tcp6, ne pas tcp4 ? résoudre
Pourquoi le local cqlsh (version 4.1) se connecter par 9160 port, mais conteneur docker cqlsh(version 5.0.1) se connecter par 9042 port?
ajout d'infos
S'exécuter conteiner:
run --name cassandra -p 127.0.0.1:9042:9042 -p 127.0.0.1:9160:9160 -d cassandra
J'ai écouter ip4 ports:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9160 0.0.0.0:* LISTEN 2454/docker-proxy
tcp 0 0 127.0.0.1:9042 0.0.0.0:* LISTEN 2462/docker-proxy
mais je havn'pas de connexion avec cqlsh & php
socket.error: [Errno 104] Connection reset by peer
PHP Fatal error: Uncaught exception 'Cassandra\Exception\RuntimeException' with message 'No hosts available for the control connection' in /home/akalend/projects/test/cassa/test.php:7
Stack trace:
#0 /home/akalend/projects/test/cassa/test.php(7): Cassandra\DefaultCluster->connect('system')
#1 {main} thrown in /home/akalend/projects/test/cassa/test.php on line 7
OriginalL'auteur Alexandre Kalendarev | 2016-01-07
Vous devez vous connecter pour publier un commentaire.
Essayez de changer votre panneau de commande exécuter en tant que :
Ce sera d'assurer le support contenant des cartes pour l'IPv4.
À partir de votre application PHP, vous devez vous connecter à l'Épargne de port. Veuillez suivre l'exemple, comme dans http://support.qualityunit.com/942764-Example-of-PHP-application-readingwriting-to-Cassandra
Dans l'exemple ci-dessus, pour la connexion à l'cassandra conteneur à partir de la même machine où le conteneur est en cours d'exécution, vous pouvez toujours utiliser la même
TSocket('127.0.0.1', 9160)
.Si vous prévoyez de vous connecter à partir d'un autre ordinateur, alors vous devez utiliser
TSocket('IP/Domain name', 9160)
dans ce, IP/nom de Domaine est l'identifiant de la machine où le conteneur docker est en cours d'exécution.Si votre application PHP dans un autre conteneur docker sur la même machine, vous devez d'abord relier les conteneurs, vous pouvez utiliser le
TSocket('alias name', 9160)
dans le présent, le nom d'alias est le nom que vous avez pour le lien.mise à jour de la réponse avec les informations pertinentes.
fait-il résolu votre problème? si oui, veuillez accepter la solution, de sorte que d'autres avec le même problème peut en bénéficier.
Le problème a été résolu. - Je installer une nouvelle cqlsh de cassandra source et disposent d'une connexion conteneur docker, mais n'avez pas de connexion de client PHP. Donc, je pourrais être d'utiliser un autre client PHP, mais j ai pas le temps d'expérimenter. Merci pour l'aide.
OriginalL'auteur Phani