はじめに
この記事は、以下を実現するために作成しました。
- VMware WorkStation ProでBIG-IPを冗長構成で構築する。
- BIG-IPを利用した実サーバ(リアルサーバ)へのアクセスを実現する。
- 2点を実現することで、本格的なロードバランサーの学習環境を提供する。
記事一覧













以下のリンクが現在開いているページとなります。



検証環境の構成図をおさらい
次の図となります。
この記事では、負荷分散対象となるサーバ(リアルサーバ)の作成を行います。負荷分散、セッションパーシステンスなどを確認するためには、最低でも2台は構築する必要があります。実は、Docker使った方がよりリソース(主にメモリ)を節約しながら環境構築できますが、構築難易度が少し高くなるので、今回はzabbix applianceを利用します。
リアルサーバとなるWebサーバの準備
Apacheで作成するのも良いですが、zabbix applianceを使用すればデプロイした瞬間にWebサーバが使用できるので、検証用途でお勧めです。今回はこれを利用します。
以下のリンクへアクセスします。
今回は、Installation CD/DVD(.iso)を使用します。ovfファイル形式のものを使用しても問題ありません。どちらかをダウンロードしてください。
Vmware WorkStationで新規仮想マシンの作成を行います。
ゲストOSのインストール画面にて、先ほどダウンロードしたisoファイルを選択します。
仮想マシン名は zabbix-01 とします。
ディスク最大サイズですが、デフォルトの20GBから100GBへ変更しておきます。
変更しなくても検証用途で使う分には問題はありません。
いったん、準備は完了です。完了ボタンをクリックします。
仮想マシンの編集
『仮想マシンの設定を編集する』をクリックします。
以下の編集をします。
メモリ:2GB→4GB。2GBでも問題ありません。余裕を持たせたいので4GBにしています。 ネットワーク アダプタ1:NAT→ブリッジ。BIG-IPのMGMTと同じセグメントにします。 ネットワーク アダプタ2:172.16.4.0/24のセグメントを割り当てたホストオンリーアダプターのVMnetをカスタムから選択してください。
ここまで完了したら、2台めも同様に作成して、電源をONにします。
環境に寄りますが数分~10分程度待つと処理が完了すると、自動で電源がOFFになります。もう一度電源をONにすると、アクセスできるようになります。
zabbixの基本設定
まず、デフォルトで以下のID/パスワードが作成されています。
●system(Alma Linux) ID:root パスワード:zabbix ●Frontend(Webコンソール) ID:Admin パスワード:zabbix ●Database ID:root ※仮想マシン作成時にランダムに作成 パスワード:zabbix ※仮想マシン作成時にランダムに作成
IPアドレス設定
IPアドレスの変更を行います。コンソール接続でも良いですが、teratermでSSH接続して変更したいと思います。
まず、IPアドレスがDHCPで取得されているので、確認します。
ip addr show
teratermでeth0に付与されたIPアドレス(ここでは192.168.3.250)へアクセスします。
設定ファイルを修正します。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
初期設定は以下の通りです。
次のように修正します。
BOOTPROTO=static
また、以下を追加します。
IPADDR="192.168.3.81" ※1号機の場合 NETMASK="255.255.255.0" GATEWAY="192.168.3.1"
設定を反映するには以下のコマンドを実行します。
ただし、ホスト名の設定を反映させるときに再起動するため、ここではスキップします。
systemctl restart network
タイムゾーン設定
以下のコマンドを実行します。
timedatectl set-timezone Asia/Tokyo timedatectl
太字が確認できれば設定変更完了です。
[root@appliance ~]# timedatectl Local time: Fri 2025-05-09 00:01:35 JST Universal time: Thu 2025-05-08 15:01:35 UTC RTC time: Thu 2025-05-08 15:01:35 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: n/a RTC in local TZ: no
NTPサーバ指定
以下のコマンドを実行します。
vi /etc/chrony.conf
すでにpool 2.al,ma~でNTPサーバグループが指定されています。
追加でほしい場合は次のようにするとよいでしょう。
pool 2.almalinux.pool.ntp.org iburst server ntp.nict.jp iburst server time.aws.com iburst
設定を変更した場合は次のコマンドを投入します。
systemctl restart chronyd systemctl status chronyd chronyc sources
時刻同期が上手くできていることを確認します。
[root@appliance ~]# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^- v4.ntp.admtan.jp 2 6 17 23 -6578us[-6578us] +/- 30ms ^- x.ns.gin.ntt.net 2 6 17 26 +6309us[+9474us] +/- 93ms ^+ tok2.jp.ntp.li 4 6 17 25 +1840us[+1840us] +/- 22ms ^- y.ns.gin.ntt.net 2 6 17 26 +10ms[ +10ms] +/- 88ms ^* ntp-a3.nict.go.jp 1 6 17 29 +14ms[ +17ms] +/- 31ms ^- ec2-15-168-66-245.ap-nor> 4 6 17 29 -3387us[-3387us] +/- 39ms [root@appliance ~]#
DNSサーバ指定
以下のコマンドを実行します。
vi /etc/resolv.conf
以下を追加します。
nameserver 8.8.8.8 nameserver 8.8.4.4
ping goolge.com を実行して名前解決が出来ていることを確認します。
[root@appliance ~]# ping goolge.com PING goolge.com (142.250.196.100) 56(84) bytes of data. 64 bytes from nrt12s35-in-f4.1e100.net (142.250.196.100): icmp_seq=1 ttl=112 time=26.7 ms 64 bytes from nrt12s35-in-f4.1e100.net (142.250.196.100): icmp_seq=2 ttl=112 time=52.9 ms ^C --- goolge.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 26.706/39.778/52.850/13.072 ms
ロケールの設定
必須ではありませんがついでに設定しておきます。以下のコマンドを実行します。
dnf -y install glibc-locale-source glibc-langpack-ja zabbix-web-japanese localectl set-locale LANG=ja_JP.utf8 localectl set-keymap jp106 localectl
確認します。
[root@appliance ~]# localectl System Locale: LANG=ja_JP.utf8 VC Keymap: jp106 X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp
iptablesの無効化
以下のコマンドを実行します。
chkconfig iptables off
上手く設定できると、次のような出力となります。
[root@appliance ~]# chkconfig iptables off Note: Forwarding request to 'systemctl disable iptables.service'. Removed /etc/systemd/system/multi-user.target.wants/iptables.service.
ホスト名の設定
以下のコマンドを実行します。
hostnamectl set-hostname zabbix-01 ※1号機の場合 hostnamectl
ホスト名が変更されていることを確認します。
[root@appliance ~]# hostnamectl Static hostname: zabbix-01 Icon name: computer-vm Chassis: vm Machine ID: 0da7a99f87a047b8bd005cf5ae8af478 Boot ID: f91cada7f0a147b8a447de95245eb9bb Virtualization: vmware Operating System: AlmaLinux 8.10 (Cerulean Leopard) CPE OS Name: cpe:/o:almalinux:almalinux:8::baseos Kernel: Linux 4.18.0-553.51.1.el8_10.x86_64 Architecture: x86-64
次のコマンドで再起動します。
reboot もしくは systemctl restart network
IPアドレスの設定も反映されるので、変更後のIPアドレスでSSHログインします。
ホスト名が変更されていることを確認できました。
2つ目のNICの設定修正
今回、ネットワークアダプターを2つ追加しました。
BIG-IP視点からすると、INBOUND方向にあるリアルサーバとしてzabbixサーバを扱いたいので、zabbixサーバで以下を行います。
・eth1のIPアドレスの設定 ・eth1でdefaultルートを無効化 ・networkサービスの再起動
また、NTPサーバやDNSサーバとして、インターネット上に公開されているサーバを指定している以上、デフォルトルートはeth1では使用できません。デフォルトルートは1つしか設定できないためです。
BIG-IPのVirtual-Server経由で通信されたものについては、アドレス変換されたIPアドレス宛(Secure NATのセグメントに所属するIPアドレス)に返す必要があるので、staticルートを設定します。
eth1のインタフェースの設定ファイルを修正します。これがホストオンリーなネットワークアダプターに対応しています。
vi /etc/sysconfig/network-scripts/ifcfg-eth1
以下のように修正します。
BOOTPROTO=static DEFROUTE=no ※ ONBOOT=yes
また、以下を追加します。
IPADDR="172.16.4.81" ※1号機の場合 NETMASK="255.255.255.0" GATEWAY="172.16.4.254"
※について
デフォルトルートは1つしか設定できません。つまり、異なるセグメントに所属するNICが複数あっても、1つのNICのみ使用します。 eth1に設定しているデフォルトルートが選ばれないように修正を行います。
networkサービスを再起動します。
systemctl restart network
IPアドレスが付与されていること、NICがupしていることを確認します。
ip addr show
[root@zabbix-01 ~]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:cf:40:35 brd ff:ff:ff:ff:ff:ff altname enp3s0 altname ens160 inet 192.168.3.81/24 brd 192.168.3.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fecf:4035/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:cf:40:3f brd ff:ff:ff:ff:ff:ff altname enp19s0 altname ens224 inet 172.16.4.81/24 brd 172.16.4.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fecf:403f/64 scope link valid_lft forever preferred_lft forever
ここまでの設定を、2台とも実施します。
設定が完了したら、作業PCからPING疎通できることを確認しておきます。
C:\Users\user>ping 172.16.4.81 172.16.4.81 に ping を送信しています 32 バイトのデータ: 172.16.4.81 からの応答: バイト数 =32 時間 <1ms TTL=64 172.16.4.81 からの応答: バイト数 =32 時間 <1ms TTL=64 172.16.4.81 の ping 統計: パケット数: 送信 = 2、受信 = 2、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms Ctrl+C ^C C:\Users\user>ping 172.16.4.82 172.16.4.82 に ping を送信しています 32 バイトのデータ: 172.16.4.82 からの応答: バイト数 =32 時間 <1ms TTL=64 172.16.4.82 からの応答: バイト数 =32 時間 <1ms TTL=64 172.16.4.82 からの応答: バイト数 =32 時間 <1ms TTL=64 172.16.4.82 からの応答: バイト数 =32 時間 <1ms TTL=64 172.16.4.82 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms C:\Users\user>
BIG-IP向けstaticルートの追加
次に、リアルサーバとなるzabbix01,zabbix02がSecure NATのIPアドレスが所属するセグメントへ到達できるように、staticルートを設定します。
また、ヘルスチェックで使用するプロトコルはBIG-IPのInternalのSelf IPsから送信されるので、172.16.3.0/24へ到達できるように、staticルートを設定します。
次のコマンドで以下のファイルを編集します。
存在しないファイルなので、viエディタで開いた時に新規作成されます。
vi /etc/sysconfig/network-scripts/route-eth1
以下を追加します。
192.168.2.0/24 via 172.16.4.254 dev eth1
また、これらの一連の操作は以下でも代替可能です。
echo "192.168.2.0/24 via 172.16.4.254 dev eth1" >> /etc/sysconfig/network-scripts/route-eth1 echo "172.16.3.0/24 via 172.16.4.254 dev eth1" >> /etc/sysconfig/network-scripts/route-eth1
networkサービスを再起動します。
systemctl restart network
次のコマンドでルーティングを確認してみます。
ip route show
[root@zabbix-01 ~]# ip route show default via 192.168.3.1 dev eth0 172.16.3.0/24 via 172.16.4.254 dev eth1 172.16.4.0/24 dev eth1 proto kernel scope link src 172.16.4.81 192.168.2.0/24 via 172.16.4.254 dev eth1 192.168.3.0/24 dev eth0 proto kernel scope link src 192.168.3.81
これを2号機でも行います。
次はBIG-IPにおけるVirtual-Serverの作成方法について、詳しく見ていきます。
次の記事

コメント