#●目的
Azure上のデータをOracle Analytics Cloud (以下OAC) でインターネットを経由せずに参照することを目的としました。Azure-OCI間をFastConnectで接続し、Oracle Service NetworkからAzureインスタンスにアクセスします。
前半では、Azure-OCI間の相互接続までを記載します。なお、DataGatewayインストール ~ OACからのリモート接続を参照したい方は[後編][link-1]をご覧ください。
[link-1]:https://qiita.com/k20nozawa/items/c8d052cd72c1fc7e99be
#●構成
- 環境情報
- 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の構成:無効
####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に対して
それぞれで応答が確認できたので、接続成功。
[後編][link-1]では、DataGatewayインストール~OAC-SQL Serverの接続までを行う。
[link-1]:https://qiita.com/k20nozawa/items/c8d052cd72c1fc7e99be
#●参考
・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