M'}ITインフラのことを中心に技術の情報を発信していきます。techDockerを使用した複数ホストでのElasticsearchクラスタの構築検証やってみたTwitterFacebookはてブPocketLINEコピー2022.04.30※こちらの記事は2017年にQiitaに投稿した記事を再編集したものですElasticsearchは公式でコンテナイメージを提供してくれているのでそれを利用してクラスタを組みたいと思います。ドキュメントにはdocker-compose.ymlも公開されていますが、docker-composeということはコンテナホストはひとつになるから可用性的にNGだなー、と感じました。modeとか使うと解決できるのかな?)コンテナホストは複数台に分散したいと考えたので、検証してみました。各コンテナホストに公式のコンテナイメージをデプロイDockerのネットワークドライバはhostモードを利用する検証手順コンテナホストの準備コンテナホストの作成VirtualBox上にコンテナホストを3つ起動します。elasticsearch3コンテナホストのメモリマップ上限の引き上げ公式にも書いてある通り、設定しないとコンテナが起動しない(開発者モードなら起動するかも)ので設定します。vm.max_map_count=262144Elaticsearchの起動〜動作確認Elasticsearchコンテナの起動Elasticが独自に公開しているコンテナレジストリよりイメージを取得して起動します。環境変数(-e)でパラメータを渡すとElasticsearchの設定を上書きできるのでいきなり起動できます。検証で渡したパラメータは以下の通り。hostモードでコンテナを起動するとホストのNICが全部マッピングされますが、このオプションを指定しないとElasticsearchはeth0のIPアドレスをデフォルトで指定するようです。eth0のIPアドレスはプライベートなIPアドレスが割り当てられていて外部と通信できないのでeth1を明示しています。クラスタに参加させるホストを明示します。ノード数/2+1を設定するようドキュメントにも記載されているので従います。今回の検証には不要なのでX-PackのSecurityを無効化します。今回の検証には不要なのでX-PackのMonitoringを無効化します。今回の検証には不要なのでX-PackのWatcherを無効化します。今回の検証には不要なのでX-PackのGraphを無効化します。Learningを無効化します。Elasticsearchが使用するjavaのヒープサイズを指定します。コンテナホストのメモリを増やすという方法もありますが、3台も2GB以上のホストを起動したらこのMacがゲロ重になるのでこうしました。デタッチドモードでコンテナを起動。コンテナのネットワークモードをhostに設定します。コンテナホストのネットワークインターフェースがそのままコンテナ上でも利用されます。Elasticsearchのサービスポートを公開します。-P(大文字)でもよかったかも。Elasticsearchがノード間のコミュニケーションで使用するポートを公開します。-P(大文字)でもよかったかも。docker.elastic.co/elasticsearch/elasticsearch:5.4.0Clusterのステータスを確認する3台起動したのでクラスタのステータスを確認してみます。100.0}以下の点が確認できればよいと思います。statusがgreenノードの数が3データノードの数が3インデックスを作って確認してみるクラスタが組めてそうなのでインデックスを作ってみます。true}クラスタなので、どのIPアドレスに問い合わせても上記で作成したインデックスができていれば問題ないでしょう。650b1台目はできてます。ここはインデックスを作ったときに指定したホストなので当然ですね。650b2台目でもできてますね。650b3台目にもありました。まとめ以上で複数ホストにまたがった可用性のあるElasticsearchクラスタをコンテナで起動することができました。このあとはcloud-awsプラグインを使用してEC2上にデプロイする方法などを検証してみようかなーと思っています。ServiceはVPCに対応してないのが残念ですよね。お気づきの点とかあれば優しくご指摘頂ければと思います。Athenaを早速(?)使ってみました。CloudFormationでS3からAutoScalingGroupにデプロイする定義をしてみます。bashのワンライナーで強引にbulkインポート用のフォーマットに書き換えちゃいます。同じブリッジ・ネットワークにコンテナを立ち上げるためのdocker-compose.ymlを定義します。新しくこちらの記事を書きましたのでそちらを参照することをオススメします。したモニタリングだったらCloudWatchでも十分。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。r.children[i]}}}}}();タイトルとURLをコピーしました。