【问题标题】:How to check that Cassandra is ready如何检查 Cassandra 是否准备就绪
【发布时间】:2017-12-30 23:20:09
【问题描述】:

我有一个在 Docker 中运行的 Cassandra,我想在数据库准备好时启动一个 CQL 脚本。我尝试检查端口以检测它何时准备就绪:

while ! nc -z localhost 7199; do
    sleep 1
done
echo "Cassandra is ready"
cqlsh -f ./createTables.cql

但是在数据库真正准备好之前端口就打开了,cqlsh 因此失败了。如何正确检查 Cassandra 状态并启动脚本?提前致谢。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    首先您需要在另一个端口 - 9042 - 这是 CQLSH 使用的端口。

    另一种方法也可能是等待执行sqlsh 而不是nc(或作为第二步,因为nc 的执行速度要快得多)。例如,您可以使用类似命令:

    while ! cqlsh -e 'describe cluster' ; do
        sleep 1
    done
    

    等到 Cassandra 准备好...

    【讨论】:

    • 节点准备就绪时,这一行会出现在 cassandra system.log Starting listening for CQL clients on /0.0.0.0:9042... 中。
    • 不建议在0.0.0.0收听
    • 你对cqlsh什么时候没有安装有什么想法吗?我需要从另一个容器进行此检查,并且安装不是一种选择。 nc 一直给我空结果... 9042 在 cassandra 准备好之前也已打开。
    • @QuintenScheppermans 你有没有找到没有 cqlsh 的解决方案?
    • 您可以查看日志,查看启动是否完成,或使用nc -z 9042...
    猜你喜欢
    • 2016-04-07
    • 1970-01-01
    • 2011-07-08
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    相关资源
    最近更新 更多