はじめに
Proxmoxでロードバランサーを構築してみようの第1回目です
今回はA10 NetworksのvThunder 30日間無料トライアルライセンスを登録した際に閲覧できる「クイック設定ガイド」を参考に構築していきたいと思います
設計/構成

「クイック設定ガイド」を参考に、Thunder ADCの機能を使ってL4仮想IPアドレス(VIP)を設定し、実サーバへロードバランスできるようにします
また今回はProxmoxのSDN機能を使って、Proxmox内に作成したプライベートLAN内/外からVIPにアクセスできるような構成をしていきたいと思います
物理構成
クライアントPC(192.168.100.160) <==> ルータ <==> Proxmoxサーバ(192.168.100.111)
Proxmox VE バージョン
9.0.10
Proxmox VM構成
VMID | NAME | IPアドレス | デフォルトゲートウェイ | 仮想IPアドレス(VIP) |
---|---|---|---|---|
100 | A10vThunder | 10.0.3.11 | 10.0.3.1 | 10.0.3.101 |
210 | WebServer01 | 10.0.3.12 | 10.0.3.1 | |
220 | WebServer02 | 10.0.3.13 | 10.0.3.1 | |
230 | WebServer03 | 10.0.3.15 | 10.0.3.1 | |
300 | Windows11 | 10.0.3.100 | 10.0.3.1 |
Proxmox SDN構成
Simple Zones サブネット:10.0.3.0/24 ゲートウェイ:10.0.3.1 SNAT:[有]
構築/コンフィグ
A10 vThunder Config
!
interface ethernet 1
enable
ip address 10.0.3.11 255.255.255.0
!
!
ip route 0.0.0.0 /0 10.0.3.1
!
slb server RS1 10.0.3.12
port 80 tcp
!
slb server RS2 10.0.3.13
port 80 tcp
!
slb server RS3 10.0.3.15
port 80 tcp
!
slb service-group Service_Group_1 tcp
member RS1 80
member RS2 80
member RS3 80
!
slb virtual-server VIP-1 10.0.3.101
port 80 tcp
name TCP_80
source-nat auto
service-group Service_Group_1
!
Proxmox SDN 設定値
ゾーン
Simple Zone
ID : ZONE
MTU : auto(デフォルト)
ノード : 全部(デフォルト)
IPAM : pve(デフォルト)
VNets
VNets
名前 : vnets
別名 : vnets
ゾーン : ZONE
サブネット
サブネット : 10.0.3.0/24
ゲートウェイ : 10.0.3.1
SNAT : [チャックあり]
DNSゾーンプレフィックス : 空欄(デフォルト)
Proxmox VM ネットデバイス設定
ブリッジ : vnets
WebServer の設定
軽量かつ簡単に構築したかったため、AlmalinuxのLXCコンテナを作成し、
httpd
を入れるだけの手抜きです
dnf install httpd
systemctl enable httpd
systemctl start httpd
SDNのLAN外にあるクライアントPCの設定
ProxmoxのSDN機能には標準でNAT機能がついています
外側からSDN向けにNATするためには、ProxmoxサーバのIPアドレス(Proxmox Web管理GUIのIPアドレス)向けにローティングが必要です
ルータにスタティックルートの設定を入れてもいいですが、今回はPCに直接静的ルートの設定を入れました
筆者環境は、Macbookだったため下記の通り設定を入れました
sudo route add -net 10.0.3.0/24 192.168.100.111
これで下記の通り、NATされて通信できるようになります
クライアントPC(192.168.100.160) <=> ルータ <=> Proxmoxサーバ(192.168.100.111) <=> A10vThunder(10.0.3.101)
通信の流れ/結果
SDN内のクライアントPCからVIPにアクセスしてみる
- クライアントPC(10.0.3.100)からブラウザで http://10.0.3.101:80 にアクセスする
- A10vThunderのVIP(10.0.3.101)でリクエストを受け付ける
- サービスグループに設定されている実サーバのIPアドレス(10.0.3.12,13,15)に転送する
- また転送する際に、送信元IPアドレスをA10vThunderの10.0.3.11に書き換えるSNATをする
送信元アドレス 宛先アドレス SNATした送信元アドレス 転送先の実サーバアドレス
10.0.3.100 -> 10.0.3.101:80 to 10.0.3.11 -> 10.0.3.13:80
SDN外のクライアントPCからVIPにアクセスしてみる
- クライアントPC(192.168.100.160)からブラウザで http://10.0.3.101:80 にアクセスする
- PCに静的ルートを設定しているので、Proxmoxサーバ(192.168.100.111)に向かう
- ProxmoxサーバにてNAT変換を行われ、SDNのLAN内(10.0.3.0/24)に入る
- A10vThunderのVIP(10.0.3.101)でリクエストを受け付ける
- サービスグループに設定されている実サーバのIPアドレス(10.0.3.12,13,15)に転送する
- また転送する際に、送信元IPアドレスをA10vThunderの10.0.3.11に書き換えるSNATをする
送信元アドレス 宛先アドレス SNATした送信元アドレス 転送先の実サーバアドレス
192.168.100.160 -> 10.0.3.101:80 to 10.0.3.11 -> 10.0.3.13:80
簡単な構成ではありますが、ちゃんと外側のクライアントPCでもWebアクセスできたので、SDNとの組み合わせ方も良かったのではないでしょうか。
そのうち、ProxmoxのSDN機能をピックアップした記事も書いてみたいなと思います。