双网卡serverkey变动解决方案

  其他常见问题
内容纲要

概要描述

双网卡bond配置会在主备网卡做切换时,导致serverkey的变化,进而导致hdfs,hyperbase,inceptor等多项服务不可用的问题。本文描述基于这个场景下的解决方案。

详细描述

1 初始serverkey以及网卡切换后的变化记录

初始serverkey

A7s/zEf0o8yfrsFgojoCaPf88/P8,ABzeCef7UPtBxlXNl34e6Pv719f7,BwQQWBZDU1YpaAJ4mWZT9EQSSEgS

主备网卡分别切换后的serverkey变动如下所示
file

2 准备需要替换的sk包

下载地址为:
http://172.16.1.168:8081/artifactory/libs-release-local/sk/sk/1.0.0/sk-1.0.0.jar
MD5: 24c819eededa0b82224ad733c8e07574

3 Manager Master节点执行

mkdir -p /home/transwarp/replace-sk/rp_manager_sk/
touch /home/transwarp/replace-sk/rp_manager_sk/change_manager_sk_record.txt
chmod 777 /home/transwarp/replace-sk/rp_manager_sk/change_manager_sk_record.txt
find / -name 'sk-0.0.1.jar' | grep -v overlay | grep -v mnt > /home/transwarp/manager_sk_jar_dir.txt

file
备份sdk包

cp head -n1 /home/transwarp/manager_sk_jar_dir.txt /home/transwarp/replace-sk/rp_manager_sk

替换新的sdk包,上传jar包到目录

mkdir -p /home/transwarp/ServerKey/
cat /home/transwarp/manager_sk_jar_dir.txt | while read LINE
do
sudo echo "cp /home/transwarp/ServerKey/sk-1.0.0.jar ${LINE%/*}" >> /home/transwarp/replace-sk/rp_manager_sk/change_manager_sk_record.txt
sudo cp /home/transwarp/ServerKey/sk-1.0.0.jar ${LINE%/*}
sudo echo "rm -f $LINE" >> /home/transwarp/replace-sk/rp_manager_sk/change_manager_sk_record.txt
sudo rm -f $LINE
done

file
file

4 其他所有节点执行Agent自适配Linux机器UUID文件权限设置

备份transwarp-manager-agent脚本

 cp /etc/init.d/transwarp-manager-agent /etc/init.d/transwarp-manager-agent.bak

添加“sudo chmod a+r /sys/class/dmi/id/product_uuid”到transwarp-manager-agent脚本的start()部分下的第一行

vim /etc/init.d/transwarp-manager-agent

file

各个节点重启agent服务

/etc/init.d/transwarp-manager-agent restart

manager节点重启manager服务

 /etc/init.d/transwarp-manager restart
5 其他Agent节点替换sk包
mkdir -p /home/transwarp/replace-sk/rp_manager_sk

备份原sk包

cp /usr/lib/transwarp-manager/common/lib/sk-0.0.1.jar /home/transwarp/replace-sk/rp_manager_sk

替换新的sdk包

rm -rf /usr/lib/transwarp-manager/common/lib/sk-0.0.1.jar 
cp /home/transwarp/ServerKey/sk-1.0.0.jar /usr/lib/transwarp-manager/common/lib

注意权限是755

6 镜像部分

获取镜像仓库头部信息

image_repository_head=$(kubectl -n kube-system get pod -owide | grep registry | head -n1 | awk '{print $7}'):5000

从镜像仓库获取镜像信息

curl https://${image_repository_head}/v2/_catalog | jq '.repositories[]' | xargs -I {} curl https://${image_repository_head}/v2/{}/tags/list > /mnt/disk1/registry_image-info.txt

file

筛选镜像信息

cat /mnt/disk1/registry_image-info.txt  | awk -F ":" '{print $2 $3}' | awk -F "tags" '{print $1 $2}' | awk -F "[" '{print $1 $2}' | tr -d '"' | tr -d ']}' > /mnt/disk1/images-tags.txt

file

拆分并重组镜像名

cd /mnt/disk1/
FILENAME=images-tags.txt
image_repository_head=$(kubectl -n kube-system get pod -owide | grep registry | head -n1 | awk '{print $7}'):5000
cat $FILENAME | while read LINE
do
#拆分字符串到数组
str=$image_repository_head/$LINE
OLD_IFS="$IFS"
IFS=","
arr=($str)
IFS="$OLD_IFS"
j=${#arr[*]}
for ((i=1; i> registry_images_name.txt
done
done

file

根据镜像名拉取镜像

cat registry_images_name.txt | while read LINE
do
echo "docker pull $LINE"
docker pull $LINE >> pull_images_from_registry.log
done

file

批量备份镜像

cat registry_images_name.txt | while read LINE
do
suffix=date "+%Y%m%d%H%M%S"
docker tag $LINE $LINE-backup-${suffix}
done

file

扫描sk包文件路径列表
可以去掉registry_images_name.txt里的dbaservice的image 再进行操作

cat registry_images_name.txt | while read LINE
do
echo "docker run $LINE find /usr/lib -name 'sk-*.jar'">> find_images_sk_jar.txt
docker run $LINE find /usr/lib -name 'sk-*.jar' >> find_images_sk_jar.txt
done

file
结束后,查看文件,总结一下,大概是以下几个组件需要换包:

apacheds
guardian
hbase
hdfs
httpfs
inceptor
inceptor-gateway
kms
search
yarn
7 编写DockerFile替换相应镜像

据替换的文件列表构建Dockerfile:

FROM tdh-test1:5000/transwarp/inceptor:transwarp-6.2.2-final 
#拷贝新版本sk包到对应服务文件路径
COPY sk-1.0.0.jar /usr/lib/inceptor/lib
COPY sk-1.0.0.jar /usr/lib/hbase/lib
COPY sk-1.0.0.jar /usr/lib/hadoop-mapreduce
COPY sk-1.0.0.jar /usr/lib/hadoop/lib
#移动旧版本sk包到/tmp目录(相当于备份操作)
RUN cp /usr/lib/inceptor/lib/sk-0.0.1.jar /tmp
#清理旧版本sk包
rm –f /usr/lib/inceptor/lib/sk-0.0.1.jar
rm -f /usr/lib/hbase/lib/sk-0.0.1.jar
rm -f /usr/lib/hadoop-mapreduce/sk-0.0.1.jar
rm -f /usr/lib/hadoop/lib/sk-0.0.1.jar 
docker build -t tdh-test1:5000/transwarp/:transwarp-6.2.2-final .
docker push tdh-test1:5000/transwarp/:transwarp-6.2.2-final
8 根据最新的serverkey更换许可证

联系星环项申请适配新Server Key的许可证,参考《TDH安装手册》10.2.许可证激活和使用 章节将申请到的新许可证激活。

9 Manager页面重启所有服务

file
file
file

注意

1 如果是集群安装后,自带的licence,没有上传过,那么默认会使用试用版licence,此时,三个月内,无论serverkey怎么变动,集群都可以用试用版licence正常启动。

2 此JAR包目前不会打进Manager安装包,需要手动提供给特许客户。 原因是: 由于该jar包 升级前后 会导致serverkey变动,如果manager全局替换的话,届时TDH或ArgoDB升级时 会导致大部分正常的集群的Serverkey都会变更,需要重新申请License,且还需要 hdfs一起升级,运维成本较高,不会主动打入安装包。 所以仅用于特需客户尝试使用。

3 此JAR包现在并不能保证100%不会发生变更。目前的逻辑获取某特殊硬件信息,若获取不到,还是会回退到获取网卡的方式,总体来说,会大大降低 serverkey变更的概率,但是由于操作系统实现的不同,还不能从理论上保证绝对防止,若出现问题,及时反馈相关信息。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。