LoginSignup
11
2

More than 1 year has passed since last update.

オンプレミスやPowerVSからDirect Link 2.0越しにVPE経由でICOSのDirect Endpointにアクセスする

Last updated at Posted at 2022-09-12

はじめに

IBM Cloud Object Storageには、3種類のエンドポイントがあります。
https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-endpoints
・Public Endpoint
・Private Endpoint
・Direct Endpoint

Private EndpointまたはDirect Endpointを使うと、プライベートネットワークを介してICOSとデータをやり取りできます。セキュアで、かつ、インターネット側へのアウトバウンド転送費用が発生しないため、オンプレミスからDirect Link経由でICOSのプライベート側にアクセスしたいというリクエストが以前からありました。
これまで、オンプレミスからICOSへは直接アクセスできなかったため(ICOSは利用者のサブネットでなく共有サービスセグメントに位置するため、そこまでのルーティング情報がオンプレミス側に広告されない)、IBM Cloud内に立てたreverse proxyを介してアクセスする必要がありました。
https://cloud.ibm.com/docs/direct-link?topic=direct-link-using-ibm-cloud-direct-link-to-connect-to-ibm-cloud-object-storage

image.png

また、PowerVSからICOSにアクセスする要件も多くありますが、上記と同様に直接は行けないため、x86側にreverse proxyを立てる必要がありました。
参考: https://qiita.com/y_tama/items/bb9c553ba8f35f12f8a4

今回は、Virtual Private Endpoint(VPE)という、ICOS等のIBM CloudサービスへのエンドポイントをユーザーのVPCサブネット上に作成できるサービスの新機能についてです。
https://cloud.ibm.com/docs/vpc?topic=vpc-about-vpe

これまでVPEでは、同じVPCからの通信のみ可能で、Direct Link越しやTransit Gateway越しにはアクセスできませんでした。
今回の新機能として、Direct Link 2.0越しやTransit Gateway越しにVPEにアクセスできるようになったため、利用者自身でreverse proxyを構成する必要が無くなりました。
このVPEの新機能は、東京・大阪を含む、MZRで対応しています。

Direct Link 2.0越しやTransit Gateway越しにVPEにアクセスする機能はTCPのみサポートしています。NTPのようなUDPを使うプロトコルは対応していませんのでご注意ください。
https://cloud.ibm.com/docs/vpc?topic=vpc-end-to-end-private-connectivity-vpe&interface=cli

Only TCP services are supported.

構成概要

概要図は下記となります。
今回は接続元としてPowerVSを使用します。オンプレミスから接続する場合も同様の構成で可能です。

image.png

手順の概要は下記となります。

・PowerVSとVPCをCloud Connections(Direct Link2.0)+Transit Gatewayで接続
・ICOSと紐づけたVPEをオーダー
・DNS ServicesでCustom Resolverを作成
・PowerVSのDNS参照先を上記で作成したCustom Resolverに設定
・PowerVS(AIX)上でICOSクライアント(今回はs3cmd)をセットアップ。接続確認。

構成詳細

PowerVSとVPCをCloud Connections(Direct Link2.0)+Transit Gatewayで接続

PowerVSとVPCをCloud Connections(Direct Link2.0)+Transit Gateway経由で接続します(Transit Gatewayは必須ではありませんが、経路情報を確認できて便利なので利用します)。
https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-cloud-connections

ご参考に、PowerVSをTransit Gatewayに接続する画面キャプチャ入りの手順は下記です。(※下記では2箇所のPowerVSを繋いでいますが、今回は1箇所でOKです。)
https://qiita.com/y_tama/items/7000125129f817209796

PowerVSからのDirect LinkとVPCがTransit Gatewayに接続され、双方のルーティング情報が伝搬されている事を確認します。

image.png

image.png

PowerVSのLPARでパブリックIPアドレスを有効にしていると、デフォルトゲートウェイがパブリック側を向いています。VPC宛の通信がプライベート側ゲートウェイにルーティングされるようAIXに静的経路を設定します。

# netstat -r
Routing tables
Destination        Gateway           Flags   Refs     Use  If   Exp  Groups

Route tree for Protocol Family 2 (Internet):
default            192.168.167.65    UG        8     39948 en0      -      -   
127/8              localhost         U         5      6771 lo0      -      -   
172.16.10/24       172.16.52.1       UGS       2     62784 en1      -      -   
172.16.20/24       172.16.52.1       UGS       0        34 en1      -      -   
172.16.30/24       172.16.52.1       UGS       0        51 en1      -      -   
172.16.52.0        172.16.52.253     UHSb      0         0 en1      -      -   =>
172.16.52/24       172.16.52.253     U         3         0 en1      -      -   
...

ICOSと紐づけたVPEをオーダー

Virtual Private Endpointをオーダーします。
https://cloud.ibm.com/vpc-ext/provision/endpointGateway

VPEに紐づけるサービスとしてICOSを選択します。
image.png

今回は大阪RegionalのICOSに紐づけるため、大阪RegionalのDirect Endpoint(s3.direct.jp-osa.cloud-object-storage.appdomain.cloud)を選択します。

image.png

ICOSのEndpoint一覧は下記にあります。
https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-endpoints#endpoints-region

VPEに紐づけるVPC上のIPアドレスは後から設定します。

image.png

