Elasticsearchをサクッとスケールアウトさせてみた
- スケールアップよりもスケールアウトの方が安い
- 5万記事の全文検索で1GBカツカツになった
- 1.適当にテンプレ取るなりしてもう1台立てます
- 2.クラスタリング名を合わせる
- 3.ノード設定する
- 4.service elasticsearch restart
スケールアップよりもスケールアウトの方が安い
よく使うIDCFクラウドだとこんな感じのラインナップなので、スケールアウトの方が安いパターンが結構あります。例えば、Elasticsearchなんかはほぼメモリだけなので純粋にメモリだけが欲しいです・・・!そんな時の話
5万記事の全文検索で1GBカツカツになった
もっと切り詰めれば省エネは出来るのですが、Elasticsearchにはシェーディングが標準で付いているので使わない手はありません。シェーディングは物理インデックスファイルを分散することが出来るのでメモリ枯渇をサーバー台数で解決できます。IDCFフロンティアだとメモリ1GBのサーバーが月額500円の激安価格なのでオススメ
Elasticsearchのメモリ枯渇したら考える事
- スケールアップする(金持ちの選択肢、楽)
- スケールアウトする(パンピーエンジニアの選択肢)
- そもそも省エネする(一番コストかかる)
1.適当にテンプレ取るなりしてもう1台立てます
AWSとかそれぞれのクラウドサービスでオンライン・バックアップ取って適当にデプロイすればElasticsearchのコピーできるのでやってください。ぶっちゃけインストールも一瞬なので、新しく作っちゃっていいです。
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を再起動すれば、あら不思議!
もうスケールアウトできちゃいましたー。