Oracle Analytics CloudからのDataGatewayを介した、Azure上のSQL ServerへのFastConnect接続~前編~


●目的

Azure上のデータをOracle Analytics Cloud (以下OAC) でインターネットを経由せずに参照することを目的としました。Azure-OCI間をFastConnectで接続し、Oracle Service NetworkからAzureインスタンスにアクセスします。
前半では、Azure-OCI間の相互接続までを記載します。なお、DataGatewayインストール ~ OACからのリモート接続を参照したい方は後編をご覧ください。

●構成

  • 環境情報
    • Oracle Linux 7.8
    • Windows server 2019
    • SQL Server 2017

OCI-Linuxにインターネットゲートウェイを介してSSH接続し、サーバの環境設定を行う。Azure-OCI接続では、OCI-LinuxにインストールするDataGateway経由でAzureリソースへ到達するためにOCI側のインスタンスにはセカンダリvNICを追加する。

  • 構成イメージ

●FastConnectリージョン対応に関して

リージョン間でFastConnect接続できる組み合わせは、2020/11/1 時点では以下のものに制限されているので注意が必要。

Azure 米国東部 (EastUS) ~OCI アッシュバーン、VA (米国東部)
Azure 英国南部 (UKSouth) ~OCI ロンドン (英国南部)
Azure カナダ中部 (CanadaCentral) ~OCI トロント (カナダ南東部)
Azure 西ヨーロッパ (WestEurope) ~OCI アムステルダム (オランダ北西部)
Azure 東日本 (JapanEast) ~OCI 東京 (東日本)

Azureを米国東部、OCIをアッシュバーンとして接続検証を行った。

●Azure-OCIの相互接続

1. Azure側の構築

前提条件
Azure上に仮想ネットワーク、仮想マシン用サブネット、仮想マシン(Windowsサーバ)を作成済みであること。

1-1. ルート表の作成

ルートテーブル、ルート表の順に作成し、OCIのVCNのアドレス範囲を指定する。

リージョン:米国東部
名前:任意(ここでは、rt-azure-oci)
ゲートウェイのルートを伝達する : Yes


デプロイ完了後、作成したリソースに移動し、[設定]>[ルート]> [+追加] でOCIへのルーティングを作成する。

ルート名:任意のルート名(rt-rr-azure-oci)
アドレスプレフィックス:OCIのVCNのアドレス範囲(10.0.0.0/16)
次ホップの種類:仮想ネットワークゲートウェイ

1-2. ゲートウェイサブネットの作成

ゲートウェイを配置するためのサブネットを作成する。
[リソースの作成]>[仮想ネットワーク]>[作成した仮想ネットワーク]>[サブネット]>[+ゲートウェイサブネット] の順に進み、作成する。

サブネットアドレス範囲:重複しないアドレスを入力する。(ここでは、192.168.1.0/27)
NATゲートウェイ:なし
ルートテーブル:作成したルートテーブルを選択
サービス:Microsoft.Sql
サブネットをサービスに委任:なし

1-3. 仮想ネットワークゲートウェイの作成

GatewaySubnetに仮想ネットワークゲートウェイを作成する。
[リソースの作成]>[仮想ネットワークゲートウェイ]>[+追加]で進み、仮想ネットワークゲートウェイを作成する。

名前:任意のインスタンス名(gw-ue-azure-oci)
地域:米国東部
ゲートウェイの種類:Express Route
SKU:Standard
仮想ネットワーク:仮想ネットワークを選択(ここでは、vnet-usa-east)
パブリックIP:新規作成 (ここでは既存のものを使用している)
パブリックIPアドレス名:任意のIPアドレス名(ここでは、ip-gw)
アクティブ/アクティブモードの有効化:無効
BGP ASNの構成:無効

作成。デプロイに時間がかかる。。。。(20分弱)

1-4. 受信規則の設定

OCIのVCNからAzureインスタンスに接続するための受信規則を設定する。
[作成したインスタンス名]>[ネットワーク]>[受信ポートの規則]>[受信ポートの規則を追加する]

名前:任意(ここでは、OCI。)
ポート:1433
プロトコル:TCP
ソース:OCIのVCN(10.0.0.0/16)

1-5. ExpressRoute回線の作成

OCIとの接続するのに使用する回線を作成する。
[リソースの作成]>[Express Route circuit(回線)]>[+追加]

リージョン:米国東部
名前:任意(ここでは、er-azure-oci)
ポートの種類:プロバイダー
新規作成....:新規作成
プロバイダー:Oracle Cloud FastConnect
ピアリングの場所:Washinngton DC
帯域幅:1Gbps
SKU:Standard
課金モデル:従量課金制
クラシック操作:いいえ


