はじめに
“RPA…様々な作業を連携させて自動化する技術” 程度の知識しか持ち合わせていなかった私が、最近、Uipathを扱うプロジェクトに参画しました。
学習のため、AWSでサーバー構築→オンプレミスOrchestrator(以下OC)をインストール→AR実行/UR実行という流れを数回試行。なんとなく分かってきたぞ…という段階で、OCとStudioのバージョンの違いによる仕様の差異の調査をすることに。
OCサーバーとSQLサーバーの構築が割とスムーズに完了し、さてOCのパブリックURLにアクセスしてログインしよう!というところで500エラーに遭遇。しかも全く同じ流れで2度も。なぜだ…
結論、原因は些細なことでしたが、かなり沼にはまりました。未来の自分のために、確認すべきポイントを書き留めておきます。
注意
初学者のため内容に不備があると思われます。
誤りがありましたらコメントでご教示いただけますと幸いです。
前提条件
OC環境(サーバー・DB構成)
- OCサーバー:EC2上でOrchestratorが稼働するサーバー
- SQLサーバー:EC2上でOrchestratorのデータを保存するサーバー
- RDS:Orchestratorのデータを保存するデータベース
クライアントからOrchestratorサーバーに接続する際は、443番ポートを使用。
OrchestratorサーバーからSQLサーバーの接続する際は、1433番ポートを使用。
※2台のサーバー間でネットワークの疎通が取れている必要がある。
ソフトウェア要件
下記UiPathドキュメントの「Orchestrator インストール ガイド」に記載されているソフトウェア要件に則っている。
インストールしたコンポーネント
コンポーネント | バージョン |
---|---|
IIS設定スクリプト | ― |
.NET 6.0 Hosting Bundle | 3.1.32 |
URL Rewrite | 2.1 |
WebDeploy | 3.6 |
Orchestrator(On-premise) | 2022.10.4 |
サーバー証明書
自己署名証明書を利用。
参照:
確認すべきポイント
本題です。
500エラー(サーバーサイドのエラー)であることが分かっているので、特に疑うべきはDB接続orサーバー証明書関連。
-
IISの状態
サーバー マネージャーのインターネット インフォメーション サービス(IIS)マネージャーでIISが正常に起動しているか確認。 -
DB接続状態
- SSMS(SQL Server Management Studio)でDBに接続できているか確認
- PowerShellで下記コマンドを叩き、SQL Serverデータベースに接続できるか確認
$connectionString = "Server=[プライベートIPアドレスorサーバー名];Database=[データベース名];User Id=[ユーザー名];Password=[パスワード];"
$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = $connectionString
$conn.Open()
if ($conn.State -eq 'Open') {
Write-Host "Connection succeeded"
} else {
Write-Host "Connection failed"
}
$conn.Close()
-
サーバー証明書
次の3点を確認。- サーバー証明書がOCサーバー(IIS)側で、Windowsキー+R → certlm.mscを開き「個人」と「信頼されたルート証明機関」に存在しているか確認
- サーバー マネージャーのインターネット インフォメーション サービス(IIS)マネージャーに存在しているサーバー証明書の拇印が①に存在しているサーバー証明書の拇印と一致しているか
- SAN値(サブジェクト代替名)が適切に設定されているか(=URLのドメイン名と同じdnsNameになっているか)
-
名前解決
/etc/hostsファイルの設定が正しいか次の2点を確認。- OCサーバー(IIS)側にSQLサーバーのサーバー名とプライベートIPアドレスを指定している
- ローカルPC側にOCサーバーのサーバ名とパブリックIPアドレスを指定を指定している
-
OCサーバー(IIS)→ SQLサーバの疎通確認
- コマンドプロンプトでpingコマンドを実行し疎通確認
- PowerShellでTestnet Connectionコマンドを実行し指定ポート(1433)が開いているか確認
Test-NetConnection [SQLサーバーのプライベートIPアドレス or サーバ名] -Port 1433
-
ログの確認
- C:\Windows\System32\LogFiles\HTTPERR内の該当するログを見る
- %SystemDrive%\inetpub\logs\LogFiles内の該当するログの500エラーの箇所を見る
※ 今回はあまり有益な情報を得られず…
-
その他
①接続情報を見てみる(ClientIDとかDB情報とか)- C:\Program Files (x86)\UiPath\Orchestrator\Identity\appsettings.Production.json
- C:\Program Files (x86)\UiPath\OrchestratorのUiPath.Orchestrator.dll.config
- C:\Program Files (x86)\UiPath\Orchestrator\Webhooks\appsettings.Production.json
②500エラーの画面でデベロッパーツールを開き、ⅽtrl+F5でスーパーリロードを行う。
→エラーログを見る。
今回の原因
今回遭遇した500エラーのそれぞれの原因は、不明点も残りますがおそらく次の通りと思われます。
①名前解決が正しくできていなかった
OCサーバー(IIS側)の/etc/hostsファイルを書き換えているつもりが、実際はローカルPC側の方に設定しまっていたのだと思います。
リモートデスクトップを全画面表示にすると、時々ローカルPC側のタスクバーが表示されてしまうようです。
…罠ですね(笑)
全く気がつきませんでした。何度設定し直してもうまくいかないわけです(-_-;)
②何らかのバグ
時間を空けて数回IISを再起動したら、何事もなかったかのようにOrchestratorのログイン画面が出ました。(えぇ…涙)
ちなみに、EC2インスタンスを停止→起動では解決できませんでした。
おわりに
確認すべきポイントを何周もしたり、手順書を初めから読み返して設定を確認したり、少し前のEBSのスナップショットからサーバーを構築し直したり…とエラー解決に想定よりもかなり時間が掛かってしまいました。
ただ、色々試行錯誤したことで得られた知見も多く、今後の他の業務でも活かせるのではないかと思います。大変勉強になりました。