2016年12月30日金曜日

CentOS 7の新しい時刻同期デーモンchronyを使ってみた

CentOS 7は(Red Hat Enterprise Linux 7も同様だが)、いろいろコマンド体系が変わっていて、時刻同期についても、今まで長い間慣れ親しんだntpdではなく、chronyというデーモンにデフォルトが変更がされている。

ntpdをインストールして今まで通り使い続けることも可能だが、せっかくなのでchronyを使ってみることにした。

そもそもchronyとは

以下URLに詳しく説明が書いてあるので割愛するが、ntpdに比べていろいろ改善されているらしい。ただし、枯れている技術が好きだったり、新しく設定方法を覚えるのが面倒な人は引き続きntpdを使ってもよいとは思う。

・第15章 CHRONY スイートを使用した NTP 設定
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html#sect-differences_between_ntpd_and_chronyd

実際、仕事でRHEL7を使う場面が出てきたとき、ntpdにするかchronyにするかは割と悩む気がする。

chronyの設定

設定ファイルは/etc/chrony.confとなる。以下に日本語コメントを付けて説明する。
------------------------------
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 同期先のNTPサーバを設定
server 192.168.33.3 iburst

# Ignore stratum in source selection.
# 同期先のstratumの値に応じて優先度の重み付けする設定(0で無視)
stratumweight 0

# Record the rate at which the system clock gains/losses time.
# driftfileの指定
driftfile /var/lib/chrony/drift

# Enable kernel RTC synchronization.
# カーネルのReal-Time Clock(RTC)=ハードウェアクロックを同期する
rtcsync

# In first three updates step the system clock instead of slew
# if the adjustment is larger than 10 seconds.
# stepモードとなる際の時刻のずれ幅(1つめの設定値)と、
# stepが有効になるchronyd起動後の同期回数(2つめの設定値)
#
# デフォルト設定では、10秒以上のずれの場合かつ
# chronyd起動後の3回目までの同期処理であればstepで同期する
#makestep 10 3
# ntpdは128msを閾値としてstepで同期したはずなので、ちょっと設定値を厳しくすると、
# 以下のような設定になる(0.2秒以上のずれで10回目までならstepで同期)
makestep 0.2 10

# Allow NTP client access from local network.
# NTPクライアントからのアクセス許可するアドレスを設定
# デフォルトではすべて拒否(暗黙のdenyがある)
#allow 192.168/16
#
# 以下は同じサブネット内からのNTPクライアントアクセスを許可する設定
allow 192.168.33.0/24

# Listen for commands only on localhost.
# chronycにアクセスできるアドレスを設定
# IPv6は使わないのでコメントアウト
bindcmdaddress 127.0.0.1
#bindcmdaddress ::1

# Serve time even if not synchronized to any NTP server.
# 同期先がない場合、自分自身のローカルクロックと同期してるかのように振舞う設定
# デフォルトでコメントアウト
#local stratum 10

# キーファイルの設定
keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.
# chronycという設定ユーティリティのセキュリティの設定の模様
commandkey 1

# Generate command key if missing.
generatecommandkey

# Disable logging of client accesses.
# NTPクライアントからの同期のアクセスをログに残さない
noclientlog

# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.
# 時刻調整時のずれが0.5秒以上の場合、syslogにログ出力する
logchange 0.5

# ログ出力先ディレクトリの指定
logdir /var/log/chrony

# ログ出力内容の指定。指定した項目ごとにログファイルが生成される模様
#log measurements statistics tracking
log measurements statistics tracking
------------------------------

コメントを全部消すと以下のようにシンプルになる。

[root@localhost /]# cat /etc/chrony.conf
------------------------------
server 192.168.33.3 iburst
stratumweight 0

driftfile /var/lib/chrony/drift

rtcsync
makestep 0.2 10

allow 192.168.33.0/24

bindcmdaddress 127.0.0.1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey

