在10分钟内启动Elasticsearch集群- Google Compute Engine入门
首先
这是 Elasticsearch Advent Calendar 的第九天的文章。
我们将介绍使用 Google Compute Engine (GCE) 来快速构建分布式环境以启动 Elasticsearch 集群的步骤。GCE 提供“有效期为 60 天,价值 300 美元的信用额度”供新注册用户使用,所以如果您尚未注册,请趁此机会试一试。
目标读者
-
- Elasticsearch のセットアップをしたことがある
-
- Elasticsearch クラスタを作ったり壊したりして気軽に遊びたい
-
- ローカル PC の中で VM を何台も立ち上げるのはツライ
- Google Compute Engine なにそれおいしいの?
谷歌计算引擎是什么?
在Google Cloud Platform中,有一个服务可以为用户提供与Google使用的基础设施相同的基础设施,类似于Amazon EC2可以轻松地创建和删除虚拟机。
请参考以下文章了解AWS和EC2的区别。
Yoshizumi’s Blog:选择Google计算引擎而不是AWS的10个理由
我本身在AWS的使用经验仅限于教程水平,但相比AWS,GCE的用户界面非常简单。尽管目前只有英文文档,但我印象中很容易上手。
用语 – 术语 / 语言
这里简要介绍即将出现的术语。
-
- インスタンス (Instance)
GCE で動く仮想マシン。OS イメージやディスク、ネットワーク等を設定して作成する。使い終わったら削除する(インスタンスが生存していると課金対象となる)
インスタンステンプレート (Instance Template)
インスタンス(グループ)を生成するひな形の設定
インスタンスグループ (Instance Group)
インスタンステンプレートを元に任意の個数のインスタンスを一括管理(作成、削除)する
タグ
ファイアウォールのルールをインスタンスに適用するための名前。ルールにタグ名を割り当て、インスタンスにそのタグを付与することで、ファイアウォールの設定(開放するポート)を適用することができる
コンソール (Console)
GCE を含む Google Cloud Platform の Web UI
プロジェクト (Project)
関連するインスタンスやネットワーク設定を入れておく入れ物
建筑的过程
-
- 创建项目
-
- 创建防火墙规则
-
- 创建实例模板
-
- 创建实例组
- 检查 Elasticsearch-head
创建项目
一旦GCE的注册完成后,应该会显示如下所示的项目管理界面。由于初始状态可能为空,所以让我们点击“创建项目”按钮来创建项目吧。项目ID将在API和SDK操作时使用,所以应该选择一个易于理解的值。但是,项目ID必须是在全体用户和所有项目之间唯一的字符串。在这里,我们选择了默认提供的字符串。
-
- プロジェクト名: elasticsearch
プロジェクトID: linen-setting-788

添加防火墙规则
Elasticsearch服务默认在9200端口上等待访问。本次需要直接从全球网络访问GCE上的Elasticsearch,因此需要打开此端口。在GCE上,http(80端口)可以很容易地打开,但除此之外没有特别准备,因此首先需要添加防火墙设置。

在这里,您可以管理网络中可用的防火墙规则。名为” default-allow-http” 的规则允许从全局网络访问 tcp:80。规则还可以标记,并且该规则分配了” http-server” 标签。通过在实例上添加” http-server” 标签,可以将规则应用于该实例。
在这里,我们将创建以下规则。允许从全局网络访问 tcp:9200,并分配” elasticsearch-server” 标签。
-
- 名前
allow-elasticsearch
ソースIPの範囲
0.0.0.0/0
プロトコルとポート
tcp:9200
ターゲットタグ
elasticsearch-server

创建实例模板
接下来,我们将创建一个用于安装 Elasticsearch 实例的模板。
建議在創建模板之前,先按照”VM實例 -> 新的實例”的步驟生成一個實例,以得到更深入的理解。實例生成和模板創建兩者的設置項目幾乎是相同的,所以這樣做後也會提高對後續操作的理解程度。

以下是設定項目的清單。
-
- テンプレート名
elasticsearch-template-1
メタデータ(スタートアップスクリプト)
key: startup-script-url
value: https://gist.githubusercontent.com/tomoemon/4f1042f8fccf02efd52a/raw/gistfile1.sh
タグ(ファイアウォール)
elasticsearch-server
マシンタイプはお好みで
ブートイメージ
backports-debian-7 …
プロジェクトへのアクセス(権限)
計算処理:「読み取り/書き込み」

-
- 进行详细的显示。
-
- 指定模板的名称。
- 设置可以从实例内访问的元数据。在这里,我们通过 startup-script-url 指定在 gist 上的 elasticsearch 构建脚本作为特殊值(关于构建脚本的详细说明稍后)。将该 URL 内的文本解释为 shell 脚本,并在启动时执行。

-
- 我們將添加之前創建的防火牆設定。通過添加 elasticsearch-server 標籤,我們將開放 tcp:9200 端口。
-
- 您可以根據自己的喜好選擇機器類型。規格越高,單位時間的費用就越高,但免費配額不容易用完,所以選擇最高規格的機器也是一個不錯的選擇。
- 您可以選擇操作系統映像。您可以選擇 Ubuntu、CentOS 或 RHEL 等,但在這裡我們選擇 debian。

- 最后,为了让Elasticsearch在集群中发现节点,我们将授予从实例内获取项目信息的API权限。完成输入后,请点击“创建”按钮。
创建实例组。
只要到这一步,接下来只需要一次性创建实例。
打开实例组的管理界面吧。


设定项目为
-
- インスタンスグループの名前
-
- ゾーン(データセンターの場所)
日本に住んでいる場合は asia-east1-a 等アジアが良いでしょう
インスタンステンプレート
先ほど作成した elasticsearch-template-1 を選択します
インスタンスの数
大量に作りたいところですが、無料体験中はわりと厳しい上限があるので、3 インスタンス程度にしておきます
按下「创建」按钮后,将开始构建实例并执行启动脚本(安装 Elasticsearch)。
elasticsearch-head的中文翻译:弹性搜索头
生成实例组后,您将能够选择名为elasticsearch-group的组。请立即单击并查看组信息。

在画面的顶部显示了CPU使用率等图表,底部显示了组内实例的列表。选择一个合适的IP地址进行复制,然后在下面的URL中在浏览器中打开试试看。
使用中文改述:
請使用以下選項將其替換為中文:http://:9200/_plugin/head
假设大家都应该熟悉头文件已经打开了。
(如果没有打开,请点击IP地址右侧的SSH按钮,在实例内验证Elasticsearch是否正在运行)

以上是Elasticsearch集群的搭建完成。尽管数据还未加载,但接下来的内容我相信读者们会更加了解,因此交给你们自行处理。
关于启动脚本
初始脚本是一个大约30行的Shell脚本,前半部分是最基本的Elasticsearch设置,后半部分是GCE Cloud Plugin for Elasticsearch的发现设置(用于Elasticsearch节点的发现)。
插件安装步骤中要求设置项目ID和区域,但在这里我们通过API获取并设置了这两个值。由于可以在实例内部无需认证即可获取有关项目和实例的信息,因此在配置较简单的情况下,我们可以自动化设置。
结束了
这次我们介绍了Google Compute Engine,速度有点快。虽然周围可能还没有很多人在使用,但它很容易使用,所以请务必试一试。
当您变得熟悉后,可以尝试使用Google Cloud SDK进行更多自动化的挑战。
最后还有一件不可忘记的事情。

删除实例组后,让我们去睡觉吧。