既存の MID Server インストールをホストサーバー間で移行する方法Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 稼働中の MID Server インストールを、あるホストから別のホストへ移行する必要が生じる場合があります。たとえば、データセンターの変更や容量の増強などが理由です。 これを行う方法は 2 つあります。 新しいホスト上に 2 台目の新しい MID Server をセットアップし、それを起動した後、インスタンス内のすべてのジョブを新しい MID Server を使用するよう再設定します。この移行作業は、MID Server を使用している機能の数や、その機能内で設定されている個別ジョブ数によっては相当な作業量になる可能性があります。この方法では特別な手法は必要ありません。インスタンス内で特定ジョブに対して MID Server を指定するフォームは完全に文書化されており、新しい MID Server のインストールも通常の文書化された手順で実施できます。これは圧倒的に推奨される最も安全な方法です。ジョブを移行する前に十分なテストを実施できます。新しい MID Server を既存の MID Server と同一に見えるよう構成し、その後既存の MID Server を停止して、置き換え用の MID Server を起動します。これにより、インスタンス側で変更を行うことなく、すべてのジョブが新しい MID Server を利用するようになります。実質的にインスタンスは変更に気付くことがありません。 本記事では、2 番目の方法を使用して既存の MID Server を別のホストへ「移行」する方法について説明します。 ダウンタイムを最小限に抑えるため、置き換え用の MID Server インストールを事前にセットアップし、既存の MID Server とまったく同じように見えるよう構成する必要があります。そうすることで、既存の MID Server を停止した直後に新しい MID Server を起動して置き換えることができます。新しい MID インストールは、既存の MID Server を停止するまでは起動できないため、手動でセットアップする必要があります。 理論上は既存のインストールフォルダを新しいサーバーへコピーすることも可能ですが、古いインストールの問題や、新しいホストに適さないファイルや設定を引き継ぐことを避けるため、以下の手順による新規クリーンインストールを行うことを推奨します。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべて Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 開始前に必要な情報 開始前に以下の情報が必要です。 既存サーバー上の MID Server インストールから .\agent\config.xml および .\agent\conf\wrapper-override.conf ファイルのコピーを取得し、参照用として保存します。config.xml ファイルを確認し、パラメータから MID Server がインスタンスへログインする際に使用している username を確認します。そのインスタンスユーザーのパスワードが必要になります。 注: この手順は mTLS 認証または Instance PKI (iPKI) ベースの MID 認証ではテストされていません。 Proxy Server を使用している場合、新しいホストでも必要か検討する必要があります。必要であれば、Proxy Server ユーザーのパスワードを取得してください。新しいサーバーでは別のプロキシを経由する必要がある場合、そのプロキシのホスト名、ポート、ユーザー名、およびパスワードも必要です。既存ホストおよび新規ホストの両方へのリモートアクセス権限が必要です。 新しいホスト上での MID Server インストールの手動セットアップ インスタンス内の MID Server > Downloads から、新しいホストへ MID Server インストール用 ZIP ファイルをダウンロードします。新しいサーバーの OS に対応するリンクを選択してください。 ヒント: 新しいホストから意図的にダウンロードしてください。これは、将来 MID Server サービスがインストールサーバーから自動アップグレード ZIP ファイルをダウンロードできることを確認する良い方法です。 ZIP ファイルをインストール場所へ展開します。 例: C:\ServiceNow_MID_Servers\<instance-path>\ agent フォルダは以下になります。 C:\ServiceNow_MID_Servers\<instance-path>\agent\ agent\config.xml をテキストエディタで開きます。(Notepad++ や TextWrangler など XML の色分け表示ができるエディタを推奨します。) REQUIRED Parameters セクションで、以下の値を既存 MID Server の config.xml と同じ値に設定します。 urlmid.instance.usernamename また、mid.instance.password はプレーンテキストで再入力します <!-- ************************************************************************************* * REQUIRED Parameters * * This section contains parameters that MUST be included in EVERY Mid Server * configuration. ************************************************************************************* --> <!-- Tells the MID server where to contact its associated Service-now instance. Edit this value to provide the URL of your organization's Service-now instance. --> <parameter name="url" value="https://<instance-name>.service-now.com/"/> <!-- If your Service-now instance has authentication enabled (the normal case), set these parameters to define the user name and password the MID server will use to log into the instance. --> <parameter name="mid.instance.username" value="mid_user"/> <parameter encrypt="true" name="mid.instance.password" value="midpassword123"/> <!-- Defines the name by which your MID server is known on the Service-now instance. Edit this value to provide the name you want, or leave it blank and the MID server will make up a name. --> <parameter name="name" value="MID Server 1"/> COMMON OPTIONAL Parameters セクションにはプロキシ設定を追加します。 新しいホストではサイト間やデータセンター間移行によりプロキシ構成が変更される場合があります。 必要な場合は、まず XML コメントタグ <!-- --> を削除してください。 また、デフォルト値 25 より大きい threads.max を設定している場合は、その値も設定してください。 <!-- ************************************************************************************* * COMMON OPTIONAL Parameters * * This contains selected parameters that MAY be included in ANY Mid Server * configuration. These parameters were chosen because they are commonly needed. To * include any particular parameter or group of parameters, uncomment the parameter(s) * you want. ************************************************************************************* --> <!-- Controls the number of execution threads (simultaneous work) that may be used by probes. --> <parameter name="threads.max" value="50"/> <!-- These parameters specify a proxy server the MID server will use BOTH for contacting your Service-now instance AND for downloading upgrades. --> <parameter name="mid.proxy.use_proxy" value="true"/> <parameter name="mid.proxy.host" value="proxy.<your-domain>.com"/> <parameter name="mid.proxy.port" value="8080"/> <!-- Set these parameters ONLY if your proxy requires a user name and password. --> <parameter name="mid.proxy.username" value="proxy_user"/> <parameter name="mid.proxy.password" value="proxy_password" encrypt="true"/> REQUIRED Parameters that are AUTOMATICALLY filled in セクションは通常空ですが、mid_sys_id を手動で追加する必要があります。 既存 MID Server の config.xml から以下の行をコピーしてください。 これが、インスタンスに対して同じ MID Server であると認識させる重要なポイントです。 [自動的に入力される必須パラメーター] セクションは空ですが、mid_sys_idパラメーターを手動で追加する必要があります。既存の MID サーバー構成ファイルからこの行をコピーします。これが、これが以前と同じ MID サーバーであるとインスタンスに思わせるための鍵となります。 <!-- ************************************************************************************* * REQUIRED Parameters that are AUTOMATICALLY filled in. * * This section contains parameters that are required, but will be automatically filled in * after the MID server first made contacts to your Service-now instance. ************************************************************************************* --> <!-- Records the unique ID of the MID server's record on the Service-now instance. On installation of the MID server, this value should be empty. The MID server will fill in this value after it first contacts your Service-now instance. --> <parameter name="mid_sys_id" value="4ef8f4fadbfffa0062be3600ad961971"/> keypairs.mid_id パラメータはコピーしないでください。 これをコピーすると問題が発生します。これがインストールフォルダ全体をコピーしない理由の一つです。 その他のパラメータ(例: debug=true)も存在する場合がありますが、それらは必須ではありません。インスタンスがそれらを保持しており、MID Server 起動後に自動同期されるためです。 変更を保存してください。 テキストエディターでagent\conf\wrapper-override.conf ファイルを開きます。 追加の MID Server が同じホストにインストールされる場合のサービス名競合を避けるため、またどの Windows サービスがどの MID Server に対応しているか識別しやすくするため、変更を推奨します。既存 MID Server と同じである必要はありません。 ################################################################################ # Windows Service ################################################################################ # The following properties must be unique per MID installed on the same system. # # REQUIRED: Name token of the service wrapper.name=snc_mid_<instance-name>_1 # REQUIRED: Display name of the service wrapper.displayname=ServiceNow MID Server <instance-name> 1 Genevaリリース以降、デフォルトのJavaヒープサイズ(OSがMID Serverによる使用を許可するRAM容量)は1GBに設定されています。既存のMID Serverが512MBのままになっている場合は、1GBを使用できるようにする良い機会ですので、この設定は変更しないでください。ただし、既存のMID Serverですでにこれより大きい「maxmemory」設定を使用していた場合は、コメントアウトを解除してその値を設定してください。 ################################################################################ # System resources ################################################################################ # Memory, CPU, etc. Remember to refer to < conf/wrapper.conf > for defaults. # # OPTIONAL: Maximum Java Heap Size (in MB) wrapper.java.maxmemory=2048 変更を保存します。 この時点では MID Server を起動しないでください。 既存 MID Server から新しい MID Server への切り替えの実施 ここからが、新しい MID Server が正常に起動しない場合に問題となる可能性がある部分です。 前提として、この手順を事前にサブプロダクションインスタンス上の MID Server でテスト済みであるか、または検証目的で既存 MID Server と並行して追加の MID Server をインストール済みであることを想定しています。 新しい MID Server が期待どおりに動作しない場合は、それを停止し、原因を特定するまで既存の MID Server を再起動するだけで元の状態に戻せます。 インスタンスで MID Server フォーム を開きます。これを使用して Up/Down ステータスを監視できます。新しいホスト上で、管理者権限で実行したコマンドプロンプト (cmd.exe) を開きます。新しいインストールの agent フォルダへ移動します。既存の MID Server ホスト上で Windows サービスを停止します。サービス名は通常 "ServiceNow MID Server" または類似の名前です。複数存在する場合は、正しいサービスを選択していることを確認してください。サービス一覧を更新し、MID Server サービスが停止したことを確認します。直ちに、新しい MID Server ホスト上で管理者権限のコマンドプロンプトから以下を実行します。 start.bat インスタンスで MID Server が再び起動するか確認します。Status が Up になるまで、1~2 分間 MID Server フォームを更新し続けてください。MID Server フォームの関連リンクから Validate をクリックします。新しい MID Server を検証する場合と同様に実行します。ECC Queue を確認し、MID Server が停止していた間にキューへ追加されたジョブを、新しい MID Server が処理していることを確認します。 ーーーー 既存の MID サーバーから新しい MID サーバーへの切り替えの実行 これは、新しい MID サーバーが起動しない場合に問題が発生する可能性がある部分です。この手順は、おそらく移動が必要だったと思われる MID サーバーの 1 つを備えた準本番インスタンスですでに試しているか、最初にこれを試すためだけに古い MID サーバーと並行して追加の MID サーバーをインストールしていることを前提としています。 新しい MID サーバーが期待どおりに動作しない場合は、その理由がわかるまでシャットダウンして古い MID サーバーを再起動するだけです。 インスタンスで、MID サーバーフォームを開きます。これを使用して、稼働中/停止ステータスを監視できます。新しいホストで、アドミニストレーターとして実行するコマンドプロンプトウィンドウ (cmd.exe) を開きます。ディレクトリーを新しいインストールのエージェントフォルダーに変更します。既存の MID サーバーホストで、Windows サービスを停止します。おそらく「ServiceNow MID Server」などと呼ばれるでしょう。複数ある場合は、適切なものを選択するように注意してください。サービスリストを更新して、MID サーバーサービスが停止したことを確認します。すぐに、新しい MID サーバーホストのコマンドプロンプトウィンドウで、アドミニストレーターとして実行します start.batインスタンスで、MID サーバーが復旧しているかどうかを確認します。ステータス = 稼働中になるまで MID サーバーフォームを 1 分か 2 分間更新し続けますMID サーバーフォームで、新しい MID サーバーの場合と同様に、関連リンクの [検証] をクリックします。ECC キューをチェックして、MID サーバーが停止している間にキューに入れられたジョブを MID サーバーが処理していることを確認します。 MID Server の停止時間については、通常それほど心配する必要はありません。中断されたジョブは再実行されます。また、MID Server 停止中に ECC Queue に追加された新しいジョブも、新しい MID Server が起動した後に実行されます。 潜在的なリスクとその他の質問 1. MID Server ホストのホスト名および IP アドレスが変更されます。問題になりますか? MID Server がインスタンスへアクセスしたり、ジョブ実行のために内部システムへアクセスするためのファイアウォールルールを使用している場合は影響があります。例えば以下のようなケースです。 Database Server への接続Discovery 対象サーバーへの接続その他の内部システムへの接続 これらの場合、送信元ホスト名または IP アドレス変更に合わせてファイアウォールルールを更新する必要があります。 2. この変更は受信メールまたは送信メールに影響しますか? いいえ。メールは MID Server 経由では処理されません。 3. この変更はインスタンスへログインするユーザーの LDAP Authentication に影響しますか? いいえ。リアルタイム LDAP Authentication は MID Server 経由では実行されません。MID Server が以下に使用されている場合でも同様です。 定期的なユーザーインポートLDAP Listener 4. MID Server が、自分の知らない機能で使用されている可能性はありますか? 可能性があります。MID Server が利用される機能は以下のドキュメントに記載されています。 Introducing the MID Server また、以下の URL を使用すると、過去数日間に MID Server が処理した Probe や Command の種類を確認できます。 /ecc_queue_list.do?sysparm_query=topic!%3DHeartbeatProbe%5EORtopic%3DNULL%5Etopic!%3Dqueue.processing%5EORtopic%3DNULL%5Etopic!%3DSystemCommand%5EORtopic%3DNULL%5Etopic!%3Dqueue.stats%5EORtopic%3DNULL%5EGROUPBYtopic&sysparm_first_row=1&sysparm_view= 5. 証明書 (Certificates) はどうなりますか? Java の keytool ユーティリティを使用して cacerts ファイルへ証明書を追加している場合、それらは新しいインストールへ再度追加する必要があります。 例: Proxy Server 証明書Database Server 証明書 理論上は cacerts ファイルをコピーすることも可能です。詳細は以下を参照してください。 MID Servers and Certificates (KB0863673) 6. 以前の MID Server に追加した JAR / Script / Script Includes / MIB ファイルはどうなりますか? Calgary リリース頃以降は、extlib 内のこれらのファイルは対応するテーブルへ登録され、自動的にすべての MID Server に同期されます。これには新しい MID Server も含まれます。 一方で、製品にこの機能が追加される以前に手動で配置したファイルが残っている場合は、それらを対応するインスタンステーブルへ登録する必要があります。 また、MID Server の lib フォルダにある JAR ファイルを別バージョンへ置き換えている場合は、より適切な回避策について KB0862383 を参照してください。