IBM Cloud VPC ALB経由でClassic Infrastructureのベアメタルサーバーに接続する

# はじめに
Application Load Balancerとは、[Docs](https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-vs-elb&locale=ja#load-balancer-alb)内に以下のように記述されています。
>IBM Cloud は、Secure Sockets Layer (SSL) オフロードをサポートするパブリック ALB とプライベート ALB を提供します。 ALB は、 IBM Cloudでレイヤー 7 およびレイヤー 4 のロード・バランシングを提供しますが、ALB は主にレイヤー 7 の Web ベースのワークロードを対象としています。 ALB は、 IBM Cloud Direct Link を介してバックエンド・プール・メンバーとして接続された仮想サーバー・インスタンス、ベアメタル・サーバー・インスタンス、および Power Systems Virtual Server インスタンスをサポートします。

IBM CloudのALBは、バックエンドサーバーとして任意のIPアドレスを指定することで、VPC外部のサーバーに対しても割り振りが可能です。



# 検証内容
今回の検証では、VPC内の仮想サーバーからALBを経由してClassicのベアメタルサーバーにアクセス出来ることを確かめます。
![スクリーンショット 2024-11-13 13.29.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/d2c8e298-9f29-cecf-dd70-dded69de0d9f.png)
![スクリーンショット 2024-11-13 13.30.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/580923a7-1d01-9c02-18e1-add5ac2e5d32.png)



# 検証環境
## Client PC
OS: macOS Sequoia 15.0.1
## Virtual Server Instance for VPC 
* Location
リージョン：Tokyo 2
* Details
インスタンス名：qiita-vsi
* Image and profile
CentOS Stream 9 - Minimal Install (amd64)
2 vCPU, 4 GiB, 4 Gbps
* Networking
VPC名: vpc-xx-xx
Virtual network interface

## Baremetal Server for Classic
* Server Details
Location: Asia-Pacific TOK02
Host name: baremetal-qiita.ibmcloud.private
* Server Profile
Intel Xeon E3-1270 v6
4 Cores, 16 GB RAM
* OS
Windows Server 2022 Standard Edition (64 bit)
* Network interface
100 Mbps Redundant Private Network Uplinks
* Private VLAN
tok02.bcr02a.911

## Load Balancer for VPC
* Load Balancer Type
Application Load Balancer
* Location
Asia Pacific Tokyo
* Details
name: qiita-alb
Type: Private
DNS Type: Public



## Transit Gateway
* Configuration
name: qiita-tgw
* Location 
Local routing, Tokyo
* Connetion1
Classic infrastructure
* Connetion2
VPC, vpc-xx-xx

# 前提
* VSI, BMS, ALB, TGWの各種リソースはあらかじめ作成済み
* VPN for VPCの環境セットアップ済み

## 1.VPCのVSIへアクセスできることを確認する
クライアントPCから、VPN for VPCを使用してVSIにアクセス出来ることを確認します。VPN for VPCとはVPNのマネージドサービスで、Client-to-siteとSite-to-siteの2種類があり、今回はClient-to-siteを利用しています。

:::note info
VPN for VPCの準備については[こちら](https://qiita.com/y_tama/items/16987e07842262cd9068)の記事を参考にしました。
:::
pingでVSIのReserved IPアドレスに疎通確認します。
![スクリーンショット_2024-10-08_10_20_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/8bc9717b-0f36-be57-cce4-09e2b8efa5f2.png)
これでVPCのVSIにアクセス出来ていることが確認できました。
## 2. Transit Gatewayの設定
ClassicのBMSとVPCのVSIを繋げるために、Transit Gatewayに接続先(Connection)を追加しておきます。
![スクリーンショット_2024-11-05_10_13_39-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/e1747680-d8fd-fec0-1532-5e1288660c4f.png)

## 3.ALBのBackend poolにClassic BMSを登録
同一RegionのVPC上からのみアクセス出来るPrivateタイプのALBを事前にオーダーしてあります。アクセスを割り振る先のBack-end poolや、アクセスを受けるFront-end listenerなどを設定します。
### Back-end poolの作成
![スクリーンショット_2024-10-08_10_39_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/2c6e4cf2-3d52-8a28-4fbb-55128b3217bb.png)

"Create"からBack-end poolを作成します。
![スクリーンショット_2024-10-15_9_09_48-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/a9ca4b0d-d0cf-c3db-0cb9-df4831704160.png)
Back-end poolのプロトコルやヘルスチェック方法を設定します。
![スクリーンショット_2024-10-15_9_14_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/40c09257-b9ea-fd9b-288a-dff09bc4dcf6.png)

Backend poolが作成されたら、割り振り先のサーバーインスタンスを登録します。
![スクリーンショット_2024-10-15_9_44_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/8d807b57-3012-f286-5bdf-84138786fea6.png)

"Compute device"にはVPCのVSI/BMSを追加することができます。"Other devices"からは、任意のIPアドレスを指定することで、VPC外部のサーバーに対しても割り振りすることができます。今回はClassicのBMSにアクセスさせたいので、"Other devices"にBMSのIPアドレスとサーバーポートを指定します。
![スクリーンショット_2024-10-15_8_57_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/65e55eaa-6930-8937-4a87-789dca2036ae.png)



### Front-end listenerを作成
Front-end listenerを作成します。
![スクリーンショット_2024-10-15_9_01_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/767ea4b4-d1d0-e3d5-cb13-a80e7e85f62d.png)
![スクリーンショット_2024-10-15_9_00_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/bd17c572-ff45-f1b9-7ece-9bd702cb0263.png)

Front-end listenerの作成が完了すると、Back-end poolのヘルスチェックが完了し、Health statusが正常になりました。
![スクリーンショット_2024-10-15_9_06_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/743a5b7e-5c94-5143-f73b-3be9f070c202.png)


## 4.VPCのVSIからClassicのBMSに疎通確認
クライアントPCからVSIにログインし、ALBにアクセスしてみます。

![スクリーンショット_2024-10-15_9_08_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/3483109f-f772-7b29-1cf9-7dbb39e9abd0.png)

HTTPリクエストの返答が返ってきました。VSIからALBを経由してClassicのWindows Serverにアクセス出来たことが確認できました。