AzureにWebAppsを置いてもいいけど他アプリケーションとの連携の関係で
SQLDatabaseはオンプレミスサーバーに置いときたい!なんて事が合った場合に。
ちと手順が複雑で日本語の最新資料も見当たらなかったのでメモ書き程度に。
参考文献
少し古いですが、AtoZ等は↓を
ハイブリッド接続に関しては↓を参考にしました。
準備
まずは、SQLServerを立てるオンプレミス環境とWebAppsを準備します。
自前の環境に直接つなげるのはあれなので
無償期間内で使用できるWindwosServerを使用しました。
AzureのWebAppsは今回使用する「ハイブリッド接続」が
Basicからの対応となっているので、B1環境で構築しました。
(Basic環境はサポート対象外のようなので、実運用はStandardからですね!)
SQLServerの準備
SQLServerのExpress版をオンプレミスの仮想環境内に突っ込みます。
TCP通信できるようにしておきます。
詳細な手順については手順を説明しているサイトが多くあるのでそちらをご参考ください。
ServiceBusの構築
ハイブリッド接続で使用するAzure ServiceBusを構築します。
設定するものは名前ぐらいで、特別な設定等は行っていないので、詳細は省きます。
WebAppsでハイブリッド接続の設定
WebAppsの「ネットワーク」>「ハイブリッド接続」>「ハイブリッドエンドポイントの構成」から
ハイブリッド接続の設定画面に行くことが出来ます。
「ハイブリッド接続の追加」> 「ハイブリッド接続の新規作成」から
ハイブリッド接続設定を追加できます。
- ハイブリッド接続の名前
- 適当にそれっぽい名前をつけました。
- エンドポイントホスト
- エンドポイントのホスト名(オンプレミスサーバーの名)を付けました。
- エンドポイントポート
- サービスバス
- 既存で先ほど作成したサービスバスを使用するようにしました。
オンプレミス環境からの接続
ハイブリッド接続設定画面の「接続マネージャダウンロード」で
クライアントソフトウェアをダウンロードします。
インストーラはオンプレミスDBが存在するサーバ上で実行します。
インストールしたソフトウェア「Hybrid Connection Manager UI」を起動すると
Azureにログインするためにログイン画面がたちあがあります。
先ほどハイブリッド接続の設定を行ったアカウントでログインします。
「Configure another Hybrid Connection」でハイブリッド接続の接続設定を行います
Subscripyionでハイブリッド接続の設定を作成したサブスクリプションを選択すると
サブスクリプションに紐づくハイブリッド接続の一覧が表示されます。
その中から使用する接続設定を選択し、[save]で決定します。
Connectedになったら接続設定完了です。
WebAppsとDBの接続確認
まずはローカル環境でDBに接続できるWebAppをサクッと作成します。
VS2017のテンプレートだと、ASP.netMVCのSPAテンプレートが
確認しやすいと思います。
web.configの接続文字列を書き換えるだけでOKなので。
ひとまず、Localでの実行で「devtakas@devtakas.com」でユーザーを作成してみました。
発行
いつもの手順でハイブリッド接続の設定を行ったWebAppsに発行を行います。
発行されたWebAppsに「「devtakas@devtakas.com」」でログインしてみます。
ログイン失敗!
ログインしようとするとエラーが発生してしまいました。
SQLServerの名前付インスタンスは動的ポートとしてUDPをしようするそうですが
これはハイブリッド接続ではサポートされないそうです。
なので、SQLServerの名前付きインスタンスの構成を変更します。
SQLServerのネットワーク構成の変更
「SQLServer構成マネージャ」プログラムから
今回対応する名前付きインスタンスのネットワークプロトコル構成を選択します。
TCP/IPのプロパティで「IPアドレス」タブを選択し、参考資料に合った通り
IPAIIのTCPPortを、上記エンドポイントで指定した1433ポートを指定しました。
変更後、ホスト名のみでDB接続できるようになっていればOKです。
成功!
オンプレで登録したユーザー情報でログインできました!