作成されたVPEに対し、各ゾーンから1つずつサブネットを選び、紐づけます。この設定により、1つのゾーンに障害があった場合も、残ったゾーンのVPEを使用してICOSにアクセスすることが可能となります。

image.png

VPEにはSecurity Groupsが適用されるため、使用する通信を許可する設定を行います。
今回はPowerVSからICOSへのREST APIの通信なので、PowerVSのサブネット範囲からのTCP 443を許可します。

image.png

DNS ServicesでCustom Resolverを作成

PowerVSからICOSを使用するときは、Direct EndpointのFQDN(今回は大阪なので、s3.direct.jp-osa.cloud-object-storage.appdomain.cloud)を指定します。

パブリックIPを有効にしたPowerVSのデフォルト状態では、このFQDNに対する名前解決は一般のリゾルバが利用され、161.26.x.xが返ります。このIPアドレスは、IBM CloudがプライベートNWに使用しているIPアドレス範囲ですが、PowerVSからは直接ルーティングされないため、このままではアクセスすることができません。

PowerVSのAIXでのデフォルトの名前解決結果(パブリックIPを有効にしたLPAR)
# nslookup s3.direct.jp-osa.cloud-object-storage.appdomain.cloud
Server:         9.9.9.9
Address:        9.9.9.9#53

Non-authoritative answer:
Name:   s3.direct.jp-osa.cloud-object-storage.appdomain.cloud
Address: 161.26.0.47
#

そこで、DNS Servicesの機能である、Custom Resolverを作成し、PowerVSのAIXのDNS参照先をCustom Resolverに設定します。Custom ResolverにはVPEの設定が反映されているため、s3.direct.jp-osa.cloud-object-storage.appdomain.cloudの名前解決要求に対し、VPEのIPアドレスを返してくれます。

custom resolverを使わずに、AIXのhostsファイルでICOSのFQDNをVPEのIPアドレスに名前解決する(VPEを切り替えたい時はhostsファイルを手動で書き換える)事も可能と思いますが、今回は1つのVPEが使えなくなった際に切り替えを自動化する観点でcustom resolverを使用しています。

まず、カタログからDNS Servicesを作成し、次に、作成されたDNS Servicesの中でCustom Resolverを作成します。

DNS ServicesやCustom Resolverの価格については下記をご確認ください。
https://cloud.ibm.com/docs/dns-svcs?topic=dns-svcs-pricing

image.png

image.png

image.png

image.png

ユーザーのVPCのサブネット上に、PowerVSからアクセス可能なCustom Resolverが作成されます。

image.png

PowerVSのDNS参照先を上記で作成したCustom Resolverに設定

PowerVSのAIXのDNS参照先として、上記で作成したCustom ResolverのIPアドレスを指定します。

# cat /etc/resolv.conf 
#nameserver 127.0.0.1
#nameserver 9.9.9.9
nameserver 172.16.10.8
nameserver 172.16.20.5
# 

Custom ResolverはVPEの設定が反映された名前解決を行うため、ICOSのDirect EndpointのFQDNへの名前解決要求に対し、VPEのIPアドレスを返します。

PowerVSのAIXでの名前解決結果(custom resolverを参照)
# nslookup s3.direct.jp-osa.cloud-object-storage.appdomain.cloud
Server:         172.16.10.8
Address:        172.16.10.8#53

Name:   s3.direct.jp-osa.cloud-object-storage.appdomain.cloud
Address: 172.16.10.11
#

試しにVPEにアタッチするIPアドレスを削除すると、一定時間(おそらくDNSのTTL)経過後、残っているゾーンのIPアドレスを返すようになります。

上記でcustom resolverが返していた172.16.10.11をVPEから削除。
image.png

一定時間経過後、残っているゾーンのIPアドレスを返すようになる。

# nslookup s3.direct.jp-osa.cloud-object-storage.appdomain.cloud
Server:         172.16.10.8
Address:        172.16.10.8#53

Name:   s3.direct.jp-osa.cloud-object-storage.appdomain.cloud
Address: 172.16.30.6

#

PowerVS(AIX)上でICOSクライアント(今回はs3cmd)をセットアップ。接続確認。

AIXで使うICOSクライアントツールとして、今回はs3cmdを使います。yumが使える環境であれば下記で導入できます。

# export PATH=$PATH:/opt/freeware/bin
# yum install python-pip -y
# pip install s3cmd

設定ファイル(.s3cfg)を設定します。access_keyとsecret_keyは、ICOSのHMACクレデンシャルを使います。

# cat .s3cfg 
[default]
access_key = xxxxxxxxxxxxxxxxxxxxxxxxx
secret_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
host_base = s3.direct.jp-osa.cloud-object-storage.appdomain.cloud
host_bucket = %(bucket)s.s3.direct.jp-osa.cloud-object-storage.appdomain.cloud
# 

s3cmdを使ってICOSにアクセスできている事を確認します。

# s3cmd ls
2021-11-08 15:04  s3://bucket-osa-20211109
# s3cmd ls s3://bucket-osa-20211109
2022-09-12 11:54   1073741824  s3://bucket-osa-20211109/tmpfile
2022-09-12 11:57   1073741824  s3://bucket-osa-20211109/tmpfile2
# 

今回の構成で使ったVPEもCustom Resolverもマネージドサービスのため、これまでのように手動でreverse proxyを構成する事なくICOSにアクセスできるようになり、かなり便利に使えるようになったと思います。

以上

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2