noclientlog
logchange 0.5
logdir /var/log/chrony
log measurements statistics tracking
------------------------------

chronyの起動

設定したchrony.confを読み込ませるために、サービス再起動を行う。

[root@localhost /]# systemctl restart chronyd
※サービス再起動時には特に表示なし

サービス再起動後の確認。「active (running)」であることと、特にエラーが発生していなければOK。

[root@localhost /]# systemctl status chronyd
------------------------------
chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 土 2016-03-05 22:14:12 JST; 31s ago
  Process: 2994 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 2991 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 2993 (chronyd)
   CGroup: /system.slice/chronyd.service
           mq2993 /usr/sbin/chronyd

 3月 05 22:14:12 localhost.localdomain systemd[1]: Starting NTP client/server...
 3月 05 22:14:12 localhost.localdomain chronyd[2993]: chronyd version 2.1.1 starting (+CMDMON ...H)
 3月 05 22:14:12 localhost.localdomain chronyd[2993]: Generated key 1
 3月 05 22:14:12 localhost.localdomain systemd[1]: Started NTP client/server.
 3月 05 22:14:16 localhost.localdomain chronyd[2993]: Selected source 192.168.11.22
 3月 05 22:14:16 localhost.localdomain chronyd[2993]: System clock wrong by 0.665080 seconds, ...ed
 3月 05 22:14:17 localhost.localdomain chronyd[2993]: System clock was stepped by 0.665080 seconds
Hint: Some lines were ellipsized, use -l to show in full.
------------------------------

時刻同期状態の確認。ntpdと似ていて、先頭2文字目に「*」があれば同期OK。

[root@localhost /]# chronyc sources
------------------------------
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.33.3                  3   6    17    40  -5893ns[  -24us] +/-   53ms
------------------------------

(参考)ntpdを使いたい場合の対処

やっぱりntpdが使いたい!という人は、CentOS 7のCDのPackagesディレクトリに移動して、以下をインストールすればよい。

[root@localhost Packages]# rpm -ivh ntpdate-4.2.6p5-22.el7.centos.x86_64.rpm
[root@localhost Packages]# rpm -ivh autogen-libopts-5.18-5.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh ntp-4.2.6p5-22.el7.centos.x86_64.rpm



2016年12月23日金曜日

転職エージェントを使ってインフラエンジニアが転職した話

2015年4月末にて2007年から8年1ヶ月勤めた会社を退職し転職した。転職から1年半以上が経過したことになるが、自分の活動の備忘録として、当時の転職活動の記録を掲載する。

なお、私の場合、業種はインフラエンジニアとなり、結果的にはSIerからSIerへの転職となる。

2014年12月下旬 転職しようと考え始める

理由は大きく2つ。

①同じ顧客の同じようなシステムの保守担当の経験が長くなっており、技術的な新鮮さもなく、興味が失われたこと。同時に、技術面で成長が期待できないと感じたこと
②自分の担当している業務内容に対して、適正な評価がされていないと感じたこと(簡単に言えばリーダー業務を実施しているのに、担当者として評価されていること)

上の2つがあったが、②の内容はネガティブになるので、転職活動では主に①を伝えて進めることにした。

2015年1月中旬 転職活動を始める決意

もともと数年前からリクナビネクストに登録をしていて、思いついたら閲覧したり、更新はしていた。しかし、中々最初の一歩を踏み出すことができない状況が続いていた。転職したい気持ちはあっても、なかなか「転職」というパワーとリスクを必要とする行動を開始できずにいた。

ある日、リクナビネクストのページに、今の登録情報を使ってリクルートエージェント登録できるというリンクがあって、軽い気持ちでクリックしたところ、簡単にリクルートエージェントに登録されてしまった。そしたら、数日後エージェントから電話が来た。すぐさまエージェントとの面談がセッティングされ、あっという間に転職活動は開始されることになった。

