「DockerでcryoSPARCクラスタ」の版間の差分

提供: Eospedia
移動: 案内検索
(cryoSPARCクラスタ構築)
(Swarmの構成)
行28: 行28:
 
</pre>
 
</pre>
 
成功すれば"This node joined a swarm as a worker."と表示される。
 
成功すれば"This node joined a swarm as a worker."と表示される。
 +
 +
あとあと上記のコマンドを確認したい場合は、マネージャーノードにて
 +
<pre>
 +
> docker swarm join-token worker
 +
</pre>
 +
とすれば、ワーカーノード追加用のコマンド(トークン文字列も含めて)を確認できる。
  
 
マネージャー、ワーカーとややこしいことを書いたが、たぶん、swarm上でサービス (Dockerの用語)を動かす時に必要になる役割で、今回のようにそれぞれのホストでcryoSPARCコンテナを動かし、それを相互接続する、というだけであれば、どれをマネージャーにするかなどはあまり関係ないのではないかとは思う。
 
マネージャー、ワーカーとややこしいことを書いたが、たぶん、swarm上でサービス (Dockerの用語)を動かす時に必要になる役割で、今回のようにそれぞれのホストでcryoSPARCコンテナを動かし、それを相互接続する、というだけであれば、どれをマネージャーにするかなどはあまり関係ないのではないかとは思う。

2020年9月23日 (水) 16:41時点における版

この記事について

cryoSPARCはインストールで問題が起きる場合がある。Dockerで動かせるようにすれば、Dockerが使えるマシンがあればおおむねどこでもcryoSPARCを動かせるようになる。

単一ノードでcryoSPARCを使うだけれあればすでに作成済みのDockerイメージ( https://github.com/yasunaga-lab/docker/tree/master/cryosparc )が使える。複数ノードでcryoSPARCを動かしてクラスタを作るためにはDocker間の通信設定などが必要になる。ここにそのあたりの方法を書き残しておく。

Docker swarmによる(仮想)ネットワーク構築

異なるホストマシンの上に載っているDockerを相互接続するためにswarmを構成したうえで、cryoSPARCコンテナ間通信用のoverlayネットワークを作成する。(参考: Docker関連 )

ファイアウォール設定

Docker間の通信に必要なポートを開ける必要がある。こちらを参照⇒ https://docs.docker.com/network/overlay/#create-an-overlay-network

CentOSの場合はfirewall-cmdでポートを開けることができる。クラスタに参加するホストマシンのすべてで実行する必要がある。(firewall-cmdについて参考: Linux関連#ネットワーク関連)

> sudo firewall-cmd --zone=public --add-port=2377/tcp --add-port=7946/tcp --add-port=7946/udp --add-port=4789/udp

Swarmの構成

クラスタに参加させたいホストマシン達のDockerでswarmを構成する。Swarmにはマネージャーノードとワーカーノードの概念がある。

まずはマネージャーノードにしたいホストマシンにて以下を実行する。

> docker swarm init

すると以下のような文字列が出力されるから、これをワーカーノードとしてクラスタに参加させたいホストマシンのそれぞれで実行すればよい。

docker swarm join --token <トークン文字列> <マネージャーノードのIPアドレス>:2377

成功すれば"This node joined a swarm as a worker."と表示される。

あとあと上記のコマンドを確認したい場合は、マネージャーノードにて

> docker swarm join-token worker

とすれば、ワーカーノード追加用のコマンド(トークン文字列も含めて)を確認できる。

マネージャー、ワーカーとややこしいことを書いたが、たぶん、swarm上でサービス (Dockerの用語)を動かす時に必要になる役割で、今回のようにそれぞれのホストでcryoSPARCコンテナを動かし、それを相互接続する、というだけであれば、どれをマネージャーにするかなどはあまり関係ないのではないかとは思う。

Overlayネットワークの作成

Swarmのマネージャーノードにて、コンテナ間をつなぐためのoverlayネットワークを作成する。ここでは、cryosparc-netという名前で作ってみる。

> docker network create --driver=overlay --attachable cryosparc-net

これをワーカーノードでやる必要はない。マネージャーノードで作ればワーカーノードからも利用可能になる。

ネットワークの一覧を確認する。cryosparc-netがswarmをスコープとして作られていることが確認できる。

> docker network ls

cryoSPARCクラスタ構築

クラスタに加えたいノードのそれぞれでcryoSPARCを動かす能力のあるdockerコンテナを動かし、それらをcryosparc-netに参加させ、cryoSPARCのマスターとして使いたいコンテナでのみcryoSPARCのマスターインストールをして、必要ならワーカーもインストールし、他のコンテナではワーカーのみインストールする + α をすればクラスタ構築できた。

手順が煩雑なのでいずれ整理して書きます。(各ホストマシンでコンテナを動かして、同一の仮想ネットワーク上に載せることさえできれば、あとは通常のcryoSPARC master workerインストールと同じです。)