必要事項を入力し作成。
FastConnect作成時に使用するため、デプロイ完了後のサービスキーを確認する。

FastConnectにサービスキーを入力して作成することで認証され、プロバイダーの状態が、[未プロビジョニング]→[プロビジョニング中]→[プロビジョニング済み]と進行していく。

1-6. 接続の作成

※「2-6. FastConnectの作成」でFastConnectを作成後、ライフサイクル状態が「プロビジョニング中」となってから行う。
デプロイしたExpressRouteからConnection(接続)を選択し、接続名、仮想ネットワークゲートウェイを選択し、作成。
ステータスが成功になれば完了。

2. OCI側の構築

前提条件

・VCN(ここでは、vcn-dg(10.0.0.0/16))を作成済みであること。
・インスタンス(vm-oci (10.0.0.3) )を作成、OCIのインスタンス管理画面上でセカンダリvNICを追加していること。

2-1. セカンダリvNICの設定

プライベートサブネット側のvNICの設定を行う。OCIのインスタンス管理画面上でセカンダリvNICを追加してもインスタンスには認識されていない仕様のため、インスタンスにsshでログインし、vNICを認識させる必要がある。

rootユーザになり、現在の設定を確認します。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 02:00:17:0B:84:F5 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.5/24 brd 10.1.0.255 scope global dynamic ens3
       valid_lft 52752sec preferred_lft 52752sec
3: ens5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:17:01:36:c5 brd ff:ff:ff:ff:ff:ff

ens5が今回追加したvNICで、ステータスがDOWNになっている。
永続的にvNICを稼働させるために設定ファイルの編集する。

# cd /etc/sysconfig/network-scripts/
# ls -l
-rw-r--r--. 1 root root   168 Oct 27 02:02 ifcfg-ens3
-rw-r--r--. 1 root root   254 Aug 19  2019 ifcfg-lo
lrwxrwxrwx. 1 root root    24 Sep 17 00:20 ifdown -> ../../../usr/sbin/ifdown
-rwxr-xr-x. 1 root root   654 Aug 19  2019 ifdown-bnep
・・・・・・・・・

ifcfg-<デバイス名>がvNICの設定ファイル。
既存のifcfg-ens3をコピーし、ifcfg-ens5を作成、編集する。

# cp /etc/sysconfig/network-scripts/ifcfg-ens3 /etc/sysconfig/network-scripts/ifcfg-ens5

ens3の設定ファイルを参考に編集する。

# vi ifcfg-ens5
NAME="ens5" 
DEVICE="ens5"
ONBOOT=yes
NETBOOT=yes
HWADDR=00:00:17:01:36:C5
BOOTPROTO=static
PREFIX=24
IPADDR=10.0.1.2
MTU=9000
TYPE=Ethernet
NM_CONTROLLED=no

編集後、サーバを再起動することで完了。

# reboot

vNICが認識されているか確認。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 02:00:17:0b:84:f5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.3/24 brd 10.0.0.255 scope global dynamic ens3
       valid_lft 85269sec preferred_lft 85269sec
3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 00:00:17:01:36:c5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.2/24 brd 10.0.1.255 scope global ens5

ステータスがUPされているので問題なし。

2-2. インスタンスのルーティングの設定

ens3、ens5ともにルーティング設定をする。
まず初めに現在のルーティングを確認する。

$ routel
         target            gateway          source    proto    scope    dev tbl
        default           10.0.0.1                                     ens3
      10.0.0.0/ 24                        10.0.0.3   kernel     link   ens3
      10.0.1.0/ 24                        10.0.1.2   kernel     link   ens5
   169.254.0.0/ 16                                   static     link   ens3
   169.254.0.0/ 16                                              link   ens3
   169.254.0.0/ 16                                              link   ens5
.............. 

編集内容
ens3
  ●インターネット(グローバルIP)からのルーティングを追加
ens5
  ●デフォルト・ゲートウェイをens3からens5に変更
  ●Azure側の仮想ネットワークへのルーティングを追加

/etc/sysconfig/network-scripts/にroute-<インターフェイス名>でファイルを作成する。

ens3のルーティング

# cd /etc/sysconfig/network-scripts
# touch route-ens3
# vi route-ens3

↓↓ route-ens3に以下を記述。※xxx.xxx.xxx.xxxはグローバルIPアドレス。
~~~
xxx.xxx.xxx.xxx via 10.0.0.1 dev ens3
~~~
同様にens5のスクリプトも作成する。

ens5のルーティング

# touch route-ens5
# vi route-ens5

