ガラリと変わったCentOS 7 7

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

この連載が、書籍『CentOS 7 実践ガイド』になりました!IT技術者のための現場ノウハウ CentOS 7 実践ガイドCentOS 7を取り巻く市場動向、サーバーシステムの選定、システム設計、構築手順など前回に引き続き、CentOS 7のネットワーク設定について取り上げます。新しい設定ツールの登

古賀 政純

2015年1月8日 18:00

前回に引き続き、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

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る