cryoSPARCを複数ユーザで利用する際のお話.
選択肢としては利用されるユーザ毎にcryoSPARCサービスを立ち上げる方法と、cryoSPARCサービス内のユーザ管理を利用する方法がある.
前者はベースポート番号を変更することで1台のマシンに複数のcryoSPARCサービスを立ち上げることができます.
ですが、cryoSPARCのサービスを立ち上げると「lsof -i」の結果から
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 2596399 oooooo 10u IPv4 129658835 0t0 TCP *:39171 (LISTEN)
mongod 2596399 oooooo 40u IPv4 129667612 0t0 TCP localhost:39171->localhost:52534 (ESTABLISHED)
mongod 2596399 oooooo 42u IPv4 129667614 0t0 TCP localhost:39171->localhost:52550 (ESTABLISHED)
mongod 2596399 oooooo 56u IPv4 129667616 0t0 TCP localhost:39171->localhost:52556 (ESTABLISHED)
mongod 2596399 oooooo 67u IPv4 129667636 0t0 TCP localhost:39171->localhost:51450 (ESTABLISHED)
mongod 2596399 oooooo 68u IPv4 129667638 0t0 TCP localhost:39171->localhost:51462 (ESTABLISHED)
mongod 2596399 oooooo 69u IPv4 129667640 0t0 TCP localhost:39171->localhost:51474 (ESTABLISHED)
:
と結構なlocalhost間の通信が張られます。
これで複数のcryoSPARCサービスが立ち上がるとこのlocalhostのポートが互いに同じになってしまうことがあります. ベースポート側ではなく 52534、52550とかの方
そうなるとそのcryoSPARCサービスが立ち上がらないです. 1つか2つなら大丈夫かもしれないが、10とかなら避けた方がいいかも. memリソースも結構消費しますしね
回避策としては1台のマシンの中で qemu でcryoSPARC毎の仮想マシンを作って用意するとかでしょうか.
後者の方法は、cryoSPARCサービスを稼働させるユーザは特定のunixユーザです。cryoSPARCサービスに掛けて、得られたファイルもその特定のunixユーザのファイルとなります.
cryoSPARC内のユーザ管理機構を使いcryoSPARCサービスにログインしますが、cryoSPARCの計算はあくまでもその特定のunixユーザで行われます.
なので各自のホームディレクトリに特定のunixユーザがアクセスできる場所(プロジェクトディレクトリ)を用意して運用します.
cryoSPARCのドキュメントでは特定のunixユーザが所属するgroupに各自のアカウントも所属するようにしてます
ここではaclを使ってcryoSPARCサービスの書き込み、読み込みを許可する方法を示しました.