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日金曜日

インフラエンジニアがSIerからSIerへ転職した話

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間で転送できるようになる。