はまったりひらめいたり…とか…

.Net系プログラムで勉強したこととか嵌ったことについて書いたりします。

Azureハイブリッド接続でAzureWebAppsとオンプレミスのDBをつなげよう

AzureにWebAppsを置いてもいいけど他アプリケーションとの連携の関係で

SQLDatabaseはオンプレミスサーバーに置いときたい!なんて事が合った場合に。

ちと手順が複雑で日本語の最新資料も見当たらなかったのでメモ書き程度に。

参考文献

少し古いですが、AtoZ等は↓を

github.com

ハイブリッド接続に関しては↓を参考にしました。

docs.microsoft.com

準備

まずは、SQLServerを立てるオンプレミス環境とWebAppsを準備します。

自前の環境に直接つなげるのはあれなので

無償期間内で使用できるWindwosServerを使用しました。

www.microsoft.com

AzureのWebAppsは今回使用する「ハイブリッド接続」が

Basicからの対応となっているので、B1環境で構築しました。

(Basic環境はサポート対象外のようなので、実運用はStandardからですね!)

SQLServerの準備

SQLServerのExpress版をオンプレミスの仮想環境内に突っ込みます。

TCP通信できるようにしておきます。

詳細な手順については手順を説明しているサイトが多くあるのでそちらをご参考ください。

ServiceBusの構築

ハイブリッド接続で使用するAzure ServiceBusを構築します。

設定するものは名前ぐらいで、特別な設定等は行っていないので、詳細は省きます。

WebAppsでハイブリッド接続の設定

WebAppsの「ネットワーク」>「ハイブリッド接続」>「ハイブリッドエンドポイントの構成」から

ハイブリッド接続の設定画面に行くことが出来ます。

f:id:TakasDev:20171014230502p:plain

「ハイブリッド接続の追加」> 「ハイブリッド接続の新規作成」から

ハイブリッド接続設定を追加できます。

f:id:TakasDev:20171014230546p:plain

  • ハイブリッド接続の名前
    • 適当にそれっぽい名前をつけました。
  • エンドポイントホスト
    • エンドポイントのホスト名(オンプレミスサーバーの名)を付けました。
  • エンドポイントポート
    • SQLServerの標準のTCPポートの1433を使用しました。
  • サービスバス
    • 既存で先ほど作成したサービスバスを使用するようにしました。

オンプレミス環境からの接続

ハイブリッド接続設定画面の「接続マネージャダウンロード」で

クライアントソフトウェアをダウンロードします。

インストーラはオンプレミスDBが存在するサーバ上で実行します。

f:id:TakasDev:20171014230636p:plain

インストールしたソフトウェア「Hybrid Connection Manager UI」を起動すると

Azureにログインするためにログイン画面がたちあがあります。

先ほどハイブリッド接続の設定を行ったアカウントでログインします。

f:id:TakasDev:20171014230700p:plain

「Configure another Hybrid Connection」でハイブリッド接続の接続設定を行います

f:id:TakasDev:20171014230722p:plain

Subscripyionでハイブリッド接続の設定を作成したサブスクリプションを選択すると

サブスクリプションに紐づくハイブリッド接続の一覧が表示されます。

その中から使用する接続設定を選択し、[save]で決定します。

Connectedになったら接続設定完了です。

f:id:TakasDev:20171014230700p:plain

WebAppsとDBの接続確認

まずはローカル環境でDBに接続できるWebAppをサクッと作成します。

VS2017のテンプレートだと、ASP.netMVCのSPAテンプレートが

確認しやすいと思います。

web.configの接続文字列を書き換えるだけでOKなので。

f:id:TakasDev:20171014230819p:plain

f:id:TakasDev:20171014230851p:plain

ひとまず、Localでの実行で「devtakas@devtakas.com」でユーザーを作成してみました。

発行

いつもの手順でハイブリッド接続の設定を行ったWebAppsに発行を行います。

発行されたWebAppsに「「devtakas@devtakas.com」」でログインしてみます。

ログイン失敗!

ログインしようとするとエラーが発生してしまいました。

SQLServerの名前付インスタンスは動的ポートとしてUDPをしようするそうですが

これはハイブリッド接続ではサポートされないそうです。

なので、SQLServerの名前付きインスタンスの構成を変更します。

SQLServerのネットワーク構成の変更

SQLServer構成マネージャ」プログラムから

今回対応する名前付きインスタンスのネットワークプロトコル構成を選択します。

f:id:TakasDev:20171014230919p:plain

TCP/IPのプロパティで「IPアドレス」タブを選択し、参考資料に合った通り

IPAIIのTCPPortを、上記エンドポイントで指定した1433ポートを指定しました。

f:id:TakasDev:20171014230947p:plain

変更後、ホスト名のみでDB接続できるようになっていればOKです。

成功!

f:id:TakasDev:20171014231050p:plain

オンプレで登録したユーザー情報でログインできました!