• elastic集群单节点停机维护


    为了elastic时时提供服务,需要elastic至少状态维持在yellow状态。所有,维护时需要依次对elastic单个节点进行维护。

    操作步骤如下:

    1.停止elastic的自动分配功能

    curl -XPUT 192.168.1.1:9200/_cluster/settings -d'
    {
      "persistent": {
        "cluster.routing.allocation.enable": "none"
      }
    }'

    2.关闭需要维护的elastic节点,进行维护

    cd elastic-2.3.5
    bin/server/elasticsearch stop

    3.开启需要维护的elastic节点服务,等待节点加入集群

    【等待节点加入集群再开启自动分配是为了防止未分配的分片重新分配到其他节点,占用大量节点带宽,而且大大增加分配所需时间】

    cd elastic-2.3.5
    bin/server/elasticsearch start
    #查看节点是否加入集群
    watch -n 5 "curl 192.168.1.1:9200/_cat/allocation?v 2>/dev/null"

    4.开启elastic的自动分配功能

    curl -XPUT 192.168.1.1:9200/_cluster/settings -d'
    {
      "persistent": {
        "cluster.routing.allocation.enable": "all"
      }
    }'

    5.等待集群自动分配完成【索引越大,自动分配完成需要的时间越长】

    #查看集群是否分配完成,等待集群分配完成
    watch -n 5 "curl 192.168.1.1:9200/_cat/allocation?v 2>/dev/null"
    #查看UNASSIGNED的分片,分片全部分配完后,继续下一步操作
    watch -n 5 "curl 192.168.1.1:9200/_cat/shards?v 2>/dev/null|grep NASSIGNED"

    6.集群自动分配完成后,重复1-5操作,维护其他elastic节点。


     如果第五步自动分配时间特别长,可以使用手动分配命令进行操作,自动分配脚本如下:

    #停机维护的节点名称
    NODE="real138"
    #集群master节点IP
    MASTER_IP="192.168.1.1"
    #更改默认分割符为换行符
    IFS=$'
    '
    #对未分配的主节点进行手动分配
    for line in $(curl "$MASTER_IP:9200/_cat/shards" 2>/dev/null | grep "UNASSIGNED" | grep " p ")
    do
      INDEX=$(echo $line | (awk '{print $1}'))
      SHARD=$(echo $line | (awk '{print $2}'))
    
      curl -XPOST '10.16.28.136:9200/_cluster/reroute' -d '{  
         "commands": [  
            {  
                "allocate": {  
                    "index": "'$INDEX'",  
                    "shard": "'$SHARD'",  
                    "node": "'$NODE'",  
                    "allow_primary": true  
              }  
            }  
        ]  
      }'
    done
    

      

  • 相关阅读:
    内存 : CL设置
    联通积分兑换的Q币怎么兑换到QQ上
    DB2数据库表追加字段
    显示菜单项与按钮项的关联关系
    如何将Windows8系统的磁盘格式(GPT格式)转换成Windows 7系统的磁盘格式(MBR格式)
    索尼(SONY) SVE1512S7C 把WIN8降成WIN7图文教程
    SqlServer之数据库三大范式
    Python并发编程-Redis
    Python并发编程-Memcached (分布式内存对象缓存系统)
    Python并发编程-RabbitMQ消息队列
  • 原文地址:https://www.cnblogs.com/micmouse521/p/8086312.html
Copyright © 2020-2023  润新知