Sahara集群的状态一览

声明:

本博客欢迎转载,但请保留原作者信息,并请注明出处!

作者:郭德清

团队:华为杭州OpenStack团队

Sahara支持三种集群操作:创建集群、扩容/减容集群、删除集群。每种操作都有对应的一些中间状态。通过集群的状态,可以清楚地看到集群目前处于哪个阶段。本文主要是罗列了三种操作可能出现的一些状态。

一、创建集群

  • Validating

Sahara会对输入的数据做检查,在sahara/service/api.py的create_cluster方法中:

cluster =g.change_cluster_status(cluster, "Validating")
plugin.validate(cluster)

validate主要是对集群的一些服务的检验,比如vanilla的hadoop 1.2.1的插件中,会检查namenode节点是不是只有一个,jobtracker和oozie节点是不是大于1个。具体的方法可以看:sahara/plugins/vanilla/v1_2_1/versionhandler.py的validate方法。

  • InfraUpdating

这个状态,主要是为了对插件做一些更新,在sahara/service/ops.py的_provision_cluster方法中:

#updating cluster infra
cluster =g.change_cluster_status(cluster, "InfraUpdating")
plugin.update_infra(cluster)

目前我看这个方法在各个插件中都还未实现。

  • Spawning

在创建虚拟机的时候,Sahara会把集群状态置为Spawning,官网上的说法是这个状态会持续到集群所有的虚拟机状态为Active,但是从代码来看,创建虚拟机的命令发出去之后就会进入Waiting状态,在Waiting状态中会去等待虚拟机状态为Active。方法在:sahara/service/direct_engine.py的create_cluster方法中。

  • Waiting

集群虚拟机的创建命令发出去之后,会进入Waiting状态,这个时候,会一直轮询去判断虚拟机的状态是否Active,等所有的虚拟机都Active之后,会等待网络配置(包括虚拟机的网络是不是都通了,是否都可以登录。),还有设置浮动IP,挂载卷等操作。具体的可以看sahara/service/direct_engine.py的create_cluster方法。

# wait for all instances are up and networks ready
cluster = g.change_cluster_status(cluster, "Waiting")
instances = g.get_instances(cluster)
self._await_active(cluster, instances)
self._assign_floating_ips(instances)
self._await_networks(cluster, instances)
cluster = conductor.cluster_get(ctx, cluster)
# attach volumes
volumes.attach_to_instances(g.get_instances(cluster))
  • Preparing

在Preparing阶段,Sahara会生成/etc/hosts文件,为了虚拟机之间可以通过hostname来互相访问,同时为了免密码登录,也会更新每个虚拟机的authorized_keys。实现位于sahara/service/engine.py的_configure_instances方法中。

  • Configuring

Sahara在环境准备好之后,会在虚拟机中安装各个服务,包括传入hadoop各个服务需要的xml,还有环境变量等。具体实现可以看下sahara/plugins/vanilla/v1_2_1/versionhandler.py的configure_cluster方法。

<pre name="code" class="python">def configure_cluster(self, cluster):
    instances = utils.get_instances(cluster)
    self._setup_instances(cluster, instances)

def_setup_instances(self, cluster, instances):
    if (CONF.use_identity_api_v3 and vu.get_hiveserver(cluster) and c_helper.is_swift_enable(cluster)):
        cluster = proxy.create_proxy_user_for_cluster(cluster)
        instances = utils.get_instances(cluster)
    extra = self._extract_configs_to_extra(cluster)
    cluster = conductor.cluster_get(context.ctx(), cluster)
    self._push_configs_to_nodes(cluster, extra, instances)
  • Starting

这一步是在虚拟机中拉起各个服务。以vanilla的hadoop1.2.1的插件为例,会先格式化namenode,然后依次拉起namenode、secondarynamenode、jobtracker、datanode、tasktracker、oozie、hive_server。具体的实现可以看下sahara/plugins/vanilla/v1_2_1/versionhandler.py的start_cluster方法。

  • Active

在集群都创建、配置、服务拉起之后,会把集群置为Active。看到这个状态,说明集群已经创建成功了。这个时候就可以开始通过Sahara来跑一些hadoop任务了。

二、扩容/减容集群

  • Validating

跟创建集群一样,扩容和减容集群也同样会做校验工作。具体的参考上面创建集群的操作。

  • Decommissioning

在做减容的时候,会把要删除的虚拟机上面的服务停掉,删除和datanode和tasktracker会分别调sahara/plugins/vanilla/v1_2_1/scaling.py的decommission_dn方法和decommission_tt方法。具体的可以看下sahara/plugins/vanilla/v1_2_1/versionhandler.py的decommission_nodes方法。

  • Scaling

在这个阶段会创建虚拟机、等待虚拟机Active、分配浮动IP、等待网络通等操作和创建集群时创建虚拟机的步骤类似。具体方法可以看下sahara/service/direct_engine.py的scale_cluster方法。

  • Configuring

