【Elixir】libclusterを使用して簡単にクラスタ化する
libclusterというElixirのライブラリを使用することで、簡単にクラスタ構成を作ることができます。
Elixirとlibclusterを使用してクラスタ構成を作ってみます。
環境
- Elixir 1.14.2
libcluster のインストール
まず、libcluster
をプロジェクトに追加します。mix.exs
の deps
関数に以下のコードを追加してください。
|
|
次に、ターミナルで mix deps.get
コマンドを実行し、依存関係を取得してください。
使い方
以下のように application.ex
にサクッと組み込み事で使用できます。
そうすると自動的にクラスタを構成してくれます。
|
|
起動
起動時にはいくつか注意が必要です。
ノード名(--sname
)とCookie(--cookie
)の指定をしなければいけません。
ノード名は各端末別にCookieはクラスタを構築したいノード内で統一してください。
elixir --sname a@127.0.0.1 --cookie Cookie -S mix
構成方法
クラスタの構成にはいくつか方法があります。
Cluster.Strategy.Epmd
ノード名を指定する方法
Cluster.Strategy.Epmd — libcluster v3.3.2Cluster.Strategy.DNSPoll
DNSを指定する方法
Cluster.Strategy.DNSPoll — libcluster v3.3.2Cluster.Strategy.Gossip
ネットワークを指定する方法
Cluster.Strategy.Gossip — libcluster v3.3.2
他にも色々あるので自分の環境にあった方法を使用してください。
備考
私は Gossip
を使用してクラスタを組んだのですが下記がサイトに載っている方法。
|
|
これを以下のようにするとネットワーク内で自動的にクラスタを組んでくれました。
Docker内で構成する時、すごい簡単です。
|
|
デバッグ
debug: true
を入れることでlibclusterのデバッグモードが動きログにデバッグが出力されるようになります。
|
|