Elasticsearch運維実戦の1--クラスタ計画

4380 ワード

本番環境で使用できるelasticsearchクラスタを計画します.
クラスタノード分割
クラスタ全体のノードには、次の3つの主要なタイプがあります.
  • Master nodes--クラスタの状態を維持し、indexデータを保存しない.ハードウェアの要求:一般的な機械でいい.esプロセスに16 gのメモリ
  • を割り当てる.
  • Data Nodes--indexのデータだけを保存し、Master nodesハードウェアの要求に選ばれない:構成要求が高ければ高いほど、大きなハードディスクを使用し、SSDハードディスク
  • にアクセスできる条件がある.
  • Client Nodes--主に負荷等化に用いられ、Master nodeに選ばれず、indexデータハードウェアの要求も保存されない:24コアCPU、64 Gメモリまたはそれ以上の
  • 1つの合理的なクラスタは3つのmaster nodes,1から複数のdata nodes,少なくとも1つのclient nodeを含むべきである.
    インストールと構成
    汎用構成、centosを例にrpmインストールパッケージを使用
    sudo rpm -ivh elasticsearch-version.rpm
    sudo chkconfig --add elasticsearch

    修正/etc/sysconfig/elasticsearch、修正ES_HEAP_SIZEとJAVA_OPTSの内容は、elasticsearchが推奨する最大メモリは32 Gで、
    ES_HEAP_SIZE=32g
    JAVA_OPTS="-Xms32g"

    変更/etc/security/limits.conf、以下の内容を追加
    * hard memlock unlimited
    * soft memlock unlimited

    /etc/elasticsearch/elasticsearch.ymlコンテンツ構成
  • masterノード
  • node.master: true
    node.data: false
    discovery.zen.ping.unicast.hosts: ["master1","master2","master3"]
    network.host: ${HOSTNAME}
  • dataノード
  • node.master: false
    node.data: true
    discovery.zen.ping.unicast.hosts: ["master1","master2","master3"]
    network.host: ${HOSTNAME}

    elasticsearchに複数のハードディスクを構成している場合は、DATA_を変更できます.DIRの値は、複数のディレクトリがカンマ(,)で区切られている
  • クライアントノード
  • node.master: false
    node.data: false
    discovery.zen.ping.unicast.hosts: ["master1","master2","master3"]
    network.host: ${HOSTNAME}

    elasticsearchの起動
    sudo service elasticsearch start

    注意が必要なのはelasticsearchがcentosでservice elasticsearch restartを使うと効果が得られない場合があり、別々にやる必要があることです
    sudo kill -9 `pgrep -f elasticsearch`
    sudo service elasticsearch start

    nginx逆エージェント
    クラスタに対するクエリーの内容を記録するには、nginxを逆エージェントとして使用することを推奨し、nginxはclient nodeにインストールされ、conf.d/default.confの最も簡単な構成は以下の通りです.
    upstream elasticsearch {
            server 127.0.0.1:9200;
    }
    
    server {
        gzip on;
        access_log /var/log/nginx/access.log combined;
        listen       80 default_server;
    
        server_name  _;
    
        #charset koi8-r;
    
        #access_log  logs/host.access.log  main;
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
    
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass      http://elasticsearch;
        }
    
       error_page  404              /404.html;
        location = /404.html {
            root   /usr/share/nginx/html;
        }
    
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }

    プラグインのインストール
    以下のプラグインのインストールを推奨します.
  • kopf互換es 1.x, 2.x

  • kopf
    ./elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf/{branch|version}
  • head互換es 1.x
  • bigdesk互換es 1.x