zoukankan      html  css  js  c++  java
  • elasticsearch重庆上海移动切换方案

    之前的重庆3台服务器安装了3个节点的es  其中1个master节点  另外2个是node节点

    由于重庆机房可能停电,现在准备在上海的服务器也安装1个master和2个node节点,平时重庆没停电的时候,上海的3个节点都把  node.data: false   这样就不会有分片分配到上海,不会影响查询速度(重庆到重庆服务器网络带宽比重庆到上海大10倍)

    一,先把147,164,165测试环境配置成类似online环境的情况

    同一个机器用docker安装多个es导致找不到master报错问题解决过程

    因为测试环境之前装的3个节点是15.15.181.147(上海 node节点)   15.99.72.164(重庆master节点)  15.99.72.165(重庆node节点)

    我需要模拟成online环境的重庆3个es节点然后其中一个是master  然后上海新增3个es节点其中一个是master

    1,我先把147配置成了一个master节点,然后重启147的es,没有问题,并且测试了分别重启164 master或者重启147 master整个集群的master会在147和164之间切换,整个集群的分片也会自动分配,集群状态从yellow变为green 整个过程大概1分钟。

    2,然后我把15.99.72.164 上又安装了一个普通node节点,但是发现新增的es节点找不到master ,用 docker logs 命令发现很多错误,比如如下这种,我当时各种查资料修改配置们还有其他一下错误就不列出了,

     [2019-12-25T03:30:20,034][INFO ][o.e.d.z.ZenDiscovery     ] [node2] failed to send join request to master [{master}{wY2NxAL_SNa77JCWSYBPfA}{12gr64AjRtCiu_I9ieanpw}{15.99.72.164}{15.99.72.164:9300}], reason [RemoteTransportException[[master][172.17.0.2:9300][internal:discovery/zen/join]]; nested: ConnectTransportException[[node2][15.99.72.164:9300] handshake failed. unexpected remote node {master}{wY2NxAL_SNa77JCWSYBPfA}{12gr64AjRtCiu_I9ieanpw}{15.99.72.164}{15.99.72.164:9300}]; ]

     3,后来发现问题所在,因为我在164上安装了2个es节点,一个master配置的9200 和 9300端口  另外一个配置普通node为9201和9301,但是我第一次docker run的时候执行的如下:

    docker run -d --name es5_6_13node2 -p 9201:9200 -p 9301:9300 --privileged=true -v /usr/local/elasticsearch2/conf/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/elasticsearch2/data:/usr/share/elasticsearch/data elasticsearch:5.6.13

     后来改为正确的docker run应该是如下  注意  9201:9201 -p 9301:9301

    docker run -d --name es5_6_13node2 -p 9201:9201 -p 9301:9301 --privileged=true -v /usr/local/elasticsearch2/conf/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/elasticsearch2/data:/usr/share/elasticsearch/data elasticsearch:5.6.13

     4,除了上面所述的问题,注意下面每个节点加入的红色配置,也是解决上述问题的关键。

    147 master的配置

    #集群名称 所有节点要相同
    cluster.name: "nova_es"
    #子节点名称
    node.name: master_sha
    #不作为master节点
    node.master: true
    node.data: false
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    network.bind_host: 0.0.0.0
    network.publish_host: 15.15.181.147
    network.host: 15.15.181.147
    http.port: 9200
    transport.tcp.port: 9300
    #设置master地址
    discovery.zen.ping.unicast.hosts: [15.99.72.164,15.15.181.147]

    164 master的配置

    #集群名称 所有节点要相同
    cluster.name: "nova_es"
    #本节点名称
    node.name: master
    #作为master节点
    node.master: true
    #是否存储数据
    node.data: true
    # head插件设置
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    #设置可以访问的ip 这里全部设置通过
    network.bind_host: 0.0.0.0
    #设置节点 访问的地址 设置master所在机器的ip
    network.publish_host: 15.99.72.164
    network.host: 15.99.72.164
    http.port: 9200
    transport.tcp.port: 9300
    discovery.zen.ping.unicast.hosts: [15.99.72.164,15.15.181.147]

    164 普通node的配置

    cluster.name: "nova_es"
    #子节点名称
    node.name: node2
    #不作为master节点
    node.master: false
    node.data: true
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    network.bind_host: 0.0.0.0
    network.host: 15.99.72.164
    http.port: 9201
    transport.tcp.port: 9301
    network.publish_host: 15.99.72.164
    #设置master地址
    discovery.zen.ping.unicast.hosts: ["15.99.72.164:9300","15.15.181.147:9300"]

    165 普通node的配置

    #集群名称 所有节点要相同
    cluster.name: "nova_es"
    #子节点名称
    node.name: node1
    #不作为master节点
    node.master: false
    node.data: true
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    network.bind_host: 0.0.0.0
    network.publish_host: 15.99.72.165
    #设置master地址
    discovery.zen.ping.unicast.hosts: [15.99.72.164,15.15.181.147]

    5, 再在147新增2个普通node节点

    在147上先装第1个节点    mkdir -p /usr/local/elasticsearch2/conf

    touch es2.yml

    加入如下配置内容,注意红色的配置比较关键,因为是同一个机器多个es节点 

    cluster.name: "nova_es"
    #子节点名称
    node.name: node1_sha
    #不作为master节点
    node.master: false
    node.data: false
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    network.bind_host: 0.0.0.0
    network.publish_host: 15.15.181.147
    network.host: 15.15.181.147
    http.port: 9201
    transport.tcp.port: 9301
    #设置master地址
    discovery.zen.ping.unicast.hosts: ["15.99.72.164:9300","15.15.181.147:9300"]

    然后执行

    docker run -d --name es5_6_13node1sha -p 9201:9201 -p 9301:9301 --privileged=true -v /usr/local/elasticsearch2/conf/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/elasticsearch2/data:/usr/share/elasticsearch/data elasticsearch:5.6.13 

    再在147上先装第2个节点    mkdir -p /usr/local/elasticsearch3/conf

    touch es3.yml

    加入如下配置内容,注意红色的配置比较关键,因为是同一个机器多个es节点 

    cluster.name: "nova_es"
    #子节点名称
    node.name: node2_sha
    #不作为master节点
    node.master: false
    node.data: false
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    network.bind_host: 0.0.0.0
    network.publish_host: 15.15.181.147
    network.host: 15.15.181.147
    http.port: 9202
    transport.tcp.port: 9302
    #设置master地址
    discovery.zen.ping.unicast.hosts: ["15.99.72.164:9300","15.15.181.147:9300"]

    然后执行

    docker run -d --name es5_6_13node2sha -p 9202:9202 -p 9302:9302 --privileged=true -v /usr/local/elasticsearch3/conf/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/elasticsearch3/data:/usr/share/elasticsearch/data elasticsearch:5.6.13 

    配置完后通过head查看各个节点情况,可以看到我现在是把147上海的1个master和2个普通node都配置的node.data: false   所以sha的3个node都没有分配分片,也就不会影响重庆服务器的查询es性能

     二,模拟重庆停电的情况,把分片都切换到上海的147节点来。

    1,先把147的3个node的node.data: true  配置完成,然后分别docker restart 上海的master和2个普通node



  • 相关阅读:
    createjs 利用createjs 写拼图功能
    canvas 利用canvas中的globalCompositeOperation 绘制刮奖 效果
    git 命令
    cmd 打开gitshell
    Grunt完成对LESS实时编译
    nodejs gulp less编辑
    canvas 绘制 矩形 圆形
    canvas绘制时钟
    juqery easyui
    vue-router(第2节课,妙味课堂)
  • 原文地址:https://www.cnblogs.com/xiaohanlin/p/12092886.html
Copyright © 2011-2022 走看看