加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

措施员条记 | 一次Zookeeper扩展之殇

发布时间:2019-05-29 20:22:38 所属栏目:教程 来源:毛正卫
导读:配景 基于公司成长硬性需求,出产VM处事器要同一迁徙到ZStack 假造化处事器。搜查本身项目行使的处事器,个中zookeeper集群中招,以是必要举办迁徙。 迁徙打算 为了使迁徙差池营业发生影响,最好是回收扩容 - 缩容的方法举办。 声名: 原出产集群为VM-1,VM

第七、zkServer.sh里的nc呼吁有题目。

  1. 也许是呆板上没有安装nc呼吁,尚有种说法是在zkServer.sh里找到这句: 
  2. STAT=`echo stat | nc localhost $(grep clientPort “$ZOOCFG” | sed -e ‘s/.*=//’) 2> /dev/null| grep Mode` 
  3. 在nc与localhost之间加上 -q 1 (是数字1而不是字母l) 
  4.  
  5. zookeeper版本是3.4.6,zkServer.sh里基础没有这一句(获取状态的语句没有效nc呼吁) 
  6.  
  7. # -q is necessary on some versions of linux where nc returns too quickly, and no stat result is output 
  8.    clientPortAddress=`grep "^[[:space:]]*clientPortAddress[^[:alpha:]]" "$ZOOCFG" | sed -e 's/.*=//'` 
  9.    if ! [ $clientPortAddress ] 
  10.    then 
  11.        clientPortAddress="localhost" 
  12.    fi 
  13.    clientPort=`grep "^[[:space:]]*clientPort[^[:alpha:]]" "$ZOOCFG" | sed -e 's/.*=//'` 
  14.    STAT=`"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"  
  15.             -cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain  
  16.             $clientPortAddress $clientPort srvr 2> /dev/null     
  17.          | grep Mode` 
  18.    if [ "x$STAT" = "x" ] 
  19.    then 
  20.        echo "Error contacting service. It is probably not running." 
  21.        exit 1 
  22.    else 
  23.        echo $STAT 
  24.        exit 0 
  25.    fi 
  26.    ;; 

以下是本身排查的方法

今朝征象老集群数据同步正常,也能举办leader推举(从日记获取),可是无法查察节点状态,同非常信息;举办集群扩容,数据不能同步。

办理要领:

1. 实行举办foreground 模式启动,选择一台非主节点举办重启,可早年台查察启动日记。

  1. zkserver.sh start-foreground  
  2. 节点启动正常,无非常输出。 

2. 查察shell剧本:说明zkServer.sh。

"Error contacting service. It is probably not running." 这块日记呈现以下剧本中。

  1. STAT=`"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"  
  2.              -cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain  
  3.              $clientPortAddress $clientPort srvr 2> /dev/null     
  4.           | grep Mode` 
  5.     if [ "x$STAT" = "x" ] 
  6.     then 
  7.         echo "Error contacting service. It is probably not running." 
  8.         exit 1 
  9.     else 
  10.         echo $STAT 
  11.         exit 0 
  12.     fi 
  13.     ;; 

截取个中一部门剧本内容:我们可以起源定为应该是 $STAT 获取存在非常 假如STAT变量为空,则会表现Error contacting service. It is probably not running.: OK,那就说明下这个$STAT到底是什么鬼?

  1.  if [ “x$STAT” = “x” ] 
  2. then 
  3. echo “Error contacting service. It is probably not running.” 
  4. exit 1 
  5. else 
  6. echo $STAT 
  7. exit 0 
  8. fi 

3. 实行用shell的debug模式看下执行进程。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读