Application Gatewayの構築検証記事③です。
第2回までで、Application Gatewayの作成とルール①の設定について記載しました。
1回目:構築する構成図と事前準備
2回目:Application Gatewayの作成とエンドツーエンドTLSの設定
3回目:パスベース規則の設定
第4回の今回は、運用上のTIPSとして以下をご紹介します。
・Application Gatewayの起動/停止
・診断設定(アクセスログ等のログ収集設定)
・証明書の更新
・ルーティング規則の優先度設定
Application Gatewayの起動/停止
Application Gatewayを停止すると、課金も停止されます。
検証用のApplication Gatewayは、使うときだけ起動することで、コスト削減が可能です。
Azureポータルからは起動/停止できないため、Azure PowerShellやAzure CLIを使用して実行します。
下記にAzure PowerShellのコマンド例を記載します。
# Application Gateway Restart PowerShell
# APGW Parameter
$ResourceGroupName = <Resource Group>
$APGWName = <Application Gateway Name>
$ag = Get-AzApplicationGateway -Name $APGWName -ResourceGroupName $ResourceGroupName
# APGW Stop
Stop-AzApplicationGateway -ApplicationGateway $ag
# APGW Start
Start-AzApplicationGateway -ApplicationGateway $ag
実行結果として、対象のAppication Gatewayの情報が返るため、OperationState : Stopped
になっていれば停止完了、
OperationState : Runnning
になっていれば起動完了です。
起動状態はポータルからも確認可能です。(設定⇒プロパティメニューから確認可能)
なお、Application Gatewayの停止中にバックエンドのVMも停止しようとしたらエラーが発生がしました。
Application Gatewayの停止/起動運用をする場合、VMの起動/停止タイミングと調整した方がよさそうです。
診断設定
診断設定を有効化することで、Application Gatewayのアクセスログ等を収集可能です。
以下に設定手順と診断情報の確認手順を記載します。
■ 診断設定有効化手順
監視⇒診断設定メニューを開く
「診断設定を追加する」をクリック
収集するログの種類と保存先を指定し「保存」をクリックします。
今回はストレージアカウントに出力する設定としました。
■ 診断情報確認手順
ログ収集までしばらく待ち、監視⇒ログメニューを開きます。
試しにアクセスログを確認してみるため、以下のクエリを実行します。
AzureDiagnostics | where Category == "ApplicationGatewayAccessLog"
クエリの実行結果が表示されます。
CSVでダウンロードする場合、エクスポート⇒CSVへのエクスポート-すべての列を選択
CSVファイルでダウンロード可能です。(下図は参考になる列をサンプルで表示)
例えば、 "clientIP_s"列 に接続元クライアントIP、
"requestQuery_s" 列の "SERVER-ROUTED" に接続しているバックエンドサーバのIPが表示されるので、
どのセッションがどのサーバに、どのような情報(Cookie等)で接続しているか確認できます。
証明書の更新
■ リスナーのPFX証明書更新
設定⇒リスナーより、HTTPSプロトコルを設定しているリスナーを開きます。
以下を設定し、画面下部の「保存」をクリックします。
・証明書の選択: 既存のものを選択
・選択した証明書の更新または編集: ☑
・PFX証明書ファイル: (新しいPFX証明書をアップロード)
・パスワード: (PFX証明書生成時に設定したパスワード)
画面右上の通知にて、更新が完了したメッセージが表示されるまで待機します。※20分程度かかります。
■ HTTP設定のCER証明書更新
HTTP設定より、HTTPSプロトコルを設定している設定を開きます。
証明書欄で「証明書の追加」をクリックします。
以下の設定を行い、もう一度「証明書の追加」をクリックします。
・証明書の選択: 新規作成
・CER証明書: (新しいCER証明書をアップロード)
・証明書名: (任意。既存と重複しないように設定)
※古いCER証明書と同じ名前を設定すると、保存時にエラーとなります。証明書のファイル名は同じでもOK。
古い証明書の右にある「・・・」をクリックし、「削除」を選択します。
古い証明書が削除されたことを確認し、画面下部の「保存」をクリックします。
画面右上の通知にて、更新が完了したメッセージが表示されるまで待機します。
※20分程度かかります。
ポータル上では古い証明書が非表示になりましたが、まだ内部で情報を持っているためコマンドで削除します。
サポートに確認したところ、古い証明書を削除しなくとも、なにか問題が起きることはなさそうだが、
ポータルから見えない情報になるため、管理面から削除推奨とのこと。
Cloud Shellを起動します。今回はPowerShellを利用します。
登録されているCER証明書を確認します。
$appgw = Get-AzApplicationGateway -Name "<Application Gateway名>" -ResourceGroupName "<リソースグループ名>"
Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $appgw | Select-Object Name,ProvisioningState
古いCER証明書を削除します。今回は「server_cer_old」を削除します。
※20分程度かかります。
Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $appgw -Name "<古いCER証明書名>" | Select-Object ProvisioningState
Set-AzApplicationGateway -ApplicationGateway $appgw | Select-Object ProvisioningState
古いCER証明書が存在しないことを確認します。
Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $appgw | Select-Object Name,ProvisioningState
ルーティング規則の優先度設定
Standard V2 SKUの場合、ルールの優先度を設定可能ですが、
Standard V1 SKUの場合、ポータルに表示される順序で、上から順に処理されます。
すべてFQDN指定のルールであれば考慮不要ですが、IPアドレス指定のルールを設定する場合は、注意が必要です。
Application GatewayではプライベートIPは1つのみ付与可能なため、IPアドレスのルールが上位にあると、
プロトコルが同じすべてのアクセスが該当してしまいます。
そのため、IP指定のルールが一番最後になるように設定する必要があります。
ただし、ルールを更新すると順序も更新されるようで、IP指定のルールが上位になった場合は一度削除→再作成が必要です。
(何も変更せず保存しても順序は変わりませんでした。。)
以上です。