デプロイに関する問題
再インストールするには
-
実行中のサービスを停止します。管理ツールのルートディレクトリで次のコマンドを実行してください(正常に停止すると stoped と表示されます)。
bash ./service.sh stopallrm -f ./installer.stage -
サービスのファイルをバックアップします(バックアップ先は任意に指定できます。通常、初回デプロイ時はバックアップ不要で、
rm -rf /data/mingdao/を直接実行できます)。mv /data/mingdao/ /home/hapbak/ -
クリーンアップが完了したことを再確認します。次のコマンドをそれぞれ実行し、出力がすべて空であることを確認してください(出力がある場合は、該当するプロセスを kill してください)。
docker ps | grep mingdaoyunnetstat -ntpl | grep 38881ps -ef | grep 'mingdaoyun\|service.sh' | grep -v grep -
次のコマンドで管理ツールを再起動します。起動後、
http://{服务器IP}:38881にアクセスして再インストールしてください。bash ./service.sh start
初期化に失敗する
初回デプロイ画面に初期化失敗と表示された場合は、サーバーで次のコマンドを実行して出力を確認してください。通常、ターミナルに例外情報が表示されるため、その内容から原因を調査します。
bash ./service.sh restartall
iptables failed を含むエラーがある場合、通常は firewalld の停止時に iptables ルールが消去されたことが原因です。Docker を再起動してデフォルトの iptables ルールを再生成してから、再インストールしてください。
初期化完了後に「アカウントからログアウトしました。再度ログインしてください」と表示される
主な原因:サーバーのディスクの IOPS 性能が低く、サービス起動中にディスク I/O が飽和することで、ストレージコンポーネントの起動に時間がかかっています。
解決方法:
設定ファイル /data/mingdao/script/docker-compose.yaml に環境変数を追加して、マイクロサービスの起動を遅らせます。
環境変数を追加した後、インストール管理ツールのディレクトリで bash service.sh restartall を実行してサービスを再起動します。再起動が完了してから初期情報を再入力してください。
services:
app:
environment:
ENV_ROLE_MODE_WAITMS: "90000"
-
環境変数
ENV_ROLE_MODE_WAITMSの単位はミリ秒 で、デフォルト値は 30 秒です。 -
この例では待機時間をデフォルトの 30 秒から 90 秒に延長し、マイクロサービスの起動を 90 秒遅らせます。これにより、マイクロサービスが起動する前にストレージコンポーネントのプロセスが起動を完了できるようにします。
-
問題が解消しない場合は、待機時間を 180 秒などに延長し、サービスを再起動して確認してください。
-
この値を大きくすると、サービス全体の起動が遅くなります。運用中のパフォーマンス問題を避けるためにも、高性能なディスクへのデプロイを推奨します。ディスクの性能要件はサーバーの基本性能要件を参照してください。
サービス起動後に応答コードエラー(Service response code error)が発生する
症状:サービス起動後に "Service response code error" が表示されますが、その後は正常にアクセスできる場合があります。
原因: データディスクに HDD を使用している場合など、ディスク I/O 性能が低い環境ではサービスの起動が遅くなります。サービス起動から 5 分後にヘルスチェックが行われ、応答 がないままタイムアウトすると、このエラーが発生します。
確認方法:
-
サービスのページにアクセスします。正常にアクセスして利用できる場合、主要サービスの起動は完了しています。
-
docker logs $(docker ps | grep -E 'mingdaoyun-community|mingdaoyun-hap' | awk '{print $1}')を実行し、マイクロサービスコンテナーのログを確認します。-
INFO レベルのログが中心であれば、通常は正常な状態です。
-
ERROR または WARN レベルのログがある場合は、内容を詳しく確認してください。
-
推奨事項:サービスの安定稼働、性能、保存データの安全性を確保するため、高性能なディスクへのデプロイを強く推奨します。主要クラウド事業者の標準ディスクは最低限の基本性能要件を満たします。物理サーバーへのデプロイでは SSD を推奨します。
OS 起動時にサービスを自動起動するには
インストール管理ツールのパスが /usr/local/MDPrivateDeployment/ の場合を例に、主な OS での設定方法を示します。
- systemd 方式による設定
- rc.local方式
仕組み:OS 標準の systemd を使用します。独自のサービスユニットファイル manager.service にサービス起動コマンドを記述することで、OS 起動時にサービスを自動起動します。
/etc/systemd/system/manager.serviceファイルを編集し、サービス起動コマンドを追加します。
次のコマンドで manager.service ファイルを作成できます。
cat > /etc/systemd/system/manager.service <<'EOF'
[Unit]
Description=Manager
After=docker.service
Wants=docker.service
[Service]
Type=oneshot
WorkingDirectory=/usr/local/MDPrivateDeployment
ExecStart=/bin/bash service.sh restartall
RemainAfterExit=yes
StandardOutput=append:/usr/local/MDPrivateDeployment/manager.log
StandardError=append:/usr/local/MDPrivateDeployment/manager.log
[Install]
WantedBy=multi-user.target
EOF
-
起動時の自動起動を有効にします。
systemctl daemon-reloadsystemctl enable manager
実装方法:OS 標準の rc-local サービスを利用し、起動スクリプトにサービスの起動コマンドを記述することで、自動起動を実現します。
- CentOS
- Debian
- Ubuntu
/etc/rc.d/rc.local ファイルを編集し、末尾にサービス起動コマンドを追加します。
次のコマンドでファイル末尾にサービス起動コマンドを追加できます。
cat >> /etc/rc.d/rc.local << EOF
sleep 30
cd /usr/local/MDPrivateDeployment/ && /bin/bash ./service.sh restartall
EOF
- 実行権限設定(必須):
chmod +x /etc/rc.d/rc.local
Debianではrc-localサービスがデフォルト無効なので、手動で有効化します。手順:
-
rc-localサービスの状態を確認します。systemctl status rc-local- rc-local サービスが有効で実行中の場合は、手順 4 に進んでください。
- rc-local サービスが有効になっていない場合は、次の手順に進んでください。
-
rc.localファイルを新規作成し、実行権限を付与します。echo '#!/bin/bash' > /etc/rc.localchmod +x /etc/rc.local -
rc.localサービスを起動します。systemctl enable rc-localsystemctl start rc-localsystemctl status rc-local- システム起動時にコマンドが自動実行されるよう、
rc-localサービスが正常に起動することを確認してください。
- システム起動時にコマンドが自動実行されるよう、
-
/etc/rc.localファイルを編集し、末尾にサービス起動コマンドを追加します。次のコマンドでファイル末尾にサービス起動コマンドを追加できます。
cat >> /etc/rc.local << EOFsleep 30cd /usr/local/MDPrivateDeployment/ && /bin/bash ./service.sh restartallEOF
Ubuntuもrc-localサービスがデフォルト無効なので、手動で有効化します。手順:
-
rc-localサービスの状態を確認します。systemctl status rc-local- rc-local サービスが有効で実行中の場合は、手順 5 に進んでください。
- rc-local サービスが有効になっていない場合は、次の手順 に進んでください。
-
/lib/systemd/system/rc-local.serviceファイルを変更します。まず
rc-local.serviceファイルをバックアップします。cp /lib/systemd/system/rc-local.service /lib/systemd/system/rc-local.service.bak次に
rc-local.serviceファイルに[Install]セクションを追加し、OS が正常に起動した後にrc-local.serviceが起動するよう設定します。次のコマンドでファイル末尾に
[Install]セクションを追加できます。cat >> /lib/systemd/system/rc-local.service << EOF[Install]WantedBy=multi-user.targetEOF -
初期
rc.localファイル作成&実行権限設定echo '#!/bin/bash' > /etc/rc.localchmod +x /etc/rc.local -
rc.localサービスを起動します。systemctl daemon-reloadsystemctl enable rc-localsystemctl start rc-localsystemctl status rc-local- システム起動時にコマンドが自動実行されるよう、
rc-localサービスが正常に起動することを確認してください。
- システム起動時にコマンドが自動実行されるよう、
-
/etc/rc.localファイルを編集し、末尾にサービス起動コマンドを追加します。次のコマンドでファイル末尾にサービス起動コマンドを追加できます。
cat >> /etc/rc.local << EOFsleep 30cd /usr/local/MDPrivateDeployment/ && /bin/bash ./service.sh restartallEOF
サーバーの再起動後にサービスが正常に起動しない
管理ツールのルートディレクトリで次のコマンドをそれぞれ実行し、startall コマンドの完了を待ってください。OS 起動時の自動起動を設定していない場合は、自動起動の設定を参照してください。
bash ./service.sh stopall
rm -f service.pid
bash ./service.sh startall
キーが失われ、サーバー Id が表示されない
- 管理ツールのルートディレクトリで
bash ./service.sh stopallを実行してサービスを停止します。 ps -ef | grep 'mingdaoyun\|service.sh' | grep -v grepを実行します(出力がある場合は、該当する pid のプロセスをすべて kill してください)。bash ./service.sh startallを実行し、コマンドの完了を待ちます。
考えられる原因 :
- サーバーリソースが飽和し、管理ツールのプロセスが強制終了された。
- サーバーの時刻が正しくなく、キーの有効期限が誤って判定された。
- サーバーを再起動したが、管理ツールの自動起動が設定されていなかった。
- サービスの起動・停止手順が適切でなく、キーの定期的な有効性チェックに失敗した。
Kafka の起動に失敗する
スタンドアロンモードでは、Kafka は組み込みコンポーネントとしてコンテナー内で動作します。Kafka が利用できない場合、次のような症状が発生します。
- ワークフローが正常に実行されない。
- ワークシートの行レコードデータの送信が遅い。
- 集計機能が正常に動作しない、またはデータが同期されない。
Kafka は実行中、メッセージデータやオフセット情報をローカルのデータディレクトリに保存します。停電やメモリ不足によるプロセスの強制終了などでシステムが正常な手順を経ずに停止すると、Kafka と Zookeeper のメタデータファイルに次の問題が発生することがあります。
- ログデータファイルの破損:メッセージログやオフセットファイルへの書き込みが完了せず、検証に失敗する。
- Zookeeper の状態の不整合:トランザクションログが正しくコミットされず、Kafka の起動時にクラスターメタデータ を読み込めない。
- Kafka の起動停止:復旧処理中にインデックスやログファイルの不整合が検出され、異常な復旧ループに陥る。
スタンドアロンモードの Kafka にはクラスターのレプリカ機構がないため、この種のエラーは自動復旧できません。異常なデータを消去して Kafka サービスを再初期化する必要があります。
コンテナーログを確認して Kafka が起動できないことが分かった場合は、次の手順で復旧します。
-
管理ツールのルートディレクトリで
bash ./service.sh stopallを実行し、サービスを停止します。 -
次のコマンドで Kafka と Zookeeper のデータディレクトリ名を変更し、異常な状態データを除外します。
mv /data/mingdao/script/volume/data/kafka{,_bak_$(date +%Y%m%d%H%M)}mv /data/mingdao/script/volume/data/zookeeper{,_bak_$(date +%Y%m%d%H%M)} -
管理ツールのルートディレクトリで
bash ./service.sh startallを実行し、サービスを起動します。