単一サーバーに複数のElasticssearchノードをインストールする方法

Elasticsearchは、オープンソースで、広く配布可能で、容易にスケーラブルなエンタープライズグレードの検索エンジンであり、大規模で精巧なAPIを介してアクセスできます。 データ検出アプリケーションをサポートする非常に高速な検索を強化し、「従来の」全文検索、分析ストア、オートコンプリート、スペルチェッカー、アラートエンジン、汎用ドキュメントストアなどのさまざまなユースケースに使用できます。 。 分析ワークロードは、物事を数え、ビッグデータでさえある可能性のある大量のデータを要約する傾向があります。 これは、スペルミスに寛容なあいまい検索に使用できます。 あいまい検索はCPUに負荷がかかるため、検索の変更と改善を現実的な量のデータでテストしてから本番環境に送信することが常に重要です。したがって、すべてのフィールドに追加するのではなく、注意して追加する必要があります。 Elasticsearchは、オートコンプリートとインスタント検索にも役立ちます。 ユーザータイプがさまざまな形で表示される場合の検索は、既存のタグの単純な提案、検索履歴に基づいて検索を予測しようとする、またはすべての抑制されたキーストロークに対してまったく新しい検索を実行するなどです。 Elasticsearchには、match_phrase_prefix、プレフィックスクエリ、インデックスグラム、さまざまなサジェスタのファミリなど、これらの機能の構築を支援するさまざまな機能があります。

この記事では、単一のCentOS7サーバーに複数のElasticsearchノードをインストールする方法について説明します。

ただし、他のLinuxディストリビューションで実行するのと同様の手順を使用できます。

前提条件

単一のサーバーに複数のElasticsearchノードをインストールして構成するというこのタスクを実行するには、rootユーザーの資格情報を使用してサーバーにアクセスする必要があります。CentOS6またはCentOS 7は、環境に使用するサーバーに関係ありません。 サーバーに接続して、最初に非ルートの一般ユーザーを作成しましょう。

#ssh root@server_ip

1)新しいユーザーの追加

rootユーザーを使用してログインした後、以下のコマンドを使用して、インストール中に使用する新しい汎用ユーザーを作成します。

# adduser elasticsearch
Changing password for user elasticsearch.
New password:****
Retype new password: ****
passwd: all authentication tokens updated successfully.

新しいユーザーを「wheel」グループに追加して、 sudo 特権。

# usermod -aG wheel elasticsearch

2)システムアップデート

次に、CentOS 7サーバーで以下のコマンドを使用して、アップデートとセキュリティパッチでシステムをアップデートします。

# yum update -y

システムに前提条件の準備ができたら、システムにJavaバージョン8をインストールするための次のステップに進みます。

3)Java(JVM)バージョン8のインストール

Elasticsearchは、実行するために少なくともJava8を必要とするJavaを使用して構築されています。 OracleのJavaとOpenJDKのみがサポートされています。 すべてのElasticsearchノードとクライアントで同じJVMバージョンを使用する必要があります。 したがって、Javaバージョン1.8.0_121以降をインストールすることをお勧めします。インストールしないと、他のバージョンのJavaが使用されている場合、Elasticsearchは起動を拒否します。

必要なバージョンのJAVAをインストールするには、以下のコマンドを使用できます。

$sudo yum install java-1.8.0-openjdk.x86_64

インストールが完了したら、以下のコマンドを実行して、インストールされているJavaのバージョンを確認します。

$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Elasticsearchが使用するJavaのバージョンは、「JAVA_HOME」環境変数を設定することで構成できます。 前提条件が完了したら、ネットセッションに移動して、ノードをダウンロード、インストール、および構成します。

Elasticsearchをダウンロードする方法

Elasticsearchは複数のパッケージ形式で提供されますが、「zip」および「tar.gz」パッケージはどのシステムへのインストールにも適しています。これは、Elasticsearchを使い始めるための最も簡単な選択です。 ‘rpm’パッケージは、Red Hat、Centos、SLES、OpenSuSE、およびその他のRPMベースのシステムへのインストールに適しています。 Elasticsearch Webサイトから、または「wget」コマンドを使用してRPMリポジトリからダウンロードできます。

CentOS7にインストールする2つの異なるバージョンのElastisearchパッケージをダウンロードしてみましょう。

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.1.tar.gz

これで、2つの異なるバージョンのElasticsearchパッケージをインストールできるようになりました。 アーカイブを抽出し、抽出したフォルダーに移動して、パッケージをコンパイルおよびインストールします。

$ tar -zxf elasticsearch-5.0.1.tar.gz
$ tar -zxf elasticsearch-5.2.2.tar.gz

Elasticsearchの最初のノードを構成します

次に、最初にインストールするElasticsearchの最新バージョンから始めます。 ‘config’ディレクトリに配置されたコマンドラインエディタを使用して、デフォルトの設定ファイルを開きましょう。

$ vim elasticsearch-5.2.2/config/elasticsearch.yml

‘i’を押して挿入モードに切り替え、ファイルに次の構成パラメーターを挿入します。

cluster.name: elastic_cluster1
node.name: node-1
node.master: true
node.data: true
transport.host: localhost
transport.tcp.port: 9300
http.port: 9200
network.host: 0.0.0.0

ここで、http.portとtransport.portはデフォルト構成で指定されていません。ESは、起動時に次に使用可能なポートを選択しようとします。HTTPの場合は9200、内部トランスポートの場合は9300です。 保存してみましょう close ‘:wq!’を使用した構成ファイル次に、セカンダリノードを構成します。

セカンダリノードを構成する

セカンダリノードを構成するには、アーカイブのデフォルトの場所にある同じ構成ファイルを開き、エディターを使用して次の内容を挿入します。

$ vim elasticsearch-5.0.1/config/elasticsearch.yml
cluster.name: elastic_cluster1
node.name: node-2
#node.master: true
node.data: true
transport.host: localhost
transport.tcp.port: 9302
http.port: 9202
network.host: 0.0.0.0

Save と close ファイルを作成し、次のセクションに移動してサービスを開始します。

Elasticsearchサービスを開始する方法

Elasticsearchの両方のノードを異なるバージョンで構成したので、CentOS7サーバーでバイナリスクリプトを実行して両方を起動する必要があります。

$ cd elasticsearch-5.2.2
$ bin/elasticsearch -d

これにより、elasticsearchプロセスがバックグラウンドで開始されます。 次に、ディレクトリをelasticsearchのセカンダリノードに変更し、同じコマンドを実行します。

$ cd elasticsearch-5.0.1
$ bin/elasticsearch -d

これで、リスニングポートのステータスをチェックして、両方のノードが構成に記載されている特定のポートで実行されていることを確認できます。

$ netstat -tlnp
$ ps -ef | grep elastic

次のコマンドを使用して、サービスが正常に開始されたことを確認することもできます。

$ curl -X GET 'https://localhost:9200'
{
  "name" : "node-1",
  "cluster_name" : "elastic_cluster1",
  "cluster_uuid" : "yrMHCKfJS2msgvQj-HWkag",
  "version" : {
    "number" : "5.2.2",
    "build_hash" : "f9d9b74",
    "build_date" : "2017-02-24T17:26:45.835Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.1"
  },
  "tagline" : "You Know, for Search"
}

同様に、ポート ‘9202’で実行されているセカンダリノードの場合は、以下のコマンドを使用します。

$ curl -X GET 'https://localhost:9202'
{
  "name" : "node-2",
  "cluster_name" : "elastic_cluster1",
  "cluster_uuid" : "I4Xk5Yr3RTuyp0Q0IsmxNQ",
  "version" : {
    "number" : "5.0.1",
    "build_hash" : "080bb47",
    "build_date" : "2016-11-11T22:08:49.812Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.1"
  },
  "tagline" : "You Know, for Search"
}

結論

それでおしまい。 この記事では、単一のCentOS7サーバーに複数のelasticsearchノードをインストールする方法について学習しました。 これで、Logstashのさまざまな構成、一部の分析の使用、大規模なインデックスでのユーザー向け検索の強化、および多くの内部アプリケーションでElasticsearchを使用できます。 大きなヒープを持つJVMの管理は、ガベージコレクションの実行時間のために恐ろしいビジネスです。 ヒープダンプのキャプチャと分析が簡単になるため、ヒープをさらに小さくすることをお勧めします。 Luceneの最適なパフォーマンスを得るには、インデックスファイルのOSファイルキャッシングに十分なRAMを使用できるようにすることも重要です。 小さなヒープで単一のノードを実行すると、CPUとRAMの両方が無駄になります。