旧 SafeKit Milestone 設定
SafeKit/Milestone XProtect ソリューションの旧バージョンのステップバイステップ設定
![]()
注意:仮想 IP アドレスを設定するには、特定のステップが必要です。そうしないとフェイルオーバーが機能しません。
1. SafeKit コンソールを起動します
- いずれかのクラスターノードで、
http://localhost:9010に接続してウェブコンソールをブラウザで起動します。 - ユーザー名に
adminと入力し、インストール時に定義したパスワードを入力します。
コンソールは、クラスター外部のワークステーションのブラウザーで実行することもできます。
![]()
SafeKit の設定は、単一のブラウザから両方のノードで行います。
![]()
Web コンソールを保護するには、ユーザーガイドの「SafeKit Web コンソールの保護」を参照してください。

2. ノードアドレスの設定
- ノードの IP アドレスを入力します。
- 次に、
Applyをクリックして設定を保存します。
![]()
node1 または node2 背景色が赤色の場合は、両方のノードへのブラウザの接続を確認し、トラブルシューティングのために両方のノードのファイアウォールを確認します。
![]()
この操作により、両方のノードの cluster.xml ファイルに IP アドレスが配置されます (コマンドラインを使用したトレーニングで詳細を確認できます)。

3. モジュールを選択
- [構成] タブで、.safe モジュールをクリックします。
![]()
インストール時にモジュールをそこにドロップした場合、コンソールはサーバー側の「Application_Modules/demo/」ディレクトリで xxx.safe 検索します。

4. モジュールを構成する
- 起動時にモジュールを遅延なく自動起動するように選択します。
- 通常、レプリケーションは単一のハートビートネットワーク上で行われます。ただし、必要に応じてプライベートネットワークを定義することもできます。
- レプリケートされたディレクトリが両方のノードにインストールされ、アプリケーションデータが含まれていることを確認します。
データベースには、データとログのレプリケーションが必要です。
必要に応じて、新しいレプリケートディレクトリを追加できます。 - 仮想 IP アドレスを入力します。仮想 IP アドレスは、両方のノードの IP アドレスと同じ IP ネットワーク(同じサブネット)内の標準的な IP アドレスです。
アプリケーションクライアントは、仮想 IP アドレス(または仮想 IP アドレスに関連付けられた DNS 名)で設定する必要があります。
障害発生時には、仮想 IP アドレスが自動的に切り替わります。 start_primとstop_prim、アプリケーションの起動と停止が含まれている必要があります。
これらのスクリプトに新しいサービスを追加できます。
これらのスクリプト内のサービス名が両方のノードにインストールされているものと一致していることを確認し、一致しない場合はスクリプト内で修正してください。- 両方のノードで、
start_primに設定されているサービスを停止します。 - Windows および両方のノードで、Windows サービスマネージャーを使用して、
start_primに登録されているすべてのサービスについてBoot Startup Type = Manualに設定します(SafeKitstart_primでサービスの開始を制御します)。
![]()
SQL が管理サーバー上にある場合:
- SQL システムデータベース(master.mdf や mastlog.ldf など) は、両方のノードで同じディレクトリに配置する必要があります。これらのディレクトリは、レプリケートされるように構成する必要があります。
- 読み取り専用のSQL リソースデータベースはバイナリにあり、フェイルオーバーに必要であるため、SQL は両方のノードのファイルシステムの同じ場所にインストールする必要があります。このデータベースを複製する必要はありません。
- SQL Milestone データベース(.mdf および .ldf)は、両方のノードで同じディレクトリに配置する必要があります。ディレクトリはレプリケートされるように構成する必要があります。この記事によると、Milestone データベースは次のとおりです。
![]()
プロセスチェッカーにプロセス名が表示されている場合、障害発生時に再起動アクションで監視されます。誤ったプロセス名を設定すると、モジュールは起動直後に停止します。
![]()
「適用」ボタンをクリックすると、両方のノードの userconfig.xml、start_prim、stop_prim ファイルの設定が報告されます(コマンドラインを使用したトレーニングで詳細を確認できます)。

