我们在Linux redhat 7.2版本上安装了以下presto集群
presto最新版本-0.216
1位主持人
231名presto员工
在每台工作计算机上,我们可以使用follwing命令来验证状态
/app/presto/presto-server-0.216/bin/launcher status
Running as 61824
并随即停止/开始
/app/presto/presto-server-0.216/bin/launcher stop
/app/presto/presto-server-0.216/bin/launcher start
我还在Google中搜索有关可以管理Presto状态/停止/开始的UI的信息 但没有看到任何东西
很奇怪的是,Presto没有提供一些可以显示集群状态并在需要时执行停止/启动操作的用户界面
众所周知,presto的唯一用户界面是显示状态,而没有停止/启动操作
在上面的示例屏幕中,我们可以看到活动的presto工作者仅是231中的5,但是此用户界面不支持停止/启动操作,并且不显示哪个工作者的presto未处于活动状态
那么我们能做什么呢?
访问每台工作计算机并查看presto是启动还是关闭是非常糟糕的主意
为什么以前没有可进行停止/启动操作的集中式UI?
示例我们希望从用户界面中获得的期望-部分列表
。 。
。答案 0 :(得分:1)
Presto当前使用发现服务,工作人员宣布自己加入集群,因此,如果未注册工作节点,则协调器或发现服务器无法知道其存在和/或重新启动它。
在Qubole,我们与presto master一起使用外部服务,该服务跟踪在一定时间间隔内未向发现服务注册的节点。该服务负责从群集中删除此类节点。 我们要做的另一件事是在每个presto工作者节点上使用monit服务,以确保presto服务器在出现故障时重新启动。
您可能必须对群集管理执行类似的操作,因为presto目前未提供该功能。
答案 1 :(得分:0)
根据我的观点和管理prestosql集群的经验,在架构模式中service discovery很重要。
到目前为止,它在prestodb / prestosql的开源版本中使用以下模式:
- 服务实例必须在启动时向服务注册表注册,并在关闭时取消注册
- 崩溃的服务实例必须从服务注册表中取消注册
- 正在运行但无法处理请求的服务实例必须从服务注册表中取消注册
因此,它将每个presto worker的生命周期管理保持在每个实例本身。
那么我们该怎么办?
它从presto群集本身(例如HTTP API /v1/node
和/v1/service/presto
)中提供了一些可观察性,以查看实例状态。我个人建议使用像K8S或游牧另一个群集管理器来管理急板的集群成员。
访问每台工作计算机并查看presto是启动还是关闭是一个非常糟糕的主意 为什么为什么以前没有可以执行停止/启动操作的集中式UI?
对好/坏没有意见。以k8s为例,您可以将所有presto worker作为一个k8s部署进行管理,并在一个吊舱中管理每个presto worker。它可以使用Liveness, Readiness and Startup Probes通过一些YAML代码来自动执行实例生命周期。例如livenessProbe of helm chart stable/presto
的设计。而且,像k8s这样的集群管理器确实提供了Web UI,因此您可以触摸资源以充当管理员。 。或者,您可以选择编写更多Java代码来扩展Presto。