route-ens5に以下を記述。※192.168.0.0/16はAzure仮想ネットワークのIPアドレス。

192.168.0.0/16 via 10.0.1.1 dev ens5

続いてデフォルト・ゲートウェイをens5にする。

network-scripts]# vi ifcfg-ens5

ifcfg-ens5の最後の行に、GATEWAY=10.0.1.1を追加する。

.................
GATEWAY=10.0.1.1

サーバを再起動して設定を更新する。

# reboot

再起動後、ルーティングが反映されているか確認する。

$ routel
         target            gateway          source    proto    scope    dev tbl
        default           10.0.1.1                                     ens5 
      10.0.0.0/ 24                        10.0.0.3   kernel     link   ens3 
      10.0.1.0/ 24                        10.0.1.2   kernel     link   ens5
   169.254.0.0/ 16                                   static     link   ens3 
   169.254.0.0/ 16                                              link   ens3
   169.254.0.0/ 16                                              link   ens5 
..............

gatewayが「10.0.0.1」から「10.0.1.1」になっていることが確認出来たら完了。

2-3. サービスゲートウェイの作成

[ネットワーキング]>[作成したVCN]>[リソース]>[サービスゲートウェイ作成]

(VCN作成時にデフォルトで作成されている場合もある。)

名前:任意(ここでは、sg-connect-drg)
コンパートメント:所属させたいコンパートメント
サービス:All IAD Services In Oracle Services Network

2-4. 動的ルーティングゲートウェイ (DRG) の作成

[ネットワーキング]>[動的ルーティングゲートウェイ]>[作成]。
ここはコンパートメントと名前を入力するだけ。
DRG作成後、VCN(ここでは、vcn-dg)にアタッチする。

名前:任意(ここでは、drg-connect-sg)
宛先CIDR : Azure仮想ネットワークのIPアドレス(ここでは、192.168.0.0/16)

2-5. ルート表の作成

サービスゲートウェイ、動的ルーティングゲートウェイ、プライベートサブネットに関連付けるルート表を作成する。
[ネットワーキング]>[作成したVCN]>[リソース]>[ルート表]>[ルートルールの追加]。

サービスゲートウェイ用ルート表

以下のルート表を作成する。
宛先としてAzureの仮想ネットワークのアドレス範囲を指定する。

※作成後、サービスゲートウェイのリソースへ移動し、ルート表を関連付ける。

動的ルーティングゲートウェイ用ルート表

以下のルート表を作成する。

※作成後、動的ルーティングゲートウェイのリソースへ移動し、ルート表を関連付ける。

プライベートサブネット用ルート表

以下のルート表を作成する。

2-6. セキュリティリストの作成

プライベートサブネット用セキュリティリスト

以下のセキュリティリストを作成する。

パブリックサブネット用セキュリティリスト

以下のセキュリティリストを作成する。

2-7. FastConnectの作成

[ネットワーキング]>[FastConnect]>[作成]
パートナーとしてMicrosoft Azure:ExpressRouteを選択する。

次に進み、以下を項目の入力する。

名前:任意(ここでは、fc-oci-azure)
コンパートメント:作成するコンパートメント
仮想回線タイプ:プライベート仮想回線
動的ルーティングゲートウェイ:作成したDRGを選択(ここでは、drg-oci-azure)
帯域幅:Azure側で設定した値に合わせる。(1Gbps)
パートナーサービスキー:ExpressRouteで表示されているものを貼り付ける。( ※「1-5. ExpressRouteの作成」を参照 )
顧客プライマリBGP IPV4アドレス:10.200.0.22/30
ORACLEプライマリBGP IPV4アドレス:10.200.0.21/30
顧客セカンダリBGP IPV4アドレス:10.200.0.26/30
ORACLEセカンダリBGP IPV4アドレス:10.200.0.25/30

FastConnect作成後、ステータスが成功、BGP回線が稼働中になっていれば完了。

3. 接続の確認

Azure (192.168.0.6) ⇔ OCI (10.0.1.2) で相互にping応答を確認する。

OCI-Linux ⇒ Azure-Windowsに対して

Azure-Windows ⇒ OCI-Linuxに対して

それぞれで応答が確認できたので、接続成功。

後編では、DataGatewayインストール~OAC-SQL Serverの接続までを行う。

●参考

・Azure-OCI間接続 : https://docs.oracle.com/ja/solutions/learn-azure-oci-interconnect/index.html#GUID-A3BCA684-47C4-4644-90E8-99A7E3E0A6FE

・ExpressRoute作成 : https://docs.microsoft.com/ja-jp/azure/expressroute/expressroute-howto-circuit-portal-resource-manager