zoukankan      html  css  js  c++  java
  • consul 高版本升级

    在协议兼容的情况下,先挨个升级服务端节点,完毕后,再同样操作升级客户端:
    1、线上正在运行版本Consul v0.6.4 ,计划升级版本Consul v1.2.3
    2、首先把Consul v1.2.3上传到每个节点服务上
    3、关闭Consul v0.6.4 版本,使用 -raft-protocol=2 启动 Consul v1.2.3
    4、当所有的节点服务都运行了Consul v1.2.3,则使用去掉 -raft-protocol=2参数的命令并重启,遍历重启所有Consul v1.2.3代理服务
    5、consul 升级脚本

    #!/bin/bash
    
    sed -i '/consul_update.sh/d' /etc/crontab
    echo "delete crond from /etc/crontab" > /tmp/consul_update.log 
    source /etc/profile
    
    if [ ! -n "$DEPLOY_GROUP_NAME" ] ; then
    echo "DEPLOY_GROUP_NAME is null, system exit!" >> /tmp/consul_update.log 
    exit 1 
    fi
    dc_name=`echo -n $DEPLOY_GROUP_NAME | awk -F "-" '{print $1"-"$2}'`
    consul_service=`ps -ef|grep "consul"|grep "bootstrap-expect"|grep -v "grep"|awk '{print $2}'`
    echo "dc_name is :"$dc_name >> /tmp/consul_update.log 
    overseas="s3-us-west-2.amazonaws.com/海外区存储桶"
    
    cn_home="s3.cn-north-1.amazonaws.com.cn/国内存储桶"
    
    if [ "$dc_name" == "test-cn1" ] || [ "$dc_name" == "test-cn" ] || [ "$dc_name" == "dev-jx1" ] || [ "$dc_name" == "test-jx1" ] || [ "$dc_name" == "prod-cn1" ] ; then
    downloadurl=${cn_home}
    else
    downloadurl=${overseas}
    fi
    
    echo "downloadurl is :"${downloadurl} >> /tmp/consul_update.log
    current_consul=$(/usr/bin/consul -v|sed -n '1p'|awk '{print $2}')
    echo "befor update consul version is :"$current_consul >> /tmp/consul_update.log 
    if [ -n "$current_consul" ] && [ "$current_consul" == "v0.6.4" ];then
        rm -f consul.zip
        wget https://${downloadurl}/consul/consul.zip
        unzip -o consul.zip
        mv /usr/bin/consul  /usr/bin/consulbak
        chmod 755 consul
        mv consul /usr/bin/consul
    
    elif [ -n "$current_consul" ] && [ "$current_consul" == "v1.2.3" ];then
        rm -f consul6.zip
        wget https://${downloadurl}/consul/consul6.zip
        unzip -o consul6.zip
        mv /usr/bin/consul  /usr/bin/consulbak
        chmod 755 consul6
        mv consul6 /usr/bin/consul
    else
        echo "current node not have consul .......system exit!" >> /tmp/consul_update.log
        exit 1 
    fi
    
    
    echo "after update  consul version is :"$(/usr/bin/consul -v|sed -n '1p'|awk '{print $2}') >> /tmp/consul_update.log 
    
    if [ -n "$consul_service" ] && [ "$current_consul" == "v0.6.4" ];then
    ##sed -i "/taildir_position.json/r /tmp/flume_replace.conf" /opt/sengled/consul/consul.sh
        sed -i 's/-bootstrap-expect=5/& -raft-protocol=2/' /opt/sengled/consul/consul.sh
        echo "modify consul.sh add -raft-protocol" >> /tmp/consul_update.log 
    elif [ -n "$consul_service" ] && [ "$current_consul" == "v1.2.3" ];then
        sed -i 's/-raft-protocol=2/ /g' /opt/sengled/consul/consul.sh
        echo "modify consul.sh del -raft-protocol" >> /tmp/consul_update.log 
    fi
    
    cp consul.sh run
    ps -ef|grep consul|grep config-dir|grep -v grep|awk '{print $2}'| xargs kill -9
    echo "restart consul...........">> /tmp/consul_update.log 
    sleep 3
    /usr/bin/consul -v
    /usr/bin/consul members
    ps -ef|grep consul
    echo "current consul cluster info:"$(/usr/bin/consul members) >> /tmp/consul_update.log 
  • 相关阅读:
    【读书笔记】iOS-类别
    【读书笔记】iOS-特性
    【读书笔记】iOS-对象初始化
    【读书笔记】iOS-内存管理
    iOS---类方法(静态方法)和实例方法
    iOS ---Extension编程指南
    Swift学习与复习
    iOS----Xcode6或者Xcode7设置LaunchImage图标
    iOS----------使用 Xcode6或Xcode7配置.pch文件
    iOS开发----优秀文章推荐
  • 原文地址:https://www.cnblogs.com/husbandmen/p/10418129.html
Copyright © 2011-2022 走看看