IBM Cloud：IBM Cloud Internet Services (CIS) とは

# 1. IBM Cloud Internet Services (CIS) とは
IBM Cloud Internet Services (CIS) を紹介します。後半では、CISのグローバル・ロード・バランサー機能を実際に利用した時の手順をまとめています。

## CIS 概要
IBM Cloud Internet Services (CIS) とは、アプリケーションの「セキュリティー」「可用性」「パフォーマンス」を向上させる機能をオールインワンで利用できるサービスです。
Cloudflare社のデータセンターで提供されているサービスを IBM Cloud から利用できます。

## CISが必要になる背景
WEBシステムやWEBアプリケーションを構築し、それをインターネットに公開する際には、「セキュリティー」「可用性」「パフォーマンス」の観点で対策を講じる必要があります。

必要な対策を個別に実現しようとすると、様々なサービスを個別に選択し、実装しなければなりません。アーキテクチャーを検討する上でも、非常に複雑になり手間がかかってしまいます。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555718/c54dedd1-9e60-1eff-51e4-75e8f1bd6c22.png">

<br>

CISは、「セキュリティ」「可用性」「パフォーマンス」の観点からWEBシステムやWEBアプリケーションに求められる機能をオールインワンで提供します。つまりCISを利用すれば、必要な対策を一つにまとめて効果的に実現することが可能です。



## CISの機能
大きく4種類に分けられます。

**1. セキュリティー強化の機能
2. 信頼性(Reliability) を実現する機能
3. パフォーマンス向上のための機能
4. ネットワーク・エッジ機能**