5. 設定が正常に完了したことを確認する
- 両方のノードで成功メッセージ(緑色)を確認し、[次へ] をクリックします。

6. 何も起動せずに「閉じる」ボタンをクリックします
![]()
起動前に仮想 IP アドレスに特別な設定が必要なため、何も起動せずに[閉じる]ボタンをクリックしてください

7. ノード 1 のデスクトップに移動し、Milestone 内部ファイルで仮想 IP アドレスを設定します
![]()
Milestone 2022 R3 以降、この手順は不要であり、次の手順「Server Configurator - サーバーの登録 - http://virtual-IP"で自動的に実行されます。
管理者として PowerShell コマンドラインで、ノード 1 でこのスクリプトを実行します
c:/safekit/modules//bin/UpdateAuthServerUri.ps1
![]()
このスクリプトは、2 つの Milestone 内部ファイルに仮想 IP アドレスを設定します
C:\ProgramData\Milestone\XProtect Management Server\ServerConfig.xml
<AuthorizationServerUri>http://**<仮想 IP>**/IDP</AuthorizationServerUri>
C:\Program Files\Milestone\XProtect Management Server\IIS\IDP\appsettings.json
"Authority": " http://**< virtual-ip>**/IDP"
![]()
このステップでは、仮想 IP アドレスが前のステップで正しく設定されていると仮定します(スクリプトは、SafeKit コンソールに入力され、userconfig.xml に保存された仮想 IP アドレスを使用します)。
![]()
8. コンソールで、最新のデータを持つノード 1 をプライマリとして起動します
ステップ 7 以降、ノード 1 が最新のレプリケートされたディレクトリを持っていると仮定します。
ノード 1 をプライマリとして強制的に起動します。ノード 2 が起動すると、ノード 1 のすべてのデータがノード 2 にコピーされます。
![]()
誤った選択をすると、両方のノードで古いデータを同期させてしまう危険性があります。
![]()
また、SafeKit はレプリケーションメカニズムをインストールし、その後 start_prim スクリプトでアプリケーションを起動できるように、アプリケーションはノード 1 で停止していると想定されます。

9. ALONE(緑)に切り替わるまで待ちます
- ノード 1 は ALONE(緑)状態に達する必要があります。これは、
start_primスクリプトがノード 1 で実行されたことを意味します。
![]()
ステータスが ALONE(緑)で、アプリケーションが起動していない場合は、ノード 1 のアプリケーションログで start_prim の出力メッセージを確認してください。
![]()
ノード 1 が ALONE(緑)状態に達しない場合は、ノード 1 のモジュールログで原因を分析してください。
![]()
クラスターが WAIT (red) not uptodate - STOP (red) not uptodate 状態に移行した場合は、WAIT ノードを停止し、プライマリとして強制的に起動します。

10. ノード 1 のデスクトップで、Milestone Management Server を停止し、仮想 IP アドレスに登録してから再起動します
画像内のメニューに従って、ノード 1 で以下の項目を実行します
- タスクバーの Milestone Management Server アイコンを右クリックします。
- 管理サーバーサービスを停止
- 次に、Server Configurator ] を選択し、仮想 IP アドレスを登録します。
- 管理サーバーサービスを開始
![]()
この手順では、仮想アドレスへの接続を介して、ノード 1 の管理サーバーを SQL データベース(ノード 1 で実行中)に登録します。
![]()
Milestone 2022 R3 バージョン以前では、登録時に Milestone 内部ファイルから仮想 IP アドレスの設定が削除されている可能性があります。この場合は、ステップ 7を繰り返してください。
![]()
注:Milestone 2020 R2 より前のバージョンを登録するには、[暗号化設定の変更…] を使用します。

