Slide 1

Slide 1 text

Amazon ES に移行をしたら 幸せになれるのか? 2017.09.11 CA.io @kakakakakku

Slide 2

Slide 2 text

吉田 慶章 @kakakakakku - プレゼン芸人 - 7/05 : AWS Solution Days 2017 登壇 - 7/21 : JAWS-UG コンテナ支部 登壇 - 8/27 : July Tech Festa 2017 登壇 - 9/08 : CROSS 2017 登壇 - 9/11 : CA.io 登壇 - 9/16 : XP 祭り 2017 登壇 \喋りすぎ/ 今日ココ →

Slide 3

Slide 3 text

僕はマッチングサービスに関係ないです → プレゼン芸人枠

Slide 4

Slide 4 text

さて

Slide 5

Slide 5 text

EC2 で運用されていた とある Elasticsearch を 最近 Amazon ES に移行してみた

Slide 6

Slide 6 text

つらかった

Slide 7

Slide 7 text

移行をして 幸せになれたのかな?

Slide 8

Slide 8 text

まず, 移行前の状況をザックリと

Slide 9

Slide 9 text

総ドキュメント数 3億 調べてみたら, 2億ドキュメントは不要だった

Slide 10

Slide 10 text

総インデックス数 1200 3年間以上も永続化している

Slide 11

Slide 11 text

バージョン Elasticsearch 1.4 比較的古め

Slide 12

Slide 12 text

構成 非クラスタ1台 つらい

Slide 13

Slide 13 text

open_file_descriptors ぐんぐん成長 そろそろ “too many open files” 出そう

Slide 14

Slide 14 text

Amazon ES \救世主?/

Slide 15

Slide 15 text

m3.xlarge 移行前

Slide 16

Slide 16 text

データノード c4.large x 5台 専用マスターノード c3.medium x 3台 Amazon ES 移行後

Slide 17

Slide 17 text

データノード c4.large x 5台 専用マスターノード c3.medium x 3台 Amazon ES 移行後 \圧倒的成長/

Slide 18

Slide 18 text

ハマりポイントなどを紹介

Slide 19

Slide 19 text

スプリットブレインの問題を考慮して 専用マスターノードは3台にする (AWS は奇数台数を推奨している) https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/ developerguide/es-createupdatedomains.html

Slide 20

Slide 20 text

単純に, コスト3倍

Slide 21

Slide 21 text

試しに専用マスターノードを t2.small にして リロケーションをしてみたら

Slide 22

Slide 22 text

\ クラスタ死亡 / 本当に何もできなくなって サポートにクラスタを削除してもらった 専用マスターノードだとしても, t2 は控えましょう

Slide 23

Slide 23 text

次に

Slide 24

Slide 24 text

シャード数 インデックスサイズが 30GB 以下なら シャード数を 1 にする ( デフォルト設定は 5 ) デフォルトのまま 運用してませんか?

Slide 25

Slide 25 text

https://aws.amazon.com/jp/blogs/news/get-started-with-amazon- elasticsearch-service-how-many-shards-do-i-need/

Slide 26

Slide 26 text

アプリケーション側も苦労した

Slide 27

Slide 27 text

Elastica v3.1.1 以降なら AwsAuthV4 トランスポート 対応 https://github.com/ruflin/Elastica \PHP Client/

Slide 28

Slide 28 text

AwsAuthV4 「IAM Role + 署名付きリクエスト」 アプリケーション側に実装が必要だった Amazon ES App

Slide 29

Slide 29 text

Amazon ES のダメな点 \良い点もたくさんあるけど/

Slide 30

Slide 30 text

- VPC 内に配置できない - リロケーション (クラスタ再構成) が遅すぎる - リロケーションに失敗すると, サクッと死亡する - 自動スナップショットからリストアできない - サポートに依頼する必要がある - 札束で殴るしかない - まだまだ他にも...

Slide 31

Slide 31 text

まとめ

Slide 32

Slide 32 text

Amazon ES に移行をして 幸せにはならなかったけど 安定稼働したから良しとする (EC2 のままスケールさせても良かったかも)

Slide 33

Slide 33 text

移行フローで苦労した話などは また別途どこかで話せればと! Elasticsearch on EC2 → Amazon ES

Slide 34

Slide 34 text

http://kakakakakku.hatenablog.com/entry/2016/12/20/000612 運用面のコツは去年まとめた資料参照で!