对Elasticsearch分布式处理性能验证的探索(2): 在Amazon EC2上构建一个集群

首先

系列的目录

    • Part1: ベンチマークツールRallyを使ってみる

Part2(今回): Amzon EC2にクラスタを構築する

Part3: ノード数/シャード数による性能比較

Part4: レプリカ数による性能比較

之前我们结束了Part1,而今天我们要介绍Part2,即“在Amazon EC2上搭建集群”。
为了进行性能验证,我们将在Amazon EC2上构建一个Elasticsearch集群环境。

Elasticsearch集群配置的复习

image.png

验证环境

Amazon EC2

インスタンス数: 2台
インスタンスタイプ: t3.medium

CPU: 2コア
メモリ: 4GB
ストレージ: 8GiB, gp2

OSイメージ

Amazon Linux 2 Kernel 5.10 AMI 2.0.20230119.1 x86_64 HVM gp2

Elasticsearchクラスタ

ノード数: 2

今回は性能比較が目的ですので、2ノードクラスタを使用します

注意: 2ノードクラスタは耐障害性に乏しく、本番環境で使用すべきではありません

Elastic社のマニュアルで2ノードクラスタへの見解

构建Elasticsearch集群的步骤

在node1上,以管理员权限进行以下操作

防火墙设置

firewalldをインストール

$ sudo yum install firewalld
$ sudo systemctl enable firewalld.service
$ sudo systemctl start firewalld.service
    ノード間通信を可能にするため、ポート9200、9300へのアクセス許可
$ sudo firewall-cmd --add-port={9200,9300}/tcp --zone=public --permanent
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-port
9200/tcp 9300/tcp

将两个节点的IP地址添加到/etc/hosts文件中。

172.31.6.170 node1
172.31.1.200 node2

安装Elasticsearch

    ElasticsearchリポジトリのGPG keyをインポート
$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    rpm repositoryを登録
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
    RPMパッケージをインストール
$ sudo yum check-update --enablerepo=elasticsearch
$ sudo yum install elasticsearch --enablerepo=elasticsearch -y

将Elasticsearch作为服务启用

$ sudo systemctl enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.

编辑Elasticsearch的配置文件。

请在/etc/elasticsearch/elasticsearch.yml文件中设置并保存以下项目。

    • クラスタ名

cluster.name: mycluster

クラスタ参加ノード

discovery.seed_hosts: [“node1”, “node2”]

Elasticsearchサービスに他のノードからアクセス可能に

network.host: 0.0.0.0

index自動作成設定を最終行に追加

action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

启动Elasticsearch并重置elastic用户的密码

    Elasticsearchを起動
$ sudo systemctl start elasticsearch
    elasticユーザーのパスワードをリセット
$ sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
This tool will reset the password of the [elastic] user.
You will be prompted to enter the password.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Re-enter password for [elastic]:
Password for the [elastic] user successfully reset.
    Elasticsearchにhttpsアクセスし、ステータス確認
$ sudo curl -k -u elastic https://localhost:9200
Enter host password for user 'elastic':
{
"name" : "ip-172-31-6-170.ec2.internal",
"cluster_name" : "mycluster",
"cluster_uuid" : "8KWJ-DEsQnyN9ynLU4oZHw",
"version" : {
"number" : "8.6.1",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "180c9830da956993e59e2cd70eb32b5e383ea42c",
"build_date" : "2023-01-24T21:35:11.506992272Z",
"build_snapshot" : false,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}

创建一个用于向仅包含node1的集群注册其他节点的令牌。

$ sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

eyJ2ZXI...(中略)...cifQ==

保留已创建的注册令牌。

在node2上,以管理员权限执行以下操作。

设定防火墙

firewalldをインストール

$ sudo yum install firewalld
$ sudo systemctl enable firewalld.service
$ sudo systemctl start firewalld.service
    ノード間通信を可能にするため、ポート9200、9300へのアクセス許可
$ sudo firewall-cmd --add-port={9200,9300}/tcp --zone=public --permanent
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-port
9200/tcp 9300/tcp

在/etc/hosts文件中添加了两个节点的IP地址。

172.31.6.170 node1
172.31.1.200 node2

安装Elasticsearch。

    EslasticsearchリポジトリのGPG keyをインポート
$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    rpm repositoryを登録
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
    RPMパッケージをインストール
$ sudo yum check-update --enablerepo=elasticsearch
$ sudo yum install elasticsearch --enablerepo=elasticsearch -y

将Elasticsearch作为服务启用

$ sudo systemctl enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.

使用通过node1创建的注册令牌,将node2注册到集群中。

$ sudo /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token eyJ2ZXI...(中略)...cifQ==

This node will be reconfigured to join an existing cluster, using the enrollment token that you provided.
This operation will overwrite the existing configuration. Specifically:
  - Security auto configuration will be removed from elasticsearch.yml
  - The [certs] config directory will be removed
  - Security auto configuration related secure settings will be removed from the elasticsearch.keystore
Do you want to continue with the reconfiguration process [y/N]y

编辑Elasticsearch的配置文件

将以下内容保存至/etc/elasticsearch/elasticsearch.yml文件中:

    • クラスタ名

cluster.name: mycluster

Elasticsearchサービスに他のノードからアクセス可能に

network.host: 0.0.0.0

index自動作成設定を最終行に追加

action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

启动Elasticsearch

$ sudo systemctl start elasticsearch
    Elasticsearchへhttpsアクセスし、ステータス確認
$ curl -k -u elastic https://localhost:9200
Enter host password for user 'elastic':
{
"name" : "ip-172-31-1-200.ec2.internal",
"cluster_name" : "mycluster",
"cluster_uuid" : "8KWJ-DEsQnyN9ynLU4oZHw",
"version" : {
"number" : "8.6.1",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "180c9830da956993e59e2cd70eb32b5e383ea42c",
"build_date" : "2023-01-24T21:35:11.506992272Z",
"build_snapshot" : false,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}

在任一节点上,检查集群的状态。

$ sudo curl -k -u elastic https://localhost:9200/_cat/nodes?v
Enter host password for user 'elastic':
ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
172.31.1.200           24          96  21    0.53    0.29     0.12 cdfhilmrstw -      ip-172-31-1-200.ec2.internal
172.31.6.170           51          95   5    0.11    0.11     0.08 cdfhilmrstw *      ip-172-31-6-170.ec2.internal

在集群中存在两个节点,其中node1成为了主节点。

结尾

为了进行性能验证,我们在Amzon EC2上构建了一个包含两个节点的Elasticsearch集群。
下一步将使用基准测试工具Rally进行性能测量。
敬请期待。

广告
将在 10 秒后关闭
bannerAds