11. Milestone Management Client を搭載したノード 1 のデスクトップで、サービスとネットワークの URL に仮想 IP アドレスを設定します
![]()
Milestone 2022 R3 以降、この手順は不要になり、「Server Configurator - サーバーの登録 - http://virtual-IP".
画像によると:
- ノード 1 で Milestone XProtect Management Client 起動します。
- [ツール] メニューで、[登録済みサービス] を選択します。
- 「登録済みサービスの追加/削除」 ウィンドウで、リストからサービスを選択し、「編集」 をクリックします。
- 「登録済みサービスの編集」 ウィンドウで、サービスの URL アドレスを、同じ URL アドレスで仮想 IP アドレスを含むものに変更します。
- ウィンドウに表示されているすべてのサービスについて、これらの手順を繰り返します。
- 同じウィンドウで、[ネットワーク] をクリックします。
- [ネットワーク構成] ウィンドウで、サーバーの URL アドレスを、仮想 IP アドレスを含む同じ URL アドレスに変更します。

12. Milestone Management Client を搭載したノード 1 のデスクトップで、管理者ロールを設定して、フェイルオーバーが正しく行われるようにします
![]()
Milestone 「Windows 認証」が Active Directory で構成されている場合、フェイルオーバー後にセカンダリノードの外部 AD でユーザー/パスワードが取得されるため、特別な構成は必要ありません。
Milestone XProtect Management Client 起動すると、「Windows 認証」または「基本認証」のいずれかで認証する必要があります(スクリーンショットはこちらをクリックしてください)。
Milestone XProtect Management Client 開き、[セキュリティ] / [ロール] の順に選択します (画像参照)
- Windows グループ BUILTIN\Administrators を設定します。これにより、セカンダリ上の管理者ユーザーは、「Windows 認証」を使用してセカンダリ上の Milestone に接続できるようになります。
- フェイルオーバー後にセカンダリノードで再認証されるように、「基本認証」 (画像では Admin) を使用してユーザーを作成します。「基本認証」の場合、ユーザー/パスワードは SQL データベースに保存され、フェイルオーバー後にセカンダリノードで取得されます。
![]()
BUILTIN\Administrators グループを設定すると、ローカルの Windows 管理者を使用してセカンダリノードで認証できるようになります。
そうしないと、フェイルオーバー後にセカンダリでローカルの Windows アカウントを使用した認証ができなくなります。
これは、BUILTIN\Administrators グループが両方のノードで同じ SID を持つためです。他のローカルグループまたはローカルユーザーの場合、名前が同じであっても両方のノード間で SID が異なるため、セカンダリでは認証できません。

13. ノード 2 のデスクトップに移動し、内部 Milestone ファイルで仮想 IP アドレスを設定します
![]()
Milestone 2022 R3 以降、この手順は不要であり、次の手順「Server Configurator - サーバーの登録 - http://virtual-IP"で自動的に実行されます。
管理者として PowerShell コマンドラインで、ノード 2 でこのスクリプトを実行します
c:/safekit/modules/milestone/bin/UpdateAuthServerUri.ps1
![]()
このスクリプトは、2 つの Milestone 内部ファイルに仮想 IP アドレスを設定します
C:\ProgramData\Milestone\XProtect Management Server\ServerConfig.xml
<AuthorizationServerUri>http://**<仮想 IP>**/IDP</AuthorizationServerUri>
C:\Program Files\Milestone\XProtect Management Server\IIS\IDP\appsettings.json
"Authority": " http://**< virtual-ip>**/IDP"
14. ノード 2 のデスクトップで、仮想 IP アドレス上の管理サーバーを登録します
- ノード 2 のタスクバーで Server Configurator を選択し、仮想 IP アドレスに登録します(画像参照)。
- 次に、管理サーバーサービスを停止します。
![]()
ノード 2 で登録を実行するユーザーのアカウントは、ノード 1 の Milestone で管理者ロールを持っている必要があります。
ノード 2 の Windows 管理者が登録を行う場合、ステップ 12で Management Client / Security / Roles に BUILTIN\Administrators 設定されている必要があります。そうでない場合、登録は機能しません。
![]()
この手順では、仮想アドレスへの接続を介して、ノード 2 の管理サーバーを SQL データベース(ノード 1 で実行)に登録します。
![]()
2022 R3 より前のバージョンの Milestone では、登録によって内部 Milestone ファイル内の仮想 IP アドレス構成が削除されている可能性があります。この場合は、手順 13を繰り返してください。