この経験をふまえて感じたこととしては、転職活動の最初の一歩を踏み出すことに躊躇している人は、さっさと転職エージェントに登録してしまえば良い。そうすれば、嫌でもエージェントから連絡が来て転職活動が開始できてしまう。

2015年1月末 エージェントとの面談

予定休を取って、東京駅近くのリクルートのビルにて打ち合わせ。以下の様な情報を教えてもらう。

・リクナビネクストとリクルートエージェントとのビジネスモデルの違い。リクナビネクストは求人を掲示するのに費用が発生することに対し、リクルートエージェントは紹介した人材が内定を得た際に企業から費用をもらう
※ネット情報だと内定者の年収の3割程度がエージェント企業に支払われるらしい

・上記ビジネスモデルの違いに加え、IT企業は通年で求人を出している場合が多いこともあり、リクナビネクストへの求人広告を出さずにリクルートエージェントのみが持つ求人も多いとのこと

・書類選考があって、だいたい2回の面接を通過すれば内定するパターンが多い
   書類選考通過率は通常20~30%程度
   一次面接通過率は20~30%程度
   最終面接通過率は60~70%程度

・SPIや筆記試験もある場合もあるが、新卒の就職活動と違い、よほど常識外の点数を取らなければ選考に影響しない場合が多い(キャリア採用は業務経歴書等の経歴を重視するため)

2015年1月末 応募

応募した企業は8社。求人内容からインフラ構築案件に関われそうなものを中心に応募。一部、社内SEといった立場の求人にも応募してみた。

2015年2月上旬 最初の面接

最初の面接は今思うと酷いものだった。回答内容もダメだったが、面接を受ける態度がダメダメだった。声の大きさ、目を見て話すなどが意識できておらず、それがそのまま評価されて不採用となった。

2015年2月中旬~3月中旬 面接の繰り返し

最初の面接で失敗してから、声の大きさや目を見て話すことは気を付けるようにしたつもりだが、不採用となった企業の評価としては、「元気が無い印象を受ける」というものが多かった。

だが、面接の場数を踏むことで、おおよそ質問されることが予測でき回答内容も洗練されてきた。従って回答内容で不採用となることは少なく、「自分よりもマッチする候補者がいる」という結果での不採用が多かった。

また、企業によっては、本来一次面接を受ける前に受けるはずのWebでの適性試験の案内が来なかったり、いざ面接に行くと選考部署が異なったりするなどといった想定外もあった。両方共に不採用となったが、きちんと連絡のできない雑な企業だと感じてしまったので気にしないことにした。

よく質問される内容は以下の通り。

・転職理由
・当社の志望理由
・仕事で苦労したことと、それを乗り越えるために工夫したこと
・自分の技術的な強み・弱み
・自分のビジネススキル面での強み・弱み
・自己啓発として実施していること
・あなたの考えるリーダーにとって重要なこと
・キャリアプランは
・何か質問は

面接の最後に必ずある「何か質問は」が一番キツかった。別に質問したいことが無いわけでは無いが、かといってそこで質問したら何かわかることも少ないと思ってしまい、結局何を質問したらよいかわからなくなる。対策として、予め万能に使えそうな以下の様な質問を用意することにした(当然、本当に質問したい内容は質問する)。

・もし採用された場合の担当業務の可能性はどのようなものがあるか
・採用された場合に予め勉強しておくべきものはあるか
・選考部署での構築案件と保守案件の割合は
・社内のナレッジを共有する仕組みはどのようなものがあるか

2015年3月中旬 最終選考

そんな中、ようやく最終選考に進むことができた。最終選考に進んだ企業が最後の一社ということで、ここに引っかからなかったら、また最初から仕切り直しとなるので、面接終了後の結果待ちの期間はいつもメールチェックしていた。

2015年3月下旬 内定

そして最終面接から一週間後、内定を頂く。もともと第一志望の企業だったので、迷うことは無かった。

転職活動の結果まとめ

