Elasticsearchをサクッとスケールアウトさせてみた

スケールアップよりもスケールアウトの方が安い

よく使うIDCFクラウドだとこんな感じのラインナップなので、スケールアウトの方が安いパターンが結構あります。例えば、Elasticsearchなんかはほぼメモリだけなので純粋にメモリだけが欲しいです・・・!そんな時の話

f:id:kitahashi-ryoichi:20160403222624p:plain

 

5万記事の全文検索で1GBカツカツになった

もっと切り詰めれば省エネは出来るのですが、Elasticsearchにはシェーディングが標準で付いているので使わない手はありません。シェーディングは物理インデックスファイルを分散することが出来るのでメモリ枯渇をサーバー台数で解決できます。IDCFフロンティアだとメモリ1GBのサーバーが月額500円の激安価格なのでオススメ

 

Elasticsearchのメモリ枯渇したら考える事

  1. スケールアップする(金持ちの選択肢、楽)
  2. スケールアウトする(パンピーエンジニアの選択肢)
  3. そもそも省エネする(一番コストかかる)

 

1.適当にテンプレ取るなりしてもう1台立てます

AWSとかそれぞれのクラウドサービスでオンライン・バックアップ取って適当にデプロイすればElasticsearchのコピーできるのでやってください。ぶっちゃけインストールも一瞬なので、新しく作っちゃっていいです。

 

tatase.hatenadiary.jp

 

2.クラスタリング名を合わせる

Elasticsearchはcluster.nameを合わせれば勝手にクラスタリングするイケてる仕様なので、デフォルトだと特にいじらなくていいです。いじってれば変更してください。

 

3.ノード設定する

デフォルトの設定でOKなので、index.number_of_shardsとreplicasだけいじればいいと思います。shardsは奇数だと均等にならないので偶数に変更しました。レプリケーションはなしなので0に変更しています。

node.master: true

node.data: true

index.number_of_shards: 10

index.number_of_replicas: 0

 

4.service elasticsearch restart

elasticsearchを再起動すれば、あら不思議!

もうスケールアウトできちゃいましたー。