
某个服务突然挂掉了的常规排查步骤
-
查看基础服务(LicenseServer/TOS/Aquila)是否健康,因为产品服务是运行在基础服务之上,如果基础服务不健康是会导致产品服务无法运行,因此优先解决基础服务的健康问题;
-
如果基础服务健康,但是单独产品服务有问题,则进入服务详情页看具体是哪个角色有问题,然后在/var/log目录下看对应的日志是否有报错,比如端口冲突等信息;
-
如果后台日志里看不出来问题,再看manager日志(/var/log/transwarp-manager),前台日志(任务日志及具体服务的健康状态旁的详情);
-
如果日志显示是pod出问题了,那么就可以执行kubectl get pod |grep <服务名字>,kubectl logs <不running的podid>,来进一步查看pod的日志。
如果依然无法判断出问题,可以访问星环开发者社区联系社区版工作人员,并提供相关的报错日志 ![]() |
某个服务启动失败的常规排查步骤
当某个服务出现问题的时候可以参考下方思路进行问题定位:
-
重试当前任务,看看是否能够启动成功(这个是因为可能是因为磁盘io或其他原因导致超时报错,不一定是服务本身出现问题)
-
返回服务主界面,选择重启服务,看看是否能够重启成功
-
通过 systemctl list-units | grep <组件名,如quark1>,查找服务角色对应的service名称
-
通过 systemctl status <service_name> 查看服务角色状态
-
查看服务日志,看是否有明显报错
-
若无日志生成,通过journalctl -u <service_name> 查看服务启动日志,看是否有明显报错
示例1.启动TDH服务失败如何定位问题
- 【问题描述】
-
当在8180页面上发现服务不健康(红色或者黄色)或者未启动(灰色)时,常见的办法是去启动(或者重启)问题服务,服务启动失败时需要检查两个方面:
-
容器相关的服务是否正常
-
服务本身的进程启动情况
-
- 【具体步骤】
- 步骤一 检查集群基础的服务是否健康
-
TDH服务的健康依赖于许多的基础组件,当发现启动服务失败时候,请首先检查这些基础服务的健康状态,一般包括transwarp-manager-agent/tos/guardian/许可证等服务
如果有不健康的可以首先通过页面来启动它,需要注意的是节点页面上必须要能显示硬件信息才证明是健康的,如下图所示
如果没有显示硬件信息的话则需要ssh登录到对应的服务器上,手动启动一下agent进程:
systemctl restart transwarp-manager-agent
复制 - 步骤二 查看页面上报错的原因
-
任何一个操作失败的时候,在页面上都会给出对应的输出,所以排查的第一步就是点击“查看”这些输出中的报错:
比如上图中的输出就是在提示连接对应节点的10208端口失败了,接下来只要找到这个端口对应的进程把它启动即可。
当然现实往往不会很完美,当遇到的是启动服务失败的情况时,页面上的输出往往不会如此直接指向错误的根源:
- 步骤三 查看服务的后台pod状态及日志
-
自TDH发布5.x版本以后,所有服务都是容器化的,所以当服务启动失败时候,先检查它的容器pod状态是否正常,比如如果是inceptor服务启动失败,那么可以在后台执行:
kubectl get pod -owide | grep quark1
复制结果中的状态必须是running、健康探针必须是1/1时这个pod才是健康的,否则就需要去查看这个pod的日志,命令一般是两条:
kubectl logs <podid> kubectl describe pod <podid>
复制两条命令输出的日志侧重点并不相同,根据结果中的错误信息往往能够对服务启动的原因可以有初步的判定。
- 步骤四 查看服务的日志
-
如果从pod的日志里还是无法找到错误,可以直接去检查服务的日志。分为以下两种情况:
-
第一种情况:Pod没有起来,显示0/1,那么首先应该根据上一步的输出结果查到问题pod所在的节点
登录到对应的服务器之后,可以到这个路径下查找日志:/var/log/服务名。例如quark服务的路径一般都是/var/log/quark1/ (服务名称最后数字是安装的时候决定的)
-
第二种情况:如果pod起来了显示的是1/1那么则没有节点的限制(进入pod内就会切换到server所在节点),同样是到对应路径下查找日志:/var/log/服务名。
一般来说,该目录下往往会有多个角色的日志,具体需要查看哪一个文件呢?
一个角色的名字往往都是有一致性的,从pod名跟文件名就可以得出其关联,比如:
另外TDH服务保留日志的时间比较久、日志文件数往往是有多个,因此需要注意日志文件中的时间。
-
示例2.误操作,社区开发版容器停止运行,如何恢复
- 【问题描述】
-
社区开发版使用时,因为误操作,使用docker attach <container id> 命令进入容器,并使用exit退出容器,导致容器退出并停止,集群停止运行。
- 【解决方法】
-
-
在服务器端执行:docker ps -a ,查看被关闭的容器ID。
-
执行:docker start <container ID> ,启动该容器
-
启动后,Manager恢复。进入Manager界面会发现此时各服务均不可用,图标显示为灰色
-
在恢复集群时需要优先启动基础服务[LicenseServer/Aquila/(Guardian)]
-
基础服务恢复健康后即可回到集群首页,一键启动产品服务即可
-
点击服务右上方“启动全部”按钮即可一键重启。
-
Manager及其他服务出现问题
Manager相关问题
社区开发版
8180 Manager页面打开后无反应
【问题描述】

