我正在尝试创建一个docker compose安装程序,该安装程序将等到Cassandra容器启动后再运行JanusGraph容器,该容器要求Cassandra在启动前运行。
nodetool命令似乎是检查Cassandra状态的标准方法。这是我首先在cassandra容器上运行nodetool的内容:
docker exec -it ns-orchestration_data_storage_1 nodetool状态
数据中心:datacenter1
=======================
状态=上/下
| /状态=正常/离开/加入/移动
-拥有地址加载令牌(有效)主机ID机架
联合国172.31.0.2 235.53 KiB 256 100.0%eea17329-6274-45a7-a9fb-a749588b733a rack1
最后一个标准输出行上的第一个“ UN”表示Up / Normal,我打算在我的cassandra-and-elasticsearch.sh脚本中使用它。但是现在当我尝试在janusgraph容器(远程)上运行它时,我得到了:
docker exec -it ns-orchestration_data_janusgraph_1 bin / nodetool -h 172.31.0.2 -u cassandra -pw <我的密码在这里>状态
docker exec -it ns-orchestration_data_janusgraph_1 bin / nodetool -h
SLF4J:类路径包含多个SLF4J绑定。
SLF4J:在[jar:file:/app/janusgraph-0.3.0-hadoop2/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]中发现绑定
SLF4J:在[jar:file:/app/janusgraph-0.3.0-hadoop2/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]中找到绑定
SLF4J:有关说明,请参见http://www.slf4j.org/codes.html#multiple_bindings。
SLF4J:实际绑定的类型为[org.slf4j.impl.Log4jLoggerFactory]
nodetool:无法连接到“ 172.31.0.2:7199”-ConnectException:“连接被拒绝(连接被拒绝)”。
我已经公开了所有Cassandra端口,如下面的docker-compose文件所示。
我还看到了这篇文章不确定是否相关。我尝试按照说明进行操作,但仍然遇到相同的错误。
任何建议,我将不胜感激。
文件:docker-compose.yml
版本:“ 3”
服务:
data_janusgraph:
建立:
上下文:../ ns-compute-store / db-janusgraph
dockerfile:Dockerfile.janusgraph
端口:
-“ 8182:8182”
取决于:
- 数据存储
-data_index
网络:
-ns-net
数据存储:
建立:
上下文:../ ns-compute-store / db-janusgraph
dockerfile:Dockerfile.cassandra
环境:
-CASSANDRA_START_RPC = true
端口:
-“ 9160:9160”
-“ 9042:9042”
-“ 7199:7199”
-“ 7001:7001”
-“ 7000:7000”
数量:
-数据量:/ var / lib / cassandra
网络:
-ns-net
资料索引:
图片:elasticsearch:5.6
端口:
-“ 9200:9200”
-“ 9300:9300”
网络:
-ns-net
网络:
ns-net:
司机:桥
数量:
数据量:
文件:Dockerfile.cassandra
FROM卡桑德拉:3.11
复制conf / jmxremote.password /etc/cassandra/jmxremote.password
运行chown cassandra:cassandra /etc/cassandra/jmxremote.password
运行chmod 400 /etc/cassandra/jmxremote.password
复制conf / jmxremote.access /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
运行chown cassandra:cassandra /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
运行chmod 400 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
复制conf / cassandra.yaml /etc/cassandra/cassandra.yaml
文件:Dockerfile.janusgraph
FROM openjdk:8-jre-alpine
运行mkdir / app
WORKDIR / app
RUN APK更新
&& apk升级\
&& apk --no-cache添加解压缩
运行wget https://github.com/JanusGraph/janusgraph/releases/download/v0.3.0/janusgraph-0.3.0-hadoop2.zip
运行解压缩janusgraph-0.3.0-hadoop2.zip
运行apk --no-cache添加bash coreutils nmap
运行apk del解压缩
ENV JVM_OPTS =“ $ JVM_OPTS -Djava.rmi.server.hostname = data_storage”
WORKDIR /app/janusgraph-0.3.0-hadoop2
COPY等待卡桑德拉和elasticsearch.sh ./
复制conf / janusgraph-cql-es.properties ./
CMD [“ ./wait-for-cassandra-and-elasticsearch.sh”,“ data_storage:9160”,“ data_index:9200”,“ ./bin/gremlin-server.sh”,“ ./conf/gremlin-server /gremlin-server-berkeleyje.yaml“]
在Github存储库中查看完整代码: https://github.com/nvizo/janusgraph-cluster-example
答案 0 :(得分:0)
我相信从janusgraph容器运行nodetool时,应将cassandra容器名称称为主机名。类似于:
template_redirect
尝试一下,让我知道是否有帮助。