どうも久しぶりです。
インフラエンジニアの野口です。
最近電話にグローバル化の波が押し寄せてきています。Hello!
そういえばつい先日 2/22 に OpenStack Ocata がリリースされましたね。
近いうち DevStack で試してみたいです。
対象者
CentOS 7 系で NetworkManager のコマンドラインインターフェイス nmcli を使ってネットワークまわりの設定をする方法です。
主に KVM 仮想化で使用するブリッジ、物理インターフェイスの冗長化のボンディングの設定について記述しています。
オンプレおじさん、おにいさんたちに向けて書いております。
クラウドおじさんはブラウザでボタンポチー、あるいは API 叩くと勝手に VM が作られます。
注意
もしあなたがデータセンターに物理サーバーがすでに置いてあって、リモートで作業をする場合は細心の注意を払って設定してください。
下手をすると現地まで赴くことになります。
それよりも前に IPMI の設定して SOL できるようにしましょう。
ブリッジ、ボンディングの設定作業はネットワーク系の作業をやるので接続断を伴います。
SOL(Serial over LAN) や RS232C シリアルコンソール接続、あるいはサーバーに直接入出力デバイスを接続して作業していることが前提です。
nmtui とか手動編集してやってもいいですが、何台も同時にサーバー設定していると手が腱鞘炎になるので慣れてきたらコマンドライン推奨です。
ブリッジ
仮想化するなら必須。
こちらはボンディングしないときの設定。
sudo nmcli con add type bridge autoconnect yes con-name bridge-br0 ifname br0 sudo nmcli con modify bridge-br0 ipv4.method manual ipv4.address "172.16.12.192/24" ipv4.gateway "172.16.12.1" ipv4.dns "172.16.12.5 8.8.8.8 8.8.4.4" ipv4.dns-search unicast.internal # Add slave interface to bridge sudo nmcli con add type bridge-slave autoconnect yes con-name bridge-slave-enp0s25 ifname enp0s25 master br0 sudo nmcli c down bridge-br0 sudo nmcli c down bridge-slave-enp0s25 sudo nmcli c up bridge-slave-enp0s25 sudo nmcli c up bridge-br0 # Delete Physical Port Setting sudo nmcli c del enp0s25
ボンディング
あなたがベアメタルおじさんでブリッジを切る必要がない場合はこちら。
CentOS 7 の nmcli で bonding – Qiita
sudo nmcli c add type bond ifname bond0 con-name bond-bond0 mode active-backup sudo nmcli c mod bond-bond0 ipv4.method manual ipv4.address "172.16.12.254/24" ipv4.gateway "172.16.12.1" ipv4.dns "172.16.12.5 8.8.8.8 8.8.4.4" ipv4.dns-search unicast.internal sudo nmcli c add type bond-slave ifname enp0s25 con-name bond-slave-enp0s25 master bond0 sudo nmcli c add type bond-slave ifname enp2s0 con-name bond-slave-enp2s0 master bond0 sudo nmcli c down bond-slave-enp0s25 sudo nmcli c down bond-slave-enp2s0 sudo nmcli c down bond-bond0 sudo nmcli c up bond-slave-enp0s25 sudo nmcli c up bond-slave-enp2s0 sudo nmcli c up bond-bond0
詳細なログは以下のようになる。
[wataru@file2 ~]$ sudo nmcli c 名前 UUID タイプ デバイス enp2s0 e01b4a7f-33bc-4e97-80b2-97130ea548a8 802-3-ethernet enp2s0 enp0s25 b380cff2-ee3f-4fd5-acf9-d656036f2f31 802-3-ethernet -- [wataru@file2 ~]$ sudo nmcli c add type bond ifname bond0 con-name bond-bond0 mode active-backup 接続 'bond-bond0' (d0cbb770-88f5-4820-b62b-30e73fadd95b) が正常に追加されました。 [wataru@file2 ~]$ sudo nmcli c mod bond-bond0 ipv4.method manual ipv4.address "172.16.12.254/24" ipv4.gateway "172.16.12.1" ipv4.dns "172.16.12.5 8.8.8.8 8 .8.4.4" ipv4.dns-search unicast.internal [wataru@file2 ~]$ sudo nmcli c add type bond-slave ifname enp0s25 con-name bond-slave-enp0s25 master bond0 接続 'bond-slave-enp0s25' (da1b4b5d-91ac-412e-9f73-d505a9b6296f) が正常に追加されました。 [wataru@file2 ~]$ sudo nmcli c add type bond-slave ifname enp2s0 con-name bond-slave-enp2s0 master bond0 接続 'bond-slave-enp2s0' (b6b30897-de01-4100-adfd-ecc8d36f2b92) が正常に追加されました。 [wataru@file2 ~]$ sudo nmcli c down bond-slave-enp0s25 接続 'bond-slave-enp0s25' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4) [wataru@file2 ~]$ sudo nmcli c down bond-slave-enp2s0 エラー: 'bond-slave-enp2s0' はアクティブな接続ではありません。 エラー: アクティブな接続がありません。 [wataru@file2 ~]$ sudo nmcli c down bond-bond0 接続 'bond-bond0' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3) [wataru@file2 ~]$ sudo nmcli c up bond-slave-enp0s25 接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/5) [wataru@file2 ~]$ sudo nmcli c up bond-slave-enp2s0 接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/7) [wataru@file2 ~]$ sudo nmcli c up bond-bond0 接続が正常にアクティベートされました (マスターはスレーブを待機しています) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/8) [wataru@file2 ~]$ ip a 1: lo:mtu 65536 qdisc noqueue state UNKNOWN qlen 1 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: enp0s25: mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether ff:ff:ff:fc:fd:a4 brd ff:ff:ff:ff:ff:ff 3: enp2s0: mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether ff:ff:ff:fc:fd:a4 brd ff:ff:ff:ff:ff:ff 6: bond0: mtu 1500 qdisc noqueue state UP qlen 1000 link/ether ff:ff:ff:fc:fd:a4 brd ff:ff:ff:ff:ff:ff inet 172.16.12.254/24 brd 172.16.12.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::e734:a869:fff:17a/64 scope link valid_lft forever preferred_lft forever
[root@file2 ~]# tailf /var/log/messages Mar 10 16:37:59 file2 kernel: bond0: link status definitely up for interface enp0s25, 1000 Mbps full duplex Mar 10 16:37:59 file2 kernel: bond0: making interface enp0s25 the new active one Mar 10 16:37:59 file2 kernel: bond0: first active interface up! Mar 10 16:37:59 file2 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready Mar 10 16:37:59 file2 kernel: e1000e: enp2s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None Mar 10 16:37:59 file2 NetworkManager[866]:[1489131479.6467] device (enp2s0): link connected Mar 10 16:37:59 file2 kernel: bond0: link status definitely up for interface enp2s0, 1000 Mbps full duplex Mar 10 16:38:05 file2 NetworkManager[866]: [1489131485.2484] policy: set 'bond-bond0' (bond0) as default for IPv6 routing and DNS Mar 10 16:38:05 file2 su: (to wataru) root on ttyS0 Mar 10 16:39:01 file2 chronyd[837]: Selected source 133.243.238.244 Mar 10 16:40:49 file2 kernel: e1000e: enp2s0 NIC Link is Down Mar 10 16:40:49 file2 kernel: bond0: link status definitely down for interface enp2s0, disabling it Mar 10 16:40:59 file2 kernel: e1000e: enp2s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None Mar 10 16:40:59 file2 NetworkManager[866]: [1489131659.5058] device (enp2s0): link connected Mar 10 16:40:59 file2 kernel: bond0: link status definitely up for interface enp2s0, 1000 Mbps full duplex Mar 10 16:41:21 file2 kernel: e1000e: enp2s0 NIC Link is Down Mar 10 16:41:21 file2 kernel: bond0: link status definitely down for interface enp2s0, disabling it Mar 10 16:41:31 file2 kernel: e1000e: enp2s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None Mar 10 16:41:31 file2 NetworkManager[866]: [1489131691.1847] device (enp2s0): link connected Mar 10 16:41:31 file2 kernel: bond0: link status definitely up for interface enp2s0, 1000 Mbps full duplex Mar 10 16:41:39 file2 kernel: e1000e: enp0s25 NIC Link is Down Mar 10 16:41:39 file2 kernel: bond0: link status definitely down for interface enp0s25, disabling it Mar 10 16:41:39 file2 kernel: bond0: making interface enp2s0 the new active one Mar 10 16:41:53 file2 NetworkManager[866]: [1489131713.2214] device (enp0s25): link connected Mar 10 16:41:53 file2 kernel: e1000e: enp0s25 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None Mar 10 16:41:53 file2 kernel: bond0: link status definitely up for interface enp0s25, 1000 Mbps full duplex
ボンディング + ブリッジ
データセンターにハウジング、あるいは自分のところで遠くにデータセンター持っている人で、
一回サーバー突っ込んだらなかなかデータセンターには足を運ばない人には必須。
ボンディングで NIC が片方死んでも大丈夫にし、ブリッジで仮想マシンもバシバシ立てますという方向け。
RHEL7/CentOS7のnmcliコマンドでTeamデバイス/Bondingデバイス/VLAN/ブリッジを組み合わせる方法 – めもめも
まずブリッジインターフェイス br0 を作成する。
sudo nmcli c add type bridge ifname br0 con-name bridge-br0 sudo nmcli c mod bridge-br0 bridge.stp no sudo nmcli c mod bridge-br0 ipv4.method manual ipv4.address "172.16.12.102/24" ipv4.gateway "172.16.12.1" ipv4.dns "172.16.12.5 8.8.8.8 8.8.4.4" ipv4.dns-search unicast.internal sudo nmcli c down bridge-br0 sudo nmcli c up bridge-br0
次にボンディングインターフェイス bond0 を作成する。
sudo nmcli c add type bond ifname bond0 con-name bond-bond0 mode active-backup sudo nmcli c mod bond-bond0 connection.master br0 connection.slave-type bridge sudo nmcli c add type bond-slave ifname enp0s25 con-name bond-slave-enp0s25 master bond0 sudo nmcli c add type bond-slave ifname enp6s0 con-name bond-slave-enp6s0 master bond0 sudo nmcli c down bond-slave-enp0s25 sudo nmcli c down bond-slave-enp6s0 sudo nmcli c down bond-bond0 sudo nmcli c up bond-slave-enp0s25 sudo nmcli c up bond-slave-enp6s0 sudo nmcli c up bond-bond0
最後に物理インターフェスを削除する。
これやらないとインターフェイスが fail してもフェイルオーバーしなくて VM に通信ができなくなる。
sudo nmcli c del enp0s25 sudo nmcli c del enp6s0
それではよい週末を。
投稿者紹介
-
* Bio: Software Engineer, Network and Server Engineer
* Certification:
IPA: FE, AP, Network Specialist
Cisco: CCNA R&S, CCNP R&S
LPI: LPIC Level1, Level2, LPIC-3 Specialty LPI-304 Virtualization &High Availability