IBMCloud AutoScale用VPCロードバランサ

##目的
IBMCloudのVPC Gen2環境におけるAutoScale用のロードバランサを導入する
今回は、フロントをHTTPSで受け、オフロードした後にバックエンドをHTTPで受ける構成まで導入する。

##構成
* ローカル端末：macOS Catalina 10.15.6 1台
* プラットフォーム:IBMCloud
    * VPC:ロードバランサー 1サービス
    * 証明書:CertificateManager 1サービス

##証明書の登録

はじめに、フロントをHTTPSで受けるため、SSL/TLS証明書を登録する
サービスから**Certificate Manager**を選ぶ

* リージョンの選択:任意のリージョン
* サービス名:任意名
* リソースグループの選択:自分のリソースグループ
* Endpoints:パブリック側でHTTPSを受けるので**Public and private**を選択

![Certificate_Manager_-_IBM_Cloud.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/eed48e0e-830e-b1c7-7ff9-c7e6c472f794.png)

所有している証明書を登録するので、**インポート**を選択
証明書の発行方法はこちらを参照:[IBM Cloud サーバでLet’sEncrypt証明書発行](https://qiita.com/khoshina/items/e12c196b28a2c48f1b1f)
<font color=red>発行する証明書は、インターネットで公開するFQDNで発行すること</font>
![IBM_Cloud_Certificate_Manager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/669f96fe-bca1-fa08-2fda-776cf1b67f6f.png)

* 名前:任意
* 証明書ファイル:TLS/SSL証明書
* 秘密鍵:任意で登録
* 中間証明書:任意で登録

![IBM_Cloud_Certificate_Manager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/c2535d10-a65b-dc2c-88be-0e17088a144e.png)

##アクセス権の追加(VPC->CertificateManager)
ロードバランサにTLS証明書を登録するには、CertificateManagerへのアクセス許可が必要なため追加する

**管理** -> **アクセス(IAM)**を選択
![IBM_Cloud_Infrastructure-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/01761d86-7170-b21b-068e-7c7ac1695e39.png)

**許可** -> **作成**を選択
![ID_およびアクセス管理_-_IBM_Cloud.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/8a97ed9e-e03d-b881-53c1-3144fc0e49bf.png)

* ソースサービス:**VPC Infrastructure Service**を選択
* リソースタイプ:**Load Balancer for VPC**を選択
* ターゲットサービス:**Certificate Manager**を選択
* サービスアクセス:**ライター**を選択

![ID_およびアクセス管理_-_IBM_Cloud-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/cd2b0ca0-d795-d949-4116-96ed09533abe.png)

##ロードバランサの作成

**VPCインフラストラクチャー** -> **ロードバランサー** -> **作成**を選択
![IBM_Cloud_Infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/93a98c64-64a9-71a2-184b-d7e1f58d00bd.png)

* 名前:任意名
* 仮想プライベートクラウド:自分のVPCを選択
* リソースグループ:自分のリソースグループを選択
* ロードバランサ:HTTPSで受けたものを分散するので、**アプリケーションロードバランサ**を選択

![IBM_Cloud_Infrastructure-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/40a4b84d-a1b7-71d9-33f1-bdf25238e8f8.png)

* Region:デプロイするリージョンを選択
* タイプ:インターネットトラフィックを分散対象とするので、**パブリック**を選択
* サブネット:分散先の仮想サーバインスタンスを含むサブネットを選択

**新規プール**を選択
![IBM_Cloud_Infrastructure-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/d77c44d1-df3c-1ca2-2812-cf0eea1aa550.png)

* 名前:任意名
* プロトコル:バックエンドはHTTPとするため、**HTTP**を選択
* メソッド:分散方式は**ラウンドロビン**を選択
* セッション維持率:**ソースIP**を選択
* ヘルスチェック:変更不要のためそのまま

![IBM_Cloud_Infrastructure_と_Slack_____NAOKI_ERA__ACS-Network_Security__Japan____IBM_Cloud_Platform___3_個の新しいアイテム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/4c61f432-0455-8d0b-9c69-1f91a6e22275.png)

フロントエンドのリスナーを追加するため、**新規リスナー**を選択
![IBM_Cloud_Infrastructure-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/6afafb34-bda4-0edf-aeb2-aa316b12202f.png)

* プロトコル:フロントはHTTPSで受けるため、**HTTPS**を選択
* ポート:443
* バックエンドプール:フロントで受けた後のバックエンドプールを選択
* SSL証明書:CertificateManagerで作成した証明書を選択
ここで、証明書を選択出来ない場合は、アクセス権の追加が間違っている可能性が高いので確認

![IBM_Cloud_Infrastructure-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/3b37885f-633b-ad49-aec9-57cf22575f29.png)

リスナーを保存後、**ロードバランサの作成**を選択

##DNS登録
最後に作成したロードバランサをDNSに登録する。
今回は、alb.xcloudyx.comに来た通信をロードバランサにCNAMEする。

ロードバランサのFQDNを確認する
![IBM_Cloud_Infrastructure-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/acc2ed0b-2050-add1-64cc-c9a1c3eaf9bd.png)

この値をDNSに登録する
<font color=red>ロードバランサFQDNの最後に「.」を忘れないこと</font>
![IBM_Cloud____DNS_Edit_Zone.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/63a54d1e-a02c-caee-aae5-b5715a068eba.png)

ここまで実施すれば、AutoScale用のロードバランサの作成は完了
バックエンドインスタンスの作成は、AutoScaleグループが自動で作成するので、不要です。