#概要
Azure App Service のハイブリッド接続は、Service Bus を仲介 (Relay) としてファイアウォールの後ろにあるオンプレミスのリソースに簡単に接続する便利な方法を提供します。
オンプレミス側には、ハイブリッド接続マネージャー (HCM) と呼ばれるリレーエージェントをインストールする必要がありますが、このエージェントがインストールできる環境が Windows Server 2012 以降となっているためオンプレミス側にある Linux 環境には接続できないと勘違いされている節があります。
実際には、ハイブリッド接続マネージャー (HCM) はオンプレミスのエンドポイントに対する仲介 (Relay) の役割をしており、HCM をインストールした Windows Server からエンドポイントのサービスにアクセス出来れば良い事となります。以下の構成では Windows Server (下記図のオレンジ)に HCM がインストールされており、そこから名前解決できる同一 LAN 内に Linux(下記図の赤枠)サーバーがエンドポイントとしてあります。
#詳細
Azure App Service のハイブリッド接続の構成はこちらの手順となりますが、ここでは下記のように構成したハイブリッド接続を元に説明をしていきます。
以下の画面は、ハイブリッド接続マネージャー (HCM) をインストール、構成した Windows Server 2016 になります。この HCM 上で ping で名前解決している MySQL は同一 LAN 内にある Linux サーバーのホスト名となります。 Linux ホストは CentOS で MySQL が稼働しており、この Windows Server からアクセスできる状態にあります。
#動作確認
上記の状態でクラウド側 Azure App Service に、下記のような PHP コンテンツを配置します。MySQL への接続情報は環境にあわせて修正します。
<?php
$mysqli = new mysqli('MySQL', 'root', 'password', 'test');
if ($mysqli->connect_error) {
echo $mysqli->connect_error;
exit();
} else {
echo "Successs : Connect to on-premise MySQL on Linux via HCM.";
}
$mysqli->close();
?>
ブラウザで https://[your app name].azurewebsites.net/dbconnect.php へアクセスし動作を確認します。エラーとなる場合は、HCM 上の Windows Server から、エンドポイントの MySQL への接続が出来るか再度確認してみてください。
#冗長化
ハイブリッド接続の高可用性が必要な場合は、複数の HCM を個別の Windows Server 2016 ホストで実行します。
#オンプレミス側の FW 構成
ハイブリッド接続を HCM でサポートするには、HCM ホスト(Windows Server 2016) で以下の接続要件が必要です。
- ポート 80 および 443 経由の Azure への TCP アクセス(outgoing のみ incoming は全て閉じて OK)
- エンドポイント ホストに対する TCP アクセス(今回の例では、HCM から IP:10.0.0.5 Port:3306 へのアクセス)
- エンドポイント ホストおよび Service Bus 名前空間に対する DNS 名前解決
#制限
動的ポートを使用する TCP ベースのサービスなど、ハイブリッド接続で実行できないことがいくつかあります。
- ドライブのマウント
- UDP の使用
- FTP パッシブ モードや拡張パッシブ モードなどの動的ポートを使用する TCP ベースのサービス
- UDP を必要とする場合があるため、LDAP のサポート
- Active Directory のサポート