転職活動の結果を数字で振り返ると以下の通りになる。書類選考通過率が非常に高く、転職活動なんて楽勝だと一瞬でも思った自分がアホらしい。結果的にはギリギリの1社内定であった。

 応募企業 8社
 書類選考通過 7社 (通過率87.5%)
 一次面接通過 2社 (通過率28.6%)
 最終面接通過(内定) 1社 (通過率50%)

2016年12月 現在

転職からまもなく1年半以上経過するが、現職の業務はITの知識を発揮できるし、経験のなかったOSや機器の知識も積極的に増やせる環境であり満足度はある。しかし、仕事のことを土日も考えていたり、自宅の検証環境で検証することが多くなり、社畜まっしぐらとなっている気がする。

とはいえ、自分の持っている知識を活用して仕事を推進し、課題解決できることはとても楽しいので、もうしばらく頑張っていけるとは思う。

2016年12月10日土曜日

ESXiの異なるvSwitchをL2で接続する方法

通常実施する必要性は無いと思うが、ESXiのvSwitchをL2で接続して同じブロードキャストドメインのスイッチとして利用する方法。ネットワークOSであるVyOSを利用する。

実現方法

1. VyOSを構築

以下URLよりVyOSのイメージの入手とインストール手順がある。


こちらを参考にVyOSを構築する。仮想マシンのリソースは以下で設定する。

 ・CPU:1コア
 ・メモリ:512MB
 ・ハードディスク:2GB
 ・ネットワークアダプタ:L2で接続するvSwitch
 ・ネットワークアダプタ:L2で接続するもう一方のvSwitch

2. VyOSを設定する

以下の通り設定する。

--------------------------
$ configure
# set interfaces bridge br0
# set interfaces ethernet eth0 bridge-group bridge br0
# set interfaces ethernet eth1 bridge-group bridge br0
# commit
# save
# exit
--------------------------

確認コマンドは以下の通り。

--------------------------
$ sh bridge
bridge name     bridge id                STP enabled     interfaces
br0                 0000.000c29391f00 no                   eth0
                                                                      eth1
--------------------------

3. vSwitchの仮想マシンポートグループを設定

「無差別モード」を「拒否」から「承諾」に変更する。これによって、ポートグループに流れるすべてのフレームをVyOSが受け取れるようにし、L2フレームをvSwitch間で転送できるようになる。



2016年5月21日土曜日

Linuxのプロンプトに時間を表示させる

プロンプトに時間表示があると、作業ログを確認する際に各コマンドの実行時間が把握できてよいという小ネタ。

環境変数で設定すれば良い。私はプロンプトが長すぎると嫌なので、時間のみを表示させるようにした。

・時間のみ
# PS1='[\u@\h `date +"%H%M%S"`]\$ '
[root@t3022ce67 223648]#

・日+時間①
# PS1='[\u@\h `date +"%y%m%d %H%M%S"`]\$ '
[root@t3022ce67 160520 223612]#

・日+時間②
# PS1='[\u@\h `date +"%Y%m%d %H%M%S"`]\$ '
[root@t3022ce67 20160520_223219]#

ログイン時に常に変える場合は、.bash_profileに上記コマンドをそのまま記載して、exportに足せば良い。

# vi .bash_profile
--------------------
PATH=$PATH:$HOME/bin
PS1='[\u@\h `date +"%H%M%S"`]\$ '

export PATH PS1
--------------------

2016年5月14日土曜日

Linuxのネットワークチーミング(Bonding)の設定【RHEL 6/CentOS 6】

物理サーバを構築する際は、NICをチーミングし冗長構成を取ることが鉄板となっている。今までWindowsであればチーミングの設定を実施したことはあったが、Linuxでは実施したことがなかった。

LinuxにおいてはOS標準でBondingと呼ばれるチーミング機能が備わっているので、勉強のために設定してみた。

(2020/9/8追記)
本資料はRHEL6/CentOS 6の手順となっています。RHEL 7/CentOS 7以降のOSでチーミングする手順を以下に記載しています。

