シングルノードマルチGPUクラスタ展開QuickStart
サンプルの種類
顧客サーバーのIPアドレスを192.168.1.217と仮定する
大容量データディスクが /data にあると仮定する
授権パラメータ
- オンライン授権モード (-e LICENSE_SERVER=CN -e LICENSE_KEY=XGRIDS交付的AppKey)
- オフライン授権モード はofflineバージョンイメージを採用する必要がある (-e CODEMETER_SERVER=192.168.xx.xx)
- オフライン授権サーバーは説明書に従って事前にインストールしておく必要がある
MySQL8 docker版をタスク情報永続化データベースとして使用する
サーバー設定の確認
システムOSバージョンの確認
Ubuntu20.04以上を推奨
基礎ソフトウェアの確認
dockerおよびグラフィックスカードドライバサポート
NVIDIAドライババージョン > 545 の確認
nvidia-smi
NVIDIAドライバ常駐モードの有効化の確認
sudo nvidia-smi -pm 1
Docker設定
/etc/docker/daemon.json を編集し、cfgoups設定(デフォルトがsystemdの場合)および国内dockerイメージソースなどを追加してDockerを再起動する
![この画像は/etc/docker/daemon.jsonの設定内容を示しており、設定の中心的な内容はdockerのruntime関連の設定であり、そのうち要点である「exec-opts": \["native.cgroupdriver=cgroupfs”\]が赤い枠で強調表示されている。この設定はドキュメント内のDocker設定の段階で修正が求められるcfgoups設定に対応し、Dockerの関連設定調整に使用される。](https://cdn-docs.xgrids.cloud/assets/05-daemon%E9%85%8D%E7%BD%AE-7yoQGycc.webp)
$ docker info で確認
...
Cgroup Driver: cgroupfs # Cgroup Driver = systemd と表示される場合、コンテナが GPU を認識できなくなる可能性があります
Cgroup Version: 1
Consulサービスレジストリセンターの迅速な展開
consulイメージのプル
docker pull hashicorp/consul:1.20
または 外部ネットワークに接続できない場合
wget https://cdn-bukbb1.xgrids.cloud/developer/deploy/lcc/consul-120.tar.gz
gunzip -c consul-120.tar.gz | docker load
consulの起動
docker run -d --restart always --name=consul -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8500:8500 -p 8600:8600 hashicorp/consul:1.20 agent -server -ui -node=n1 -bootstrap-expect=1 -client='0.0.0.0'
アクセスアドレス
http://192.168.1.217:8500/ui/
MySQLデータベースの迅速な展開
mysqlイメージのプル
docker pull mysql:8.0
または
wget https://cdn-bukbb1.xgrids.cloud/developer/deploy/lcc/mysql-8.tar.gz
gunzip -c mysql-8.tar.gz | docker load
mysql8イメージの起動(文字セット設定をサポート)
docker run -d --restart=always --name mysql8 -e MYSQL_CHARACTER_SET_SERVER=utf8mb4 -e MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci -e MYSQL_ROOT_PASSWORD=pwd123456 -e MYSQL_DATABASE=lcc-storage -v /data/lcc/mysql-data:/var/lib/mysql -p 3306:3306 mysql:8.0
💡
本番環境セキュリティ注意:上記のコマンドはクイック体験用であり、そのままコピーして実行できる;本番環境では強力なパスワードに変更し、専用の最小権限データベースアカウントを使用し、MySQL 3306 と phpMyAdmin のネットワークアクセス範囲を制限し、直接公網に公開しないこと。
phpmyadminイメージのプル
docker pull phpmyadmin
または
https://cdn-bukbb1.xgrids.cloud/developer/deploy/lcc/phpmyadmin.tar.gz
gunzip -c phpmyadmin.tar.gz | docker load
phpmyadminの起動 (データベース管理画面)
docker run -d --restart=always --name phpmyadmin -e PMA_HOST=192.168.1.217 -e PMA_PORT=3306 -p 8098:80 phpmyadmin
展開後のデータベース画面アクセスアドレス
http://192.168.1.217:8098/index.php?route=/database/structure&db=lcc-storage
LCC Dockerコンテナクラスタの起動
イメージのプルとインポート
起動後のクラスタアクセスアドレス
http://192.168.1.217:8080
コンテナメインノード(CLUSTER_MAIN)の起動と使用
(0号グラフィックスカードを使用し、lcc-rebuild-0と命名し、ポート8080をクラスタメインノードとして使用する)
特殊パラメータ:一部のサーバー内のdockerコンテナのドメイン名解決が異常で授権サーバーに接続できない場合、パラメータ --dns 8.8.8.8 を追加できる
docker run -d --restart always --name=lcc-rebuild-0 --gpus "device=0" -e APP_MODE=CLUSTER_MAIN -e SERVICE_REGISTER=http://192.168.1.217:8500 -v /data:/data -v /data/lcc-work:/work -p 8080:8080 -e CODEMETER_SERVER=192.168.xx.xx -e WEBUI=ON -e JOB_QUEUE_CONTROL=ON -e SERVICE_ADDRESS=192.168.1.217 -e SERVICE_PORT=8080 -e DB_TYPE="mysql" -e DB_USER="root" -e DB_PASSWORD="pwd123456" -e DB_HOST="192.168.1.217" -e DB_PORT="3306" -e DB_NAME="lcc-storage" -e RESULT_AUTO_ZIP=ON --dns 8.8.8.8 lcc-rebuild-cloud-server:tag-v1.1.0-offline-252856e6-20250908-01
1つ目のコンテナサブノード (CLUSTER_SUB) の起動
(1号グラフィックスカードを使用し、lcc-rebuild-1と命名し、ポート8081を使用する、クラスタのサブノード)
docker run -d --restart always --name=lcc-rebuild-1 --gpus "device=1" -e APP_MODE=CLUSTER_SUB -e SERVICE_REGISTER=http://192.168.1.217:8500 -v /data:/data -v /data/lcc-work:/work -p 8081:8080 -e CODEMETER_SERVER=192.168.xx.xx -e WEBUI=OFF -e JOB_QUEUE_CONTROL=OFF -e SERVICE_ADDRESS=192.168.1.217 -e SERVICE_PORT=8081 -e DB_TYPE="mysql" -e DB_USER="root" -e DB_PASSWORD="pwd123456" -e DB_HOST="192.168.1.217" -e DB_PORT="3306" -e DB_NAME="lcc-storage" -e RESULT_AUTO_ZIP=ON --dns 8.8.8.8 lcc-rebuild-cloud-server:tag-v1.1.0-offline-252856e6-20250908-01
その他のノードの起動(例えばグラフィックスカード2を使用する2つ目のサブノード)
複数のコンテナを区別しやすくするため、パラメータ内の数字インデックスを順番に修正することを推奨する。例えば
1つ目のサブノードのパラメータを参考にする
--name=lcc-rebuild-1 --gpus "device=1" -p 8081:8080 -e SERVICE_PORT=8081
2つ目のサブノードのパラメータを修正する:
--name=lcc-rebuild-2 --gpus "device=2" -p 8082:8080 -e SERVICE_PORT=8082
クラスタの停止
docker stop lcc-rebuild-0
docker stop lcc-rebuild-1
...
クラスタの削除
docker rm lcc-rebuild-0
docker rm lcc-rebuild-1
...