【解决方法】
清楚缓存,重新刷新
8180 Manager页面显示拒绝访问
【问题描述】

【问题根因】
在启动新的容器时,环境还有正在运行的其他容器,端口未释放,导致启动新容器时端口冲突。即使后续有停止其他容器,但是此时manager自启动已失败,所以无法访问。
【解决方法】
在启动新容器之前,请再次务必确保环境上没有正在运行的其他开发版产品容器。 |
-
进入容器
docker ps docker exec -it <containerid> bash
复制 -
查看manager服务状态
systemctl status transwarp-manager-db
复制 -
重启manager服务
systemctl restart transwarp-manager-db
复制
社区版
TDH Manager登录不上
- 【用户问题】
-
用户名密码验证码都是正确的,但是点了登录只会刷新验证码。
- 【解决方法】
-
需要检查一下磁盘是不是满了。
误操作,不小心删除了manager中的mysql,怎么办
- 【问题描述】
-
误操作不小心删除了
- 【解决方法】
-
此处存储着manager的数据,如果不小心删掉了需要重新创建集群。
解决步骤:
把/etc/transwarp-manager/master/db.properties删掉,然后重启manager服务。
rm -rf /etc/transwarp-manager/master/db.properties
复制重启后可能会进入8179,访问8180即可。点击红框框进行添加集群。
Yarn相关问题
启动yarn服务失败,显示“failure to login:for principle 以及 cannot locate KDC”
- 【核心原因】
-
这种时候通常是因为之前单独开关某个服务的安全顺序出现问题,没有注意依赖关系。
- 【解决方法】
-
重新在guardian页面统一开关安全,完成后重新尝试启动yarn服务。
报错显示Invalid resource request…
- 【报错信息】
-
- 【解决方法】
-
yarn的node manager内存资源给少了,可以到manager yarn服务的配置列表调整yarn.nodemanager.resource.memory-mb这个参数
Quark相关问题
Quark服务状态异常
- 【问题描述】
-
quark服务安装完成,状态健康,但是一分钟后出现重启,大概重启了两次,然后自动关闭了
- 【核心原因】
-
hdfs创建目录没执行,所以在安装的时候就失败了
- 【解决方法】
-
就是初始化quark1的时候,有错误,后面的步骤没有继续,重试即可
启动Quark服务失败,无法启动集群角色
- 【报错情况】
-
- 【核心原因】
-
节点主机名配置错误
节点名称设置时不符合要求,须按照手册要求设定。
集群的节点名称不能重复,且必须符合DNS-1123规范,由数字、小写字母或“-”组成,不能包含大写字母,长度小于63。
- 【解决方法】
-
修改后重试,可选择删除该容器重新启动一个容器的形式,重新安装产品服务。
通过8888端口访问Quark Server,出现提醒:使用4040端口DBA Server服务
- 【用户问题】
-
咨询一下目前我们这边暂时在测试环境部署了单机社区开发版的TDH各个服务运行正常,但是我在尝试访问Quark Server服务跳转UI页面时出现提示需要使用标准DBA服务,请问这种情况是否正常?
- 【问题答复】
-
您好,这是正常的,您可以通过点击右上角的insight server (DBA)服务查看,也可进入全局服务的Aquila服务详情页面查看DBA Service角色的相关链接进行访问:
Guardian相关问题
Guardian开启安全,开启ZK服务安全时报错,报错显示:error.nodeHostNotFound
- 【报错情况】
-
- 【核心原因】
-
host文件中的IP与实际IP不一致
- 【解决方法】
-
检查hostname及/etc/hosts文件,不一致修改后重试即可
重启Guardian时通过TOS停止server失败,显示“Guardian_server has no ready pod”
- 【问题描述】
-
重启Guardian时失败,步骤为“通过TOS停止server”,显示内容为”Guardian_server has no ready pod”
查看Guardian Server日志详情,显示如下:
Guardian_server 的pod在ce24节点处于Terminating状态:
通过查看TOS服务详情查看状态:
常见pod的几种状态
-
Pending:这个状态意味着,Pod 的 YAML 文件已经提交给了 Kubernetes,API 对象已经被创建并保存在 Etcd 当中。但是这个 Pod 还没有被调度成功,最常见的原因比如 Pod 中某个容器启动不成功
-
Running:这个状态下,Pod 已经调度成功。也就是它包含的容器都已经创建成功,并且至少有一个正在运行中
-
Succeeded:这个状态意味着,Pod 里的所有容器都正常运行成功并退出了。这种情况在运行一次性任务时最为常见
-
Failed:这个状态下,Pod 里至少有一个容器以不正常的状态退出。这个状态出现时,你得想办法 Debug 这个容器,比如查看 Pod 的事件和日志。
-
Unknown:这是一个异常状态,意味着 Pod 的状态不能集群检测到,这很有可能是主从节点(Master 和 Kubelet)间的通信出现了问题。
-
Terminating:在节点处于“NotReady”状态时,deployment控制器会迁移节点上的容器实例,并将节点上运行的pod置为“Terminating”状态。待节点恢复后,处于“Terminating”状态的pod会自动删除。偶现部分pod(实例)一直处于“Terminating ”状态,发现这部分的pod没有得到重新调度,不能提供服务。
然后,在服务器端,查看集群中pod的状态,发现guardian的一个pod处于Terminating,同时排除其他pod报错。到目前为止,需要对其进行强制删除,并重启该pod以恢复Guardian运行。
定位到pod以后,使用kubectl logs <pod-names>查看pod的日志信息。此时看到无法查看日志。
随后,通过systemctl status命令查看是否存在失败的服务,发现有1个失败的服务。
通过systemctl --failed命令查看失败的服务
判断是由于docker.socket服务出现问题,导致重启服务时,无法为服务分配新的pod。
-
- 【修复方法】
-
# systemctl stop docker # kill $(ps -aux|grep docker |awk '{print $2}') # kill $(ps -ef | grep docker-containerd-shim | awk '{ print $2 }') # rm -rf /var/lib/docker/* # docker-storage-setup --reset (可跳过) # docker-storage-setup (可跳过) # systemctl restart docker # docker load -i /etc/tos/conf/tos.tar.gz
复制恢复docker服务以后,在Manager界面进行TOS服务的重启,重启成功。随后分别进行Aquila和Guardian服务的重启,重启成功。最后一键重启其余服务,集群恢复运行。
- 【修复方法说明】
-
docker创建的容器是无状态的,一些状态信息(例如数据、配置文件等)其实都已经挂载进宿主机或者持久化到其他地方;这个时候可以通过上面的修复方法,关闭docker相关容器和进程,删除/var/lib/docker/下面容器相关的无状态信息;然后重启docker和kubelet,这个时候k8s会自动将之前的容器调度起来;
如果忘记或需要重置Guardian中管理员密码,如何操作?
- 【环境描述】
-
TDH社区版-V2023-5版本
TDH社区开发版-V2023-5版本
Guardian-V3.2.3、3.2.5版本
后面将针对用户忘记Guardian admin(KAdmin)密码或需要重置密码的情况。如果出现无法使用“开启/关闭Guardian安全”和无法访问Guardian Server的情况,请参考后续解决步骤。
- 【问题描述】
-
无法使用“开启/关闭Guardian安全”,显示如下
此时需要确认密码是否无误,无误后检查是否可以访问Guardian Server
此时发现Server页面打不开。
Server页面打不开的情况下需要先查看是否已修改本地hosts文件将主机名与Manager相关服务页面的IP地址进行关联。例如 Windows 平台下,该文件的路径为
C:\Windows\System32\drivers\etc\hosts。
复制此时发现未做关联,添加后即可访问,但是输入相关密码后依然无法登录。此时则判定可能是密码出了问题。
那么如何重置密码?
- 【解决步骤】
-
-
版本:社区版-V23-5版本
-
执行kubectl grep po -owide|grep guardian命令进入guardian pod,执行重置密码的脚本文件
执行sh resetpwd -newPassword <新密码> -username admin
-
执行完成后,Guardian admin的密码已经修改,接下来需要去Manager界面更新密码。
点击“更新Guardian Admin密码”后,在出现的弹窗中输入刚刚重设的密码,点击确定。
然后界面重启Guardian服务即可。
-
-
版本:社区开发版-V23-5版本
-
在服务器端执行:docker ps ,查看正在运行的容器ID。
-
执行:docker exec -it <container ID> bash ,进入容器内部。
-
进入/lib/guardian/scripts目录下,可以看到该目录下有名为“resetpwd”的脚本文件,其执行参数如下图所示。接下来就可以通过执行该脚本重置Guardian的admin用户密码。
-
通过执行脚本文件实现密码修改,在此修改用户为admin,您可设定新的密码,命令如下所示; 执行:sh resetpwd -newPassword <新密码> -username admin
-
执行完成后,Guardian admin的密码已经修改,接下来需要去Manager界面更新密码。
点击“更新Guardian Admin密码”后,在出现的弹窗中输入刚刚重设的密码,点击确定。然后重启Guardian服务。
此时,已全部完成Guardian Admin密码的重设步骤,可以去Guardian Server界面尝试登录,验证新密码是否生效。
-
-
如何在Guardian上重置租户密码?
- 【用户问题】
-
请问下密码可在Guardian界面重置密码获取。这一步怎么操作的,找不到重置的地方
- 【问题答复】
-
打开Guardian Server页面后,点击租户—选择您要使用的用户–重置密码即可。
社区开发版如何在guardian上下载hbase租户的keytab
- 【解决方法】
-
可以在上图所示位置进行下载,或者也可以在后台挂载目录下进行查看,比如开发版容器挂载的目录路径是/home/tdh,那么就在/home/tdh/conf/hyperbase1/conf。目录下有hpyerbase.keytab。
HFDS相关问题
初始化 HDFS 预定义监控信息 启动失败
- 【报错信息】
-
- 【核心原因】
-
未安装Aquila
- 【解决方法】
-
检查Aquila里面的角色列表是否都是Running,如果存在则启动它,启动失败,则先停止Aquila后删除,重新配置
TOS相关问题
TOS Registry启动失败,报错显示No enough TOS_REGISTRY are healthy…has no running container
- 【报错信息】
-
- 【解决方法】
-
在有问题的节点执行docker load -i /etc/tos/conf/tos.tar.gz,再重试即可。
Aquila相关问题
DBA产品页面上显示的stage倾斜值在什么范围比较正常
- 【用户问题】
-
这个倾斜的值在什么范围比较正常,版本是tdh-aquila-9.0-ce
- 【问题答复】
-
Task Skewness = Stage MaxTaskCost / Stage MinTaskCost 超过100可能就需要关注一下了
其他问题
如何启停集群,目磁盘不够用了,打算做部分数据的迁移工作
- 【用户问题】
-
考虑停止整个集群,迁移数据,如何启停?
- 【问题答复】
-
您好,需要先确认磁盘中目标迁移数据是否为hdfs数据,如果磁盘满了的话优先清理日志,把空间释放出来后可以在Manager界面做集群停止,迁移数据。Manager界面即可一键启停,右上角有相关按钮。
k8s集群的bearer_token路径在哪里 ,一直找不到
- 【问题答复】
-
CCE TOKEN 获取
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
复制
内存不够用经常溢出,日志有个名为executor_heapDump.hprof文件很大,可以删除吗
- 【用户问题】
-
其他的都是几M,这个有26G。
- 【问题答复】
-
可以删,说明之前crash过,Executor有发生OOM之类的情况会自动输出heapdump 文件。