Elastic Cloud Enterprise で独自ドメインを利用する

おはようございます、藤本です。

Elastic Cloud Enterprise 機能を一つ一つ試しています。Elastic Cloud Enterprise の概要について知りたい方は以下の記事をご参照ください。

今回は Elastic Cloud Enterprise からデプロイした Elasticsearch クラスタ、Kibanaに独自ドメインを利用してみました。

現在、アルファ版のため、GAリリースまでに実装が変わる可能性があることはご了承ください。

Elastic Cloud Enterprise と DNS

Enterprise Cloud Enterprise を利用する上で登場する DNS 名は WebUI へのアクセス、Elasticsearch(Kibana)へのアクセスの 2つです。

DNS-webui(1)

  • WebUI へのアクセス
    • Elastic Cloud Enterprise インストール時に設定したPublic Hostnameが利用される
    • インストール時に表示される URL にPublic Hostnameが表示されますが、ホスト名の利用が必須ではない
  • Elasticsearch クラスタへのアクセス
    • Elasticsearch クラスタ時に Elastic Cloud Enterprise が払い出される
    • 払い出された DNS 名が Proxy に登録され、Proxy が Allocator で動作する Elasticsearch コンテナへのアクセスをコントロールする
    • デフォルトでは、前回のエントリに記載しているような DNS 名(下記キャプチャ参照)

screenshot_2017-01-09_11_30_31

b3382af99309425bbfbbd2f71ee9e651.172.31.44.80.xip.io
  • b3382af99309425bbfbbd2f71ee9e651 : Elasticsearch クラスタ固有のホスト名
  • 172.31.44.80 : Elastic Cloud Enterprise インストール時に設定したHost IP
  • xip.io : 固定値

172.31.44.80.xip.ioが Elasticsearch クラスタ共通のドメインとなり、Elastic Cloud Enterprise の設定で変更することができます。自身の環境で利用する場合、名前解決できるようにまず間違いなく、自身の環境が持つドメインに変更することでしょう。

個人的にはサブドメイン(例:ece.example.com)を Elastic Cloud Enterprise のドメインに設定し、(AWS 環境であれば)ワイルドカードのレコード(例:*.ece.exaple.com)を Proxy の ELB の DNS 名(ALIASのAレコード)を登録するのがいいのかなと思っています。

DNS-sample

変更してみる

それでは WebUI から Elasticsearch Cloud Enterprise のドメイン設定を変更してみます。

環境

  • EC2 x 3台(3AZ)
    • インスタンスタイプ : r4.large
    • OS : Ubuntu 14.04
  • ELB
    • Elasticsearch、Kibana クラスタ用インターナル ELB
  • Route 53
    • プライベートホステッドゾーン example.com
    • レコードセット *.ece.example.com → ELB

独自ドメインを設定する

Webブラウザを立ち上げて、Elastic Cloud Enterprise の WebUI へアクセスします。左メニューの Platform からリージョンを選択します。

Regions_–_Elastic_Cloud

Settings を選択します。Cluster endpoints が利用するドメインの設定となります。前述した通り、IPaddress.xip.ioで設定されています。

Settings_–_Elastic_Cloud

ここを今回利用する独自ドメインece.exapmle.comに設定します。ece.exapmle.comを入力したら、Update Cluster endpoints をクリックします。

Settings_–_Elastic_Cloud 2

Confirm save をクリックします。

Settings_–_Elastic_Cloud 3

設定はこれだけです。

動作確認

Elasticsearch

Elasticsearch クラスタの設定を見てみましょう。左メニューの Clusters から Elasticsearch クラスタを選択します。

Clusters_–_Elastic_Cloud

Endpoints から Elasticsearch から確認すると、クラスタ固有のランダム文字列、プラス設定したece.example.comになっていますね。

screenshot_2017-01-14_19_50_32 2

ちなみに変更前は以下の URL でした。変わるのは、設定したドメインの部分だけで、クラスタ固有のランダム文字列は変わりません。

screenshot_2017-01-14_19_51_55

それではアクセスしてみます。

$ curl -u elastic:MhJxf0cUhPcBaRlFFLocUw== c15b10071b614956979558254aaa71d7.ece.example.com:9200/
{
  "name" : "instance-0000000001",
  "cluster_name" : "c15b10071b614956979558254aaa71d7",
  "cluster_uuid" : "GtP-Vwn8TkGE06QuTPRh6w",
  "version" : {
    "number" : "5.0.2",
    "build_hash" : "f6b4951",
    "build_date" : "2016-11-24T10:07:18.101Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.1"
  },
  "tagline" : "You Know, for Search"
}

ちなみに古いドメインでも接続できました。仕様なのかな?

$ curl -u elastic:MhJxf0cUhPcBaRlFFLocUw== c15b10071b614956979558254aaa71d7.172.31.62.168.xip.io:9200/
{
  "name" : "instance-0000000002",
  "cluster_name" : "c15b10071b614956979558254aaa71d7",
  "cluster_uuid" : "GtP-Vwn8TkGE06QuTPRh6w",
  "version" : {
    "number" : "5.0.2",
    "build_hash" : "f6b4951",
    "build_date" : "2016-11-24T10:07:18.101Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.1"
  },
  "tagline" : "You Know, for Search"
}

Kibana

続いて、Kibana にアクセスしてみましょう。

Endpoints の Kibana から確認すると、こちらも設定したece.example.comドメインになっています。

screenshot_2017-01-14_19_51_00

アクセスしてみます。Kibana(X−Pack)のログイン画面が表示されました。

Kibana

証明書を登録していないので証明書エラーが出ますが今回はそのまま突破しています。

まとめ

いかがでしたでしょうか?

Elastic Cloud Enterprise はほぼ例外なく独自ドメインで利用することになると思うので、この設定は必須の設定となることでしょう。