CentOS 7のネットワーク管理基礎(後編)

2015年1月8日(木)
古賀 政純
前回に引き続き、CentOS 7のネットワーク設定について取り上げます。新しい設定ツールの登場や、従来のCentOS 6まで慣れ親しんだネットワーク関連の基本的なコマンド群の使用が非推奨になるなど、様々な変更点があります。CentOS 7から一新されたネットワークの具体的な設定手順、Tips等をご紹介します。

CentOS 7におけるリンクアグリゲーション

複数のネットワークカードを束ねて一つのネットワーク通信の可用性や性能向上を図るリンクアグリゲーションを実現するteamドライバーがCentOS 7で実装されています。現在の多くのサーバーは、ネットワークポートを複数持っており、このネットワークポートを束ねることで障害が発生してもネットワーク通信を継続させることができます。NICがチーミングされたCentOS 7が稼働するx86サーバーとネットワークスイッチの典型的な構成例を下図に示します。

図5:サーバー側のeth0とeth2をスレーブインタフェースにし、仮想的なインタフェースteam0を構成している。eth0に障害が発生してもeth2が通信を引き継ぐ。この構成では、1台のスイッチ障害にも対応している

このチーミングの機能は、従来のbondingドライバーよりも高機能です。teamドライバーのほとんどの部分は、ユーザー空間で稼動する点がbondingドライバーと異なっています。以下では、このteamドライバーの設定を簡単にご紹介します。まず、team driverをインストールします。

# yum install -y teamd

複数のNICを束ねる仮想的なインタフェースteam0を作成します。

# nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "roundrobin"}}'

ここでは、teamドライバーによって作成される仮想的なNICのIPアドレスを172.16.70.99/16に設定するとします。

# nmcli connection modify team0 ipv4.method manual ipv4.addresses "172.16.70.99/16 172.16.1.1" ipv4.dns 172.16.1.1

ネットワークインタフェースeth0とens7をインタフェースteam0のスレーブに設定します。

# nmcli connection add type team-slave autoconnect no ifname eth0 master team0
# nmcli connection add type team-slave autoconnect no ifname ens7 master team0

ネットワークサービスを再起動します。

# systemctl restart network

スレーブ化したens7インタフェースを自動起動するように設定します。

# nmcli connection modify team-slave-ens7 connection.autoconnect yes

teamドライバーによって2枚のNIC(eth0とens7)が束ねられ、仮想的なインタフェースteam0が作成され、IPアドレスが割り振られるはずです。仮想的なインタフェースteam0にIPアドレスが割り当てられ、外部と通信できるかを確認します。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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 pfifo_fast master team0 state UP qlen 1000
    link/ether 52:54:00:fe:fe:7c brd ff:ff:ff:ff:ff:ff
3: ens7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP qlen 1000
    link/ether 52:54:00:fe:fe:7c brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever
11: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP←仮想的なインタフェース
    link/ether 52:54:00:fe:fe:7c brd ff:ff:ff:ff:ff:ff
    inet 172.16.70.99/16 brd 172.16.255.255 scope global team0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fefe:fe7c/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever

# nmcli c
名前             UUID                                  タイプ          デバイス
システム ens7    914777cb-cdcb-c90d-f590-a17dabc1db4e  802-3-ethernet  ens7
システム eth0    5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0
team-slave-ens7  7359d2d6-2908-4f1d-ae55-3052ed84b032  802-3-ethernet  --
team-slave-eth0  daa0dedc-f44b-4374-9a82-d4d13f62c3b7  802-3-ethernet  --
team0            f62aaca3-a85f-49cf-9687-c94a34fc429c  team            team0
docker0          07c54a57-7da0-44e3-921b-d95f21013248  bridge          docker0

CentOS 7から、NetworkManagerのnmcliとnmtuiを使ってネットワークの設定を行い、ネットワークインタフェースは、NetworkManagerの制御下に置くことが強く推奨されています。NetworkManager配下で生成される設定ファイルを確認してみましょう。複数のNICを束ねる仮想的なインタフェースteam0のための設定ファイルifcfg-team0を確認します。

# cat /etc/sysconfig/network-scripts/ifcfgteam0
DEVICE=team0
TEAM_CONFIG="{\"runner\": {\"name\": \"roundrobin\"}}"
DEVICETYPE=Team
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=team0
UUID=f62aaca3-a85f-49cf-9687-c94a34fc429c
ONBOOT=yes
IPADDR0=172.16.70.99
PREFIX0=16
GATEWAY0=172.16.1.1
DNS1=172.16.1.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

teamドライバーによって束ねられるスレーブインタフェースeth0とens7の設定ファイルも確認します。

# cat /etc/sysconfig/network-scripts/ifcfg-team-slave-eth0
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=team-slave-eth0
UUID=daa0dedc-f44b-4374-9a82-d4d13f62c3b7
DEVICE=eth0
ONBOOT=no
TEAM_MASTER=team0
DEVICETYPE=TeamPort

# cat /etc/sysconfig/network-scripts/ifcfg-team-slave-ens7
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=team-slave-ens7
UUID=7359d2d6-2908-4f1d-ae55-3052ed84b032
DEVICE=ens7
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort
PEERDNS=yes
PEERROUTES=yes

チーミングされた仮想的なインタフェースteam0を構成する物理NICのインタフェースeth0とens7がラウンドロビンでパケットを処理し、スループットが出ているかの確認をするために、視覚的にしかも直感的に理解できるiptraf-ngというツールがあります。iptraf-ngは、OSが認識しているネットワークインタフェース全てについて、トラフィックの有無、パケットの通信の様子を確認することができます。コマンドライン上からiptraf-ngコマンドで起動し、テキストベースの分かりやすい画面インタフェースが特徴的です。

図6:iptraf-ngの画面の様子。チーミングされたインタフェースteam0とそれを構成する物理NICのeth0とens7のトラフィックがリアルタイムで表示されるため、チーミングの動作及び性能テストに有用である

CentOS 7及びRHEL7におけるteamドライバーに関する情報は、以下のURLに示すRed Hat Summit 2014のプレゼンテーション資料が参考になります。

[参考]New networking features & tools for Red Hat Enterprise Linux 7 beta

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています