はじめに
OCIのFLBは、プライベート・ロードバランサとしてインスタンスを作成する際、プライベートIPアドレスを指定することができません。
所属するサブネットのCIDRからランダムでプライベートIPアドレスが割当られます。
しかし、現行システムからLBのIPアドレスを変えられないといった要件等で、IPアドレスを指定の値にしたい場合があります。
今回は、そんな場合に指定のIPアドレスを設定する方法をご紹介します。
概要
FLBで割当られるIPアドレスは以下2つです
- Floating IP for VIP private-vip on LB(サービス提供IPアドレス)
- VNIC for LB
以前は3つのIPアドレスが割当られていましたが、2022年8月以降に作成されたFLBは仕様が変わり2つになりました。
方法としてはスマートなやり方があるわけではなく、けっこうな力技です。
以下の流れになります。
- FLBのサブネットを作成する
- 適当なComputeにVNICを追加し、LBサブネットに所属させる
- 追加したVNICにセカンダリ・プライベートIPを追加し、LBサブネットを対象IPアドレスともう一つ任意のIPアドレス以外埋める
- FLBを作成する
- FLBが希望のIPアドレスであれば完了。違う場合はFLBを削除して再作成する
- 3.でサブネットを埋めたセカンダリ・プライベートIPを外す
1. LBのサブネットを作成する
FLB作成時に所属させるサブネットを作成します。要件次第だと思いますが、可能な限り小さい範囲で作成します。(大きくなると大変です)
今回は10.0.10.0/29として、IPアドレス8つの範囲作成します。
なお、各サブネットで3つのIPアドレスが以下のように予約されているので、実際に使えるのは5つになります。
2. 適当なComputeにセカンダリVNICを追加し、LBサブネットに所属させる
適当なComnputeの画面の左下からアタッチされたVNIC
を選択し、VNICの作成
をクリックします。
追加のVNICを作成します。
ここで指定するサブネットは1.で作成したものです。
3. 追加したVNICにセカンダリ・プライベートIPを追加し、LBサブネットを対象IPアドレスともう一つ任意のIPアドレス以外埋める
セカンダリ・プライベートIPアドレスの割当て
をクリックします。
LBに設定したいIPアドレスと、もう一つ任意のIPアドレスを除き、サブネットのCIDR範囲となるIPアドレスを設定していきます。
今回は10.0.10.5をFLBのIPアドレスとすることとし、もう一つを10.0.10.4としてそれ以外のIPアドレスは埋める形とします。
先述の通り、3つのアドレスは最初から予約されているので使えないので、埋めるとこうなります。
- 10.0.10.0:ネットワークアドレス
- 10.0.10.1:デフォルトゲートウェイ
- 10.0.10.2:セカンダリ・プライベートIP
- 10.0.10.3:セカンダリ・プライベートIP
- 10.0.10.4:空き (FLBのNIC for LB用)
- 10.0.10.5:空き (FLBのFloating IP用) ★これをFLBのIPアドレスにしたい
- 10.0.10.6:セカンダリ・プライベートIP
- 10.0.10.7:ブロードキャストアドレス
もしFLBのサブネットのCIDRが大きくなってしまい、IPアドレスを埋めるのが大変という場合はOCI CLIを使ってコマンド実行に変えたり、簡単なスクリプトにすることで作業負荷は軽減できると思います。
また、IPアドレスがたくさんある場合は1つのVNICでは足りないので、複数のVNICを使ってCIDRのIPアドレスを埋めるようにしてください。
4. FLBを作成する
FLBを作成します。FLBの画面からロード・バランサの作成
をクリックし、任意の内容で作成してください。
リクエスト送信後、作成中となります。この時点ではIPアドレスがまだ決まっていないので使用不可
となっています。
5. FLBが希望のIPアドレスであれば完了。違う場合はFLBを削除して再作成する
作成後の画面を確認すると、10.0.10.4でした。ここのIPアドレス割り当てはランダムなのですが、希望のIPアドレスではないので右側の赤い削除
ボタンをクリックしてリトライします。
割当られたIPアドレスは、OCI CLIを使用することで詳細に確認が可能です。
コマンドは以下です。
oci network private-ip list --subnet-id <サブネットのOCID>
また、OCI CLIを利用できる環境が無い場合は、Cloud Shellからも実行が可能です。
Cloud ShellにOCI CLIのコマンドを打ち込んで実行します。
一部分のみの抜粋ですが、結果としては以下のように表示されます。
{
"display-name": "VNIC for LB
"ip-address": "10.0.10.4",
},
{
"display-name": "Floating IP for VIP private-vip on LB
"ip-address": "10.0.10.5",
},
6.サブネットを埋めたセカンダリ・プライベートIPを外す
忘れずに実施してください。
個別にIPアドレスを削除していっても良いですが、不要であればVNIC毎削除で良いです。
最後に
いつかプライベートIPアドレスを指定する機能がFLBにできるまでの暫定的な方法として、ご活用いただけると幸いです。