这个问题有两个部分。首先是如何识别活动(或待机)火花?第二个是如何使用该信息连接到正确的信息?
如果你可以通过web url get或者一个处于活动状态的进程操作以及哪个处于备用状态来判断,你可以根据它来创建服务/运行状况检查。谷歌搜索了一下,我看到火花领事服务和它的健康检查在这里:
{ "service": { "name": "spark-master", "port": 7077, "checks": [ { "script": "ps aux | grep -v grep | grep org.apache.spark.deploy.master.Master", "interval": "10s" } ] } }
此运行状况检查通过脚本查找java进程。如果找到该进程,则运行状况检查成功。此特定运行状况检查无论是活动还是待机,都不关心。您需要在具有不同名称的服务下进行运行状况检查,以确定spark节点是否处于活动状态。我对火花一无所知,但在网上看到我发现了这个spark-submit命令。如果这个命令按我想象的那样工作,那么这可能就是诀窍:
{ "service": { "name":"spark-active" ,"port":7077 ,"checks":[{"script": "curl --silent http://127.0.0.1:8080/ | grep '<li><strong>Status:</strong> ALIVE</li>'| wc -l | awk '{exit (\$0 - 1) }'" } }
然后你将连接使用:
spark://spark-active.service:7077
您的健康检查也可以通过http连接。领事服务检查记录在这里: https://www.consul.io/docs/agent/checks.html
-G