【OCI】フレキシブル・ロード・バランサ(FLB)のログの設定方法、モニタリング

# はじめに
Oracle Cloud Infrastructure(OCI)には複数のサーバに対して自動トラフィック制御を提供するロード・バランサ(LB)という機能がマネージドで利用出来ます。
この機能によって、拡張性や可用性を向上させることが可能になりますが、今回はそのLBに対してログを取得し、ログの確認(モニタリング)ができるまで実施したいと思います。


また、OCIにはロード・バランサが２種類提供されています。
- フレキシブル・ロード・バランサ（FLB）
    - プロキシ型
    - レイヤ7(http, https)での制御が可能
- ネットワーク・ロード・バランサ（NLB）
    - パススルー型

今回はフレキシブル・ロード・バランサ（FLB）に対してログを取得し、モニタリングをするまでを実施します。

下記が構成イメージとなります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/3776d997-28a6-cd4e-90c5-127ecfa26c80.png)

# Webサーバの作成
始めにLBにぶら下がるWebサーバをComputeで作成します。
Computeの作成方法やセキュリティリストの設定方法は割愛しますが、今回はhttp(80 Port)前提で作成します。
下記チュートリアルを参考にWebサーバを作成ください
https://oracle-japan.github.io/ocitutorials/intermediates/using-load-balancer/

## Web Serverの構築
＊今回２台分作成します。OSはOracleLinux8

firewalldの設定と、index.htmlファイルの作成
```shell
$ sudo firewall-cmd --add-service=http --permanent #firewalldにhttpを許可
$ sudo firewall-cmd --reload #設定を反映
$ sudo yum -y install httpd
$ sudo systemctl start httpd
```
index.htmlの中身をそれぞれ下記のように設定

- １台目
    ```shell
    $ sudo sh -c 'echo "Web Server 1 (host:`hostname`)" > /var/www/html/index.html'
    ```
- ２台目
    ```shell
    $ sudo sh -c 'echo "Web Server 2 (host:`hostname`)" > /var/www/html/index.html'
    ```





パブリックIPからhttp(httpsでは無い)にアクセスすることで、下記のようにページが表示されることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/c164c004-4c1b-5eaf-f67d-280f787c993b.png)


# フレキシブル・ロード・バランサの作成

- ロード・バランサの作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/1ceab922-67b9-6db6-25ed-6f7b29f45da7.png)

- LB名と、タイプの選択（今回はパブリック）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/25e88b74-9eab-cc7b-a0d4-c0d223edbf6b.png)
    
- フレキシブル・シェイプの選択
 単位は任意で構いません
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/ce7fcc0d-d87f-9e62-1884-63e4e10e5a36.png)

- LBを配置するネットワークの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/0afc8fbd-fc34-7afb-ead6-b9b9c70768b6.png)

- バックエンドの選択
ポリシーは重み付けラウンド・ロビン
バックエンドサーバは先程作成した２台のWebサーバを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/fd0552ae-8546-5098-0423-8fb7fa0a747a.png)

- ヘルスチェックポリシー
今回はデフォルトのままでOK
プロトコルをhttpsなどにする場合や、正常性確認の感覚を短くしたい場合はこちらで設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/bdff1b86-3afc-3094-4bea-a279f240e1ec.png)

- リスナーの構成
HTTPを選択する。FLBが受診するプロトコルを指定することが出来る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/9329b376-803b-6b66-1fe5-8e715587f9c4.png)

- ロギングの管理
作成するLBのログ設定をこちらで実施することができます。

    - エラー・ログ
ログ・グループは今回新規で作成していますが、必要に応じて既存のロググループを選択頂いても構いません
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/4dd15e95-e00c-6d15-9a33-728f2de0ed99.png)

    - アクセス・ログ
こちらも今回は有効にしておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/2bbbff3b-4393-912f-8a4f-06351ad5a40c.png)

上記設定をもってFLBの作成が完了する

ヘルスがOKになっていること、ログが有効になっていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/bc252e2a-4eac-2743-4301-72186035464e.png)

FLBのパブリックIPアドレスに対してアクセスすることで、先程のWebサーバがランダムに接続されることを確認してください



# ログ設定・モニタリング

今回は作成時にログを有効化させているため設定は不要ですが、
リソース内のログ画面を選択頂くことで、ログの有効化・無効化の確認が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/bcbe3652-798a-f85a-411f-8897ae685f7c.png)

### ログ名

- アクセス・ログ: アクセスがあった際のログを確認することができます
    - 下記のように、LBへアクセスがあった場合のログを期間を指定して出力させることが可能です
     ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/27239a2d-85f0-f60a-3e2b-7ab501ff2a18.png)



- エラー・ログ: エラーがあった際のログを確認することができます
    - 下記のように、エラーがあった際のログが出力されます。今回はLB配下のVMを1台停止させた場合のログが出力されています。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/b3a4d59a-9e0c-69ad-8ca5-cdeee98711e4.png)

### ログ・グループ
- 指定したロググループに含まれているログををまとめて表示可能です（今回の場合はアクセスログ、エラーログがまとめて記載されている事がわかります）
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/a33fa649-46eb-1e9f-b5cf-9cd66d2b4db1.png)

各種ログの見方については[ロード・バランサ・ログの詳細](https://docs.oracle.com/ja-jp/iaas/Content/Logging/Reference/details_for_load_balancer_logs.htm)をご確認ください。








# まとめ

ロードバランサにログ設定を付与することで、アクセス時やエラー時のログが格納されることが確認できました。
OCIのロギング機能を用いることで、ロードバランサだけではなく、他のリソースに対してもログを取得し統合監視させることも可能になります。（[参考](https://oracle-japan.github.io/ocitutorials/intermediates/using-logging/
)）



# 参考

https://speakerdeck.com/ocise/ociji-shu-zi-liao-rodobaransa-gai-yao

https://docs.oracle.com/ja-jp/iaas/Content/Balance/Concepts/balanceoverview.htm

https://docs.oracle.com/ja-jp/iaas/Content/Balance/Tasks/managingloadbalancer_topic-Logging.htm

https://docs.oracle.com/ja-jp/iaas/Content/Logging/Reference/details_for_load_balancer_logs.htm

https://oracle-japan.github.io/ocitutorials/intermediates/using-logging/