15. ノード 2 を起動する
- コンテキストメニューからノード 2 を開始します。
- SECOND(緑色)の状態になるまで待ちます。
![]()
ノード 2 は、レプリケートされたディレクトリを再同期している間(ノード 1 からノード 2 へのコピー)、SECOND(マゼンタ)の状態を維持します。
レプリケートされたディレクトリで再同期するファイルのサイズやネットワーク帯域幅によっては、これに時間がかかる場合があります。
コピーの進捗状況を確認するには、ウィンドウを更新することを忘れずに、詳細オプションを付けてノード 2 のモジュールログを参照してください。

16. クラスターが動作していることを確認します
- PRIM ノードでサービスが実行され、SECOND ノードでは実行されていない状態で、クラスターが緑/緑であることを確認します。
この状態では、ファイル内の変更のみがリアルタイムで複製されます。
![]()
サービスのクライアントであるコンポーネントは、仮想 IP アドレスで構成する必要があります。構成は、DNS 名(DNS 名が作成され、仮想 IP アドレスに関連付けられている場合)で行うことができます。

17. 録画サーバーで仮想 IP アドレスを設定する
インストール URL で仮想 IP アドレスを指定して、レコーディングサーバーをインストールします。
または、レコーディングサーバー側で、以下のフィールドに仮想 IP アドレスを設定します
C:\ProgramData\Milestone\XProtect Recording Server\RecorderConfig.xml <server><address> <server><authorizationserveraddress>Milestone Management Client と Milestone Smart Client 仮想 IP アドレスに接続します。
18. ノード切り替え後、Management Client と Smart Client が正常に機能しない
クラスター化された XProtect Management Server のセットアップでは、ノードの切り替え後に Smart Client と Management Client さまざまな問題が発生します。この問題は、ノードの切り替え前後に異なるノードで生成されるトークンと、トークンの検証に必要な特定の証明書へのアクセスに関する問題に関連しています。解決策が提供されています (バージョン 2022 R3 から 2023 R2 まで、Milestone KB を参照してください)。
この問題は Milestone 2023 R3 で解決されました。
18. テスト
- PRIM ノードのコンテキストメニューを下にスクロールして[停止]をクリックし、ノードを停止します。最初のテストではスワップを使用しないでください(理由は下記参照)。
- SECOND ノードでフェイルオーバーが発生し、ALONE(緑色)になっていることを確認します。
- また、Microsoft 管理コンソール(MMC)を使用して、サービスのフェイルオーバーを確認します(
stop_primスクリプトでノード 1 で停止し、start_primスクリプトでノード 2 で開始)。
![]()
システムが PRIM-SECOND で、すべてが正常に機能している場合は、PRIM を停止し、ALONE になる node2 で、すべてが正しく機能していることを確認します。すべてが問題なければ、node1 で開始を実行します。これにより、node2 からレプリケートされたディレクトリが再同期されます。
問題が発生した場合は、node2 停止し、node1 をプライマリとして強制的に起動します。これにより、停止時のローカルに正常なデータで再起動されます。
このスワップでは、PRIM の停止と再開が行われます。これにより、ノード 2 の停止直後に node2 からデータが再同期されます。レプリケーション構成に問題がある場合、正常なデータで再起動する機会は残りません。
![]()
状態が ALONE(緑)のときにノード 2 でアプリケーションが起動していない場合は、ノード 2 のアプリケーションログで start_prim スクリプトの出力メッセージを確認してください。
![]()
ALONE(緑)に到達しない場合は、ノード 2 のモジュールログで原因を分析してください。
![]()
テストに関する詳細は、ユーザーガイドをご覧ください
