Azure Load Balancerと Azure Application Gateway のアクセスログを比較してみる

はじめに

くどうです。

Azureにはアクセスを負荷分散する方法として、Load BalancerとApplication Gatewayが用意されています。 しかし、それぞれレイヤー4とレイヤー7で挙動が異なりHTTPdへのアクセスログが異なります。 そこで、今回はアクセスログについて比較していきたいと思います。

用意した環境はCentOS上にApacheをデフォルトの状態(yum install httpd)したものです。

Load Balancer

実際にログを確認してみます。

Load Balancerからの死活監視(プローブ)は「Load Balancer Agent」と表示されます。 通常の外部からのアクセスもIPアドレスなども問題なく表示されています。

ただし、Load Balancerからの死活監視のログが邪魔ですね。 /etc/httpd/conf/httpd.conf を以下のように設定し排除します。

これで出力されなくなります。

Application Gateway

実際にログを確認してみます。

アクセス元は、すべてApplication Gatewayの内部アドレスになっていることが分かります。 これでは、アクセスログの解析には役立ちません。

これを解決する方法として、X-Forwarded-ForとX-Forwarded-Protoをログに残します。 これはAWS ELBとも同じです。

/etc/httpd/conf/httpd.conf を編集しています。

実際にログを確認してみます。

末尾の方でX-Forwarded-ForとX-Forwarded-Protoが取得できていることが確認できます。 これで問題なく解析が行えるかと思います。

まとめ

アクセスを負荷分散するLoad BalancerとApplication Gatewayですが、それぞれ出力されるアクセスログも異なるため気を付けましょう。 また、対処する方法も異なるので気を付けましょう。これらはAzureに限ったことではありません。 X-Forwarded-ForとX-Forwarded-Protoが利用されるケースが多いので覚えておくとよいと思います。

ではでは

Azure Application Gateway 上でLet’s Encryptの証明書ファイルを更新する。

はじめに

くどうです。

証明書の更新は簡単です。ついでにLet’s Encryptの証明書ファイルを更新してみます。 Let’s Encryptの作成については前回の記事に書かれています。

Let’s Encryptの証明書を再作成

今回の証明書の再作成は運用しているサーバー上で行うことを前提としています。 Azure Application Gateway上でLet’s Encryptの証明書を再発行する場合、以下の条件があります。 ・対象ドメインで正引きが行え、サーバーと80ポートで通信が行えること。

これを実現するため、Azure上では以下の手順を踏み必要があります。 ・Application Gatewayでフロントポート80を追加(参考) ・バックエンドサーバーにLet’s Encrypt クライアントがインストールされている(参考) ・バックエンドサーバーにはHttpdが80ポートで動作している

80ポートを必要とする理由は、Let’s Encryptのプラグイン機能webrootではhttpdを利用します。 ドキュメントルートに認証用ファイルが作成され、認証サーバーから確認されることで発行されます。

では実際に作成していきます。

Let’s Encryptクライアントを起動します

webrootを選択します

更新するドメインを入力します

[Renew & replace the cert]を設定します

OKをクリック

webrootを入力します。 ここでは、Apacheのドキュメントルート「/var/www/html」を入力します。

問題なく完了すると以下のメッセージが表示されます。

以下のコマンドでも発行可能です。

Application Gatewayの証明書はpfx形式である必要があります。 そこでopensslで変換します。Exportパスワードを入力します。

[…]

Azure Application Gateway にフロントポートを追加する。

はじめに

くどうです

前回の記事では、httpsポートでAzure Application Gatewayを構成しました。 実際にはhttpでも利用するのが一般的です。そこで、利用できるよう追加したいと思います

追加

前回作成したApplication Gatewayを引き継いだ設定を行っています。 フロントポートを追加する場合以下の作業が必要となります。 ・フロントポートを追加 ・Httpリスナーを追加 ・ルーティングルールの作成

Application Gatewayの名前:appgwtest Resource Groupの名前:appgw-rg10 fipconfig01

最初に、既存のApplication Gatewayに関する情報を取得します。

フロントIPの情報を取得します。

フロントポートfrontendport02 を追加します。

作成したフロントポートの情報を取得しまう。

取得した、プロントIPの情報と、フロントポートの情報から、Httpリスナー frontendport02 を作成します。

作成したHttpリスナーの情報を取得します。

既存のバックエンドアドレスプールの情報を取得します。

既存のバックエンドHttpの設定を取得します。

取得した、バックエンドアドレスプールの情報とバックエンドHttpの設定からルーティングルール rule02 を作成します。

実際にApplication Gatewayに設定を適用しましす。

[…]