和集群创建时候的Configuring状态类似。新建的虚拟机会配上已有虚拟机的配置,原来的虚拟机也会更新/etc/hosts。

  • Active

扩容成功后,状态会置为Active。如果验证的时候失败,也会把集群置为Active。

三、删除集群

  • Deleting

删除虚拟机时集群的状态。

四、错误状态

  • Error

创建集群的时候,如果出现错误,会把集群置为Error。扩容的时候失败,Sahara会先进行回滚,如果回滚失败,也会把集群置为Error。

【参考资料】

https://sahara.readthedocs.org/en/stable-juno/userdoc/statuses.html

时间: 2024-10-24 15:54:25

Sahara集群的状态一览的相关文章

集群服务器状态命令------rs.status()各个字段的含义

可根据rs.status() 查询集群服务器状态.字段解释: self 这个信息出现在执行rs.status()函数的成员信息中 stateStr用户描述服务器状态的字符串.有SECONDARY,PRIMARY,RECOVERING等 uptime 从成员可到达一直到现在经历的时间,单位是秒. optimeDate 每个成员oplog最后一次操作发生的时间,这个时间是心跳报上来的,因此可能会存在延迟 lastHeartbeat 当前服务器最后一次收到其他成员心跳的时间,如果网络故障等可能这个时间

ES 集群关键状态指标

ES监控状态指标分三个级别: 1:集群级别:集群级别的监控主要是针对整个ES集群来说,包括集群的健康状况.集群的状态等.2:节点级别:节点级别的监控主要是针对每个ES实例的监控,其中包括每个实例的查询索引指标和物理资源使用指标.3:索引级别:索引级别的监控主要是针对每个索引来说,主要包括每个索引的性能指标. 1集群级别: 查看方法: api获取:http://ip:9200/_cluster/health?pretty 或者 Kibana的开发工具Dev Tools中执行 : 查看集群健康状态

nagios检测cockroach、nomad、consul集群节点状态的脚本

在nagios中需要检测cockroach.nomad.consul服务集群节点状态的脚本,查看服务集群状态的命令是:1.consul查看群集节点状态的命令 .[[email protected] ~]# consul members Node Address Status Type Build Protocol DC Segmentcgw122.zencoo.com 192.168.196.122:8301 alive server 1.4.3 2 cd <all>cws113.zencoo

elasticsearch集群健康状态查看

1. 查看ES集群健康状态 http://localhost:9200/_cluster/health?pretty 响应: { "cluster_name" : "if2c", "status" : "yellow", //集群的状态红绿灯,绿:健康,黄:亚健康,红:病态 "timed_out" : false, "number_of_nodes" : 1, //节点数 "n

Apache + Tomcat + JK 实现负载均衡和集群(状态复制)

原文请见http://www.cnblogs.com/dennisit/p/3370220.html 本文介绍了集群和负载均衡的基本开源实现,实现了用Apache分发请求到多个Tomcat里面对应的应用. 模块介绍 - Apache作为Web服务器,用于处理静态Http请求: - Tomcat作为应用服务器(Servlet容器),处理动态请求: - JK 作为Apache与Tomcat之间的桥梁,实现了Apache与Tomcat一对多的对应,使后端Tomcat负载均衡. 开发环境 - Windo

Redis 3.2.1集群 —— fail状态的产生

一.节点的fail 节点的fail是通过集群中超过半数的节点检测失效时才生效,这里会触发选举,将slave升级为master 二.集群的fail 如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完整时进入fail状态. 如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态. 原文地址:https://www.cnblogs.com/yifanSJ/p/9108594.html

zookeeper集群查看状态时报错Error contacting service. It is probably not running的一些坑以及解决办法

最近在搭建mq集群时候需要用到,zookeeper,可是启动的时候显示成功了,查看状态的时候却报错了: 碰到这个问题也是研究好好半天才解决,这里就总结出一个快速解决办法! 首先,必须看日志: 报错信息一般是当前目录下这个文件中,打开查看是什么原因,基本上我碰见的两种:一种是端口占用,一种是找不到路由: 还有一种就是端口占用了,netstat -znpl |grep 2181 查看一下并关闭这个进程,默认端口是2181,zoo.cfg可配置 !!!!这里提示一下,zoo_sample.cfg必须改

mongodb集群shard状态异常:RECOVERING

报错信息 2018-11-28T06:46:55.783+0000 I REPL [replication-0] We are too stale to use 172.19.9.12:27003 as a sync source. Blacklisting this sync source because our last fetched timestamp: Timestamp(1542344943, 1) is before their earliest timestamp: Timest

k8s 集群 节点状态显示notready

一般情况下 我们是在maste节点上安装网络插件的,然后在join node 节点,这样导致node节点可能无法加载到这些插件 使用 journalctl -f -u kubelet 显示如下内容 Nov 06 15:37:21 jupiter kubelet[86177]: W1106 15:37:21.482574 86177 cni.go:237] Unable to update cni config: no valid networks found in /etc/cni Nov 06