事前確認

まずは、何もしていない状態でNICのステータスを確認する。eth0とeth1が存在し、eth0だけにIPアドレスが設定されている状況となっている。この状態から、eth0とeth1のBonding設定を行う。

# ifconfig -a
---------------------------
eth0      Link encap:Ethernet  HWaddr 00:0C:29:A9:38:65
          inet addr:192.168.11.111  Bcast:192.168.11.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:496551 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12338 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:33709638 (32.1 MiB)  TX bytes:3731810 (3.5 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:A9:38:6F
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
---------------------------

Bonding設定

以下の手順で設定する。

①カーネルパラメータの設定

Bondingを有効化するためのカーネルパラメータの設定ファイルを新規作成する。

/etc/modprobe.d/bonding.conf
---------------------------
alias bond0 bonding
---------------------------

②bond0のインターフェースの設定

チーミングした場合、実際のNICにはIPアドレスは設定せず、bond0のデバイスに設定することになる。チーミングに関する各種設定についても、このファイルの「BONDING_OPTS」という項目にてスペース区切りで記載する。

チーミングのオプションは以下を参照すること。

・25.7.2. チャンネルボンディングの使用
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Channel_Bonding.html

今回は以下の設定を行った。

---------------------------
 mode=1                    ←切り替わりモードの設定(1はactive-backup)
 miimon=100               ←NICの監視感覚(単位:ms)
 primary=eth0             ←Bondingデバイス起動時の優先NIC
 primary_reselect=0      ←優先NIC復旧時に自動で戻るようにするか(0は自動で優先NICに戻る)
---------------------------

/etc/sysconfig/network-scripts/ifcfg-bond0
---------------------------
DEVICE=bond0
IPADDR=192.168.11.111
NETMASK=255.255.255.0
GATEWAY=192.168.11.31
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100 primary=eth0 primary_reselect=0"
---------------------------

③bond0に複数IPアドレスを設定

Bondingであっても、1つのデバイスに複数IPの設定が可能なので、2つめのIPアドレス設定のデバイスファイルを作成する。こちらには、チーミングのオプション設定は不要。

/etc/sysconfig/network-scripts/ifcfg-bond0:1
---------------------------
DEVICE=bond0:1
IPADDR=192.168.11.112
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
---------------------------

④eth0の設定

eth0は現状使用中のNICなので、バックアップを取得してから作り直すと良い。なお、Linuxのnetworkサービスは、本ディレクトリ内のファイルでifcfg-*で始まるものを読み込む仕様の模様。バックアップファイルを同じディレクトリに作る場合は、不要な設定ファイルの読み込みが発生しないよう、ファイル名には注意する。具体的には、バックアップの保存ディレクトリを別にするか、.bakを付ければ読み込まない仕様なのでそのように対処しても良い。

<良いバックアップファイル名>
 20160514_ifcfg-eth0
 ifcfg-eth0_20160514.bak

<悪いバックアップファイル名>
 ifcfg-eth0_20160514

設定は以下のとおり。IPアドレスやゲートウェイの設定を削除し、MASTER、SLAVEといった値を設定する。

/etc/sysconfig/network-scripts/ifcfg-eth0
---------------------------
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
BOOTPROTO=none
HWADDR=00:0C:29:A9:38:65
---------------------------

⑤eth1の設定

eth1もeth0と同様に設定する。eth0のifcfg-eth0の設定をコピーしてDEVICEとHWADDRを変更するだけで作れる。

/etc/sysconfig/network-scripts/ifcfg-eth1
---------------------------
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
BOOTPROTO=none
HWADDR=00:0C:29:A9:38:6F
---------------------------

Bonding有効化

networkサービスをリスタートし、設定ファイルの読み込みを行う。なお、ifcfg-eth0を変更してしまっているので、初回だけエラーが出力される。
※「Determining if ip address ~」のメッセージについては後述

# service network restart
---------------------------
インターフェース eth0 を終了中:  /etc/sysconfig/network-scripts/ifdown-eth: line 121: /sys/class/net/bond0/bonding/slaves: そのようなファイルやディレクトリはあ りません
                                                           [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース bond0 を活性化中:  Determining if ip address 192.168.11.111 is already in use for device bond0...
Determining if ip address 192.168.11.112 is already in use for device bond0...
                                                           [  OK  ]
---------------------------

2回目のリスタートは問題なし。

# service network restart
---------------------------
インターフェース bond0 を終了中:  [  OK  ]
ループバックインターフェースを終了中  [  OK  ]
ループバックインターフェイスを呼び込み中 [  OK  ]
インターフェース bond0 を活性化中:  Determining if ip address 192.168.11.111 is already in use for device bond0...
Determining if ip address 192.168.11.112 is already in use for device bond0...
[  OK  ]
---------------------------

最終的に以下の通りインターフェースが設定された。bond0、bond0:1にIPアドレスが設定されており、eth0とeth1はSLAVEとして起動していることがわかる。

# ifconfig -a
---------------------------
bond0     Link encap:Ethernet  HWaddr 00:0C:29:A9:38:65
          inet addr:192.168.11.111  Bcast:192.168.11.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:2574 errors:0 dropped:0 overruns:0 frame:0
          TX packets:648 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:401668 (392.2 KiB)  TX bytes:182251 (177.9 KiB)

bond0:1   Link encap:Ethernet  HWaddr 00:0C:29:A9:38:65
          inet addr:192.168.11.112  Bcast:192.168.11.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

eth0      Link encap:Ethernet  HWaddr 00:0C:29:A9:38:65
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:44 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3720 (3.6 KiB)  TX bytes:3832 (3.7 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:A9:38:65
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:54 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4320 (4.2 KiB)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
---------------------------

Bondingの詳細なステータスは以下ファイルを確認すればわかる。

/proc/net/bonding/bond0
---------------------------
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth0   ←★eth0がActive
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:a9:38:65
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:a9:38:6f
Slave queue ID: 0
---------------------------

切り替えテスト

eth0を切断してみると以下のとおりになる。1秒毎にpingを打っていたが欠けは無し。

/proc/net/bonding/bond0
---------------------------
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth1   ←★eth1に切り替わる
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: down   ←★downになる
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1   ←★+1される
Permanent HW addr: 00:0c:29:a9:38:65
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:a9:38:6f
Slave queue ID: 0
---------------------------

eth0を接続し直すと、「primary_reselect always」の設定が入っているので自動で切り戻る。こちらもping欠けは無し。

/proc/net/bonding/bond0
---------------------------
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth0   ←★eth0に切り替わる
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:a9:38:65
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:a9:38:6f
Slave queue ID: 0
---------------------------

「Determining if ip address ~」のメッセージについて

Bondingの話とは直接関係ない話となるが、networkサービスリスタート時に出力される「Determining if ip address ~」のメッセージについて説明しておく。これはエラーメッセージではなく、割り当てようとしているIPアドレスが他機器で利用されていないかチェックする機能による出力メッセージとなる。

例えばあえて重複するIPアドレスを設定してみると、以下のとおり「Error, some other host already uses address ~」と表示され、対象のインターフェースは活性化されない。

# service network restart
---------------------------
インターフェース bond0 を終了中:                           [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース bond0 を活性化中:  Determining if ip address 192.168.11.111 is already in use for device bond0...
Determining if ip address 192.168.11.110 is already in use for device bond0...
Error, some other host already uses address 192.168.11.110.
                                                           [  OK  ]
---------------------------

この機能を止めたい場合は前段で設定したifcfg-*のファイルに「ARPCHECK=no」のオプションを追加すればよいらしい。ただし、有効にしておくことの影響はないと思うので、万が一IPアドレスが重複してしまうような場合を想定して有効のままにすることをお勧めする。


人気の投稿