仮想環境の普及とともにチーミング(ボンディング)技術は、その必要性が薄れてきた昨今ではありますが、仮想化技術では対象出来ないデータ量を扱うような場面では、まだまだ物理環境(チーミング)は健在です。
本来、仮想環境(VmWare Workstation Player)に構築されたサーバーへのNIC冗長化を設定する必要はありません。何故なら、仮想環境には物理ケーブルや物理NICが存在しないからです。
では、なぜ冗長化設定を行うのか?それは、物理サーバーを見据えてのことです。昨今のシステム環境は、技術の進歩に呼応して、流れるデータ量も膨大な量に増え続けています。当初は仮想環境で設計していたシステムが、そのデータ量に耐え切れず、急遽、物理環境(オンプレミス)へ変更すると言ったことが日常的になっています。
この記事では、仮想環境に構築したRHEL7.5サーバーへ、チーミング設定の行っていきます。
チーミングとは
チーミングとは、 コンピュータ内の複数の物理的なネットワークアダプタ(NIC)を、ソフトウェア上で仮想的な一つのアダプタとして一体的に運用することを指します。
ネットワーク上を流れるパケットのサーバへの玄関 (NIC)が壊れてしまうと、それ以降は通信が出来なくなってしまう状態となります。それを防ぐために、予め ネットワークを流れるパケットのサーバへの玄関(NIC) を2つ用意しておきます。
玄関が2つあっても、建物の住所(IPアドレス)は変わりません。
RHEL6までのNIC冗長化は「ボンディング」一択でしたが、RHEL7から「チーミング」が機能として追加されました。オプションとして「Runner(バランシング方式)」や「NICの監視方式」が指定できるようになり、今後のNIC冗長化には「チーミング」が標準で使用されていくことになると思います。
想定する構築環境
チーミング設定を行う前提として、下記の環境を想定しています。
ポイント
- Webサーバー
- wb01(冗長化なし)
- APサーバー
- ap01(今回の記事での設定対象)、ap02(ap01と同様に設定)
- DBサーバー
- db01(ap01と同様に設定)、db02(ap01と同様に設定)
NICチーミングを設定する
NetworkManagerの導入有無確認
RHELへチーミングを設定するために「NetworkManager」の導入有無を確認します。
# yum info NetworkManager
本記事では、上記のモジュール「NetworkManager」を使用して、NICチーミングの設定を行っていきます。
NICチーミング構成
本環境のネットワーク構成は下記の通りです。
※ 今後を踏まえて、dbサーバー分まで含めて載せています。
サーバー名 | ipアドレス | nic名 | category | team名 | runner |
---|---|---|---|---|---|
ap01 | 192.168.109.151/24 gw:192.168.0.2 | ens33 | public-lan | team0 | activebackup |
ens34 | |||||
ap02 | 192.168.109.152/24 gw:192.168.0.2 | ens33 | public-lan | team0 | activebackup |
ens34 | |||||
db01 | 192.168.109.153/24 gw:192.168.0.2 | ens33 | public-lan | team0 | activebackup |
ens34 | |||||
db02 | 192.168.109.154/24 gw:192.168.0.2 | ens33 | public-lan | team0 | activebackup |
ens34 |
NICチーミングの負荷分散方式
負荷分散に固有の機能は、「ランナー」と呼ばれる別のコードユニットによって実行されます。RHEL7.5では、下記の「runner(ランナー)」が使用可能です。
RHEL7.5で使用可能なランナー
- broadcast
データは全ポートで送信されます - round-robin (デフォルト)
データは全ポートで順番に送信されます - active-backup
1 つのポートまたはリンクが使用され、他はバックアップとして維持されます - loadbalance
アクティブ Tx 負荷分散と BPF ベースの Tx ポートセレクターを使用 - lacp
802.3ad リンクアグリゲーション制御プロトコルを実装
本記事では、一方を稼働系、他方を待機系の「FT(フォールトトレランス)」仕様として冗長化の設定を行います。ランナーには「active-backup」を設定します。
NICチーミングの設定
本記事では、代表サーバーとして「ap01」サーバーへNICの設定を行っていきますが、他のサーバーも必要に応じてNICの設定を行います。
チーミング設定の流れ
- チームの追加
- チームアドレスの設定
- スレイブNICの追加
- チームのリンクアップ
- チーム「team0」の状態確認
- 負荷分散方式の設定
- 動作確認
- ルーティングテーブルの確認
① チームの追加
チーム名「team0」を追加します。
# nmcli c add type team ifname team0 con-name team-team0
チームの解除
チームを解除(削除)したい場合は下記のコマンドでチームを解除します。
# nmcli c del team-team0
チーミング設定ファイルは「/etc/sysconfig/network-scripts/」配下へ作成されます。既に「team0」のスレイブとして「ens33」「ens34」が紐づけられている状態となっていることが分かります。その場合は、下記のコマンドで既に紐づけられている「ens33」「ens34」を一旦削除します。
# 既にスレイブとして紐付けられている「ens33」を解放する。
# nmcli c del team-slave-ens33
# 既にスレイブとして紐付けられている「ens34」を解放する。
# nmcli c del team-slave-ens34
スレイブが削除されているのが分かります。
誤って、同一名のNICをスレイブとして設定すると「NetworkManager」は、新規のスレイブとしてそのまま追加してしまいます。
不具合のもとになりかねないので、上記の手順で整理しておきましょう。
② チームアドレスの設定
チームアドレス「192.168.109.151/24」を追加します。
# nmcli c mod team-team0 ipv4.method manual ipv4.address "192.168.109.151/24"
ゲートウェイの設定を行う場合は、末尾に「ipv4.gateway ""」を追加して設定します。
注意ポイント
③ スレイブNICの追加
スレイブとなるNICを追加します。
「ens33」「ens34」を「team0」のスレイブNICとして追加します。
# nmcli c add type team-slave ifname ens33 con-name team-slave-ens33 master team-team0
# nmcli c add type team-slave ifname ens34 con-name team-slave-ens34 master team-team0
④ チームのリンクアップ
作成した「team0」を外部と疎通させるためにリンクアップします。
# nmcli c down team-team0
# nmcli c up team-slave-ens33
# nmcli c up team-slave-ens34
# nmcli c up team-team0
1行名:追加した「team0」は、作成時点でリンクアップしています。後から追加したスレイブNIC「ens33」「ens34」を認識させるため、一度 「team0」 をリンクダウンします。
2-3行目:追加したスレイブNIC「ens33」「ens34」をリンクアップ。
4行目:リンクダウンした 「team0」 を再リンクアップします。
⑤ チーム「team0」の状態確認
ここまでに作成した「team0」の状態を確認します。
# teamdctl team0 state
先ほど追加した「ens33」「ens34」がスレイブとして機能していることが分かります。
現在のRunnerは「roundrobin」となっていますので、このままでは「NIC」に障害が起きた際に動作が不安定になってしまいます。
⑥ 負荷分散方式の設定
Runnerを「activebackup」へ変更します。
# nmcli c mod team-team0 team.config '{"runner":{"name":"activebackup"}}'
ちなみにコマンドを実行しても、特に反応はありません。Runnerを設定した後は、設定内容を反映するために再起動(リンクダウン-リンクアップ)する必要があるため「④ チームのリンクアップ」を再度実行します。
Runnerが「activebackup」へ変更されたか再度確認します。
# teamdctl team0 state
⑦ 動作確認
「ens33」をリンクダウンして、activeポートは「ens34」へスイッチすることを確認します。
# nmcli c down team-slave-ens33
メモ
必要に応じて残りのサーバーへ(ap02、db01、db02)も同様の設定を行いチーミングを設定していきます。
⑧ ルーティングテーブル の確認
最後にルーティングの設定を確認します。
# route
正しく設定が完了していれば「ルーティングテーブル」は下記の様に設定されています。
インターフェイス「team0」が、デフォルトゲートウェイとして一番上に並んでいれば正常に設定がされています。
今回設定したチーミングの設定ファイルは「/etc/sysconfig/network-scripts/」配下へ作成されます。
以上でチーミングの設定は完了です。
仮想サーバー構築(全9記事)[追加記事作成中]
├─KickStartを使ってVmWare Player上へLinuxを導入する!
├─KickStart設定ファイルについて!
├─httpd(Apache)サーバーの導入
├─NICチーミングを設定する!
├─サーブレットコンテナ(JBOSS)の導入
├─JBoss-EAPを設定する!
├─Web-AP間連携の設定を行う!
├─VmWare Playerのディスク共有設定を行う!
└─共有ディスク上へデータ格納領域を作成する