詳細は以下の IBM Cloud 資料でご確認ください。
➡️ [IBM Cloud 資料：IBM Cloud Internet Services について](https://cloud.ibm.com/docs/cis?topic=cis-about-ibm-cloud-internet-services-cis&locale=ja#cis-performance-features)


# 2. IBM Cloud Internet Services (CIS) を使ってみる
CISの信頼性の機能である **グローバル・ロード・バランシング機能** を使ってみました。

CISでGlobal Load Balancer (GLB) を構成してルーティングを行うことで、可用性の向上やレイテンシの低減を実現できます。イベントサイトや e-コマースのサイトなど、アクセスが集中しても安定したパフォーマンスを確保したいWEBシステムを運用する時に便利な機能です。

## 前提
事前に IBM Cloud VPCで２台の仮想サーバーを異なるゾーンに作成して、各仮想サーバーでWEBサイトを作成・公開しました。

この２台の仮想サーバーをCISのグローバル・ロード・バランサー（GLB）に登録し、CISを介してインターネットからアクセスできるようにします。
これにより、トラフィックを効果的に分散し、サービスの安定性を確保できます。１台の仮想サーバーが停止しても、もう１台が稼働することで、システムの運用を継続できるような構成です。


:::note info
新たに CIS の利用を開始する場合の手順や初期設定については以下をご参照ください。
➡️ [IBM Cloud Internet Services (CIS)を使ってみた（オーダー・初期設定）](https://qiita.com/y_tama/items/9151b4c981abbb65c53d)
:::



## Global Load Balancer (GLB) の構成
IBM Cloud 資料の手順に従って構成します。
https://cloud.ibm.com/docs/cis?topic=cis-configure-glb

下記記事もご参照ください。
[IBM Cloud Internet Services (CIS)を使ってみた（Global Load Balancer）](https://qiita.com/y_tama/items/7e1ddd5dc94990835311)

<br>

グローバル・ロード・バランシング機能には以下３つの要素があります。
- ロード・バランサー（Load Balancers）
- 起点プール（Origin Pools）
- ヘルス・チェック（Health Checks）

<br>
ヘルス・チェック > 起点プール > ロード・バランサー の順に設定します。

**１）ヘルス・チェックの作成**
今回は既存のヘルス・チェックを利用するためスキップします。

**２）起点プールの作成**
２台の仮想サーバーを起点とする、起点プールを構成します。

:::note info
- **起点プール** とは、ロード・バランサーがアクセスを分散させる先となる、いくつかのサーバーのグループのことです。
- **起点** は、起点プールに含まれる個々のサーバーのことを指します。通常は、これらのサーバーが同じコンテンツやアプリケーションを提供するように構成します。
:::

<br>

![スクリーンショット 2023-12-06 19.36.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555718/24741396-ed88-8347-0f17-9d1f69baa465.png)

![FireShot Capture 077 - Cloud Internet Services - IBM Cloud - cloud.ibm.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555718/2b1fb246-ebb1-34a6-637b-eae35cc2bcab.png)


* **起点プール名**：識別しやすい名前をつけました。
* **起点名**：「起点」である２つの仮想サーバーに対応する名前にしました。
* **起点アドレス**：仮想サーバー・インスタンスの浮動IPを入力します。
* **重み**：トラフィック配分時の各起点の優先度や負荷の割合を調整できます。今回は２つの起点に平等に割り振るため、２つとも１にしました。
* **ヘルス・チェック**：「既存のヘルス・チェック」を選択し、使いたいヘルス・チェックを設定します。

保存をクリックして、起点プールの作成は完了です。
<br>

**３）ロード・バランサーの作成**

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333535353731382f37313133393363652d623232612d363933352d646536322d6231353733623639376264382e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555718/72189882-b16d-dfcb-b513-06817778e276.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555718/740d86fe-e775-8429-3cc5-3d42e9efbf00.png)

* **ロード・バランサー名**：ここで入力した名前がアクセスする時のURLになります。
* **TTL (Time to Live)**：ロード・バランサーが返すDNSエントリーの有効期間を指定できます。
* **トラフィック・ステアリング**：ロード・バランサーによるルーティングのポリシーを選択できます。
* **地理的経路**：「経路の追加」から先ほど作成した起点プールを追加します。

作成をクリックして、ロード・バランサーの構成が完了しました。


## 動作確認
ロード・バランサーは、障害が発生した場合に自動的に別のサーバーにトラフィックをルーティングする**フェイルオーバー機能**を持っています。これにより、障害が発生してもサービスの中断を最小限に抑えられます。

CISに登録した２台の仮想サーバーについて、１台を故意に停止して、システムが障害に耐えられるかどうかテストしてみたいと思います。

仮想サーバー①：vsi-0821-aono1 
仮想サーバー②：vsi-0821-aono2 
<br>

ロード・バランサーのFQDNを使ってサーバーにアクセスします。
**仮想サーバー①** のコンテンツが返ることを確認しました。

![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555718/d0e7f4ef-67c4-3f13-3595-c464d10afbfe.png)

**仮想サーバー①** を停止します。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555718/f123ac2a-99d3-432a-50a8-826f5deb68e8.png">

先ほどと同じアドレスでサーバーにアクセスします。
**仮想サーバー②** のコンテンツが返ってきました。

![image (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555718/7398b7bd-dc39-0de4-ebf3-4e3680b9c8a7.png)

仮想サーバー①が停止しても、仮想サーバー②が稼働してサービスを継続できることが確認できました。


# 3. 参考
- IBM Cloud 資料：[IBM Cloud Internet Services の概説](https://cloud.ibm.com/docs/cis?topic=cis-getting-started)
- Cloudflare：[IBM Cloud Internet Services](https://www.cloudflare.com/ja-jp/integrations/ibm-cloud-internet-services/)
- Qiita：[IBM Cloud Internet Services (CIS) 関連記事（目次）](https://qiita.com/y_tama/items/a3c409aa58933c5bbbe4)
- Qiita：[CIS(IBM Cloud Internet Service)についてのFAQ](https://qiita.com/testnin2/items/bfa08112616ebdfb5244#3-3-global-load-balancer)