一 . 前言
前段时间写过一篇关于TDH 集群的许可证管理机制及TDH集群的卸载与安装d的博文:
TDH 集群的许可证管理机制及TDH集群的卸载与安装
该片博文的核心意思如下:
- 星环的tdh大数据平台执行了严格的许可证管理机制,当集群的许可证到期后,集群及集群中的关键服务如hdfs/inceptor等将不能再进行重启,无法正常对外提供服务。所以集群管理员需要提前规划时间,及时向星环官方申请许可证续期。
- 不过对于依托最终客户名义,多次续期的开发或测试集群,星环官方对续期申请可能会冷处理不做任何响应。此时,我们可选的一个方案是,将tdh集群卸载后再进行重装。
- 如果原集群中还有hdfs/inceptor等数据需要保留,需要通过distcp和mysqldump等工具借助一个第三方集群备份数据,待新集群安装完毕后再从第三方集群的备份数据中恢复数据。
本次我司一个产品部的 TDH 开发集群到期,inceptor 服务无法继续使用。于是产品部找到笔者来协助卸载与重装该集群,并声明原集群中的数据可以删除。笔者按照上述博文中的步骤进行操作,前后历时四个小时左右,新集群就OK了。
在此记录下卸载与重装过程中的一些小问题,供由相同需求的小伙伴们参考。更多细节请参考上述博文。
二. TDH 集群卸载
TDH集群的卸载,按照上述博文进行操作即可。有以下几个细节需要注意:
- 该卸载脚本执行后,可能会有些没有删除成功的目录或文件,需要根据日志提示手动执行相应的命令进行删除;
- 该卸载脚本不会删除磁盘上license相关目录和文件,需要执行命令手动删除下license相关目录和文件,否则再次安装TDH集群后,仍会检测并使用旧的 LICENSE 数据,仍会报集群许可证过期错误:
- mount | grep transwarp/mounts | awk '{print $3}'| xargs umount
- rm -rf /mnt/disk1/Hadoop
- rm –rf /hadoop/namenode_dir
- rm -rf /transwarp/mounts
- rm –rf /var/manager/zookeeper
- rm –rf /var/license
- rm –rf /var/zookeeper1
- 该卸载脚本 uninstall.sh 可以重复执行;
关于该脚本的说明,也可以查看TDH官方如下博文:http://support.transwarp.cn/t/topic/1633
三. TDH集群卸载后的重装
TDH集群卸载后的重装,参考上述博文即可。有以下几个细节需要注意:
- 安装过程中,需要正确配置 DNS, NTP, 和可用的rpm repo;
- 从安装日志中可以看出,安装时在底层使用 yum命令从配置的 rpm repo 库安装了多个服务,一些关键的服务如下:
- installing : docker-tos-1.0-1.el7
- Installing : docker-compose-tos-1.0-1.el7
- Installing : hyperkube-tos-1.0-1.el7
- Installing : etcd-tos-1.0-1.el7
- TDH安装完毕后会自动启动 TSO, TOS是星环开发的基于Docker和Kubernetes的云操作系统,用来管理TDH集群;
- TOS的正常运作,需要依赖 haproxy,通过删除与重装的方式安装 TDH 时,底层的 haproxy 服务很容易出错,造成 TOS 无法正常启动,整个集群也无法正常启动。
- 笔者在这次卸载与重装过程中,遇到的唯一一个比较耗时间的地方,就是 haproxy 问题的修复,其修复方式是:
- 卸载并重装haproxy:yum erase/remove -y haproxy && yum install -y haproxy;
- 手动修改haproxy使用星环的配置文件/etc/tos/conf/haproxy.cfg,而不是默认的/etc/haproxy/haproxy.cfg(需要修改/usr/lib/systemd/system/haproxy.service);
- 然后执行Systemctl daemon-reload 重新加载最新的harpxy;
- 然后重启 haproxy: systemctl restart haproxy;
相关截图如下:
tos因haproxy启动失败而启动失败的错误日志
journalctl -u haproxy 查看haproxy的错误日志
haproxy使用的默认配置文件
haproxy使用星环的配置文件
重启后haproxy启动成功
四. haproxy 问题总结
- tdh的正常运行依赖haproxy的正常运行(Tdh安装时底层会自动安装haproxy);
- 如果haproxy运行失败,可以采取卸载并重新安装的方式来修复;
- 可以使用命令 Journalctl –u haproxy 常看haproxy相关日志;
- HAPROXY 重新安装后,需要确认下底层/usr/lib/systemd/system/haproxy.service使用的配置文件是星环的/etc/tos/conf/haproxy.cfg 而不是默认的/etc/haproxy/haproxy.cfg;
- haproxy修改底层的配置文件后,需要先执行命令 systemctl daemon-reload 重新加载最新的harpxy,然后再重启 haproxy: systemctl restart haproxy;