― Web Technology and Life ―

サーバーの時刻がズレてしまったときの対応方法

2014-05-03
サーバーの時間がずれている怪がずっとよくわからず、調べずに放置していたら、めんどいことになったので、ついに調べたのでそのメモ。

背景

開発マシンがWindowsの中にVMwareでubuntuいれていて、VMをスリープにしておくと、VMのLinuxの時間も止まる現状があり、gitのコミット時間がズレて困っていた。あと、こっちのほうがクリティカルなんだけど、会社のマシンでPerlのNet::Amazon::EC2ってライブラリで定期的にバッチ処理用のサーバー立ち上げて、処理していたんだけど、サーバーの時間が著しくずれている(たぶん一時間くらい?)と、EC2たちあげるときにAPIがエラーを返すっぽくて、Net::Amazon::EC2の部分でこけることがあって、何か月かに一度だったので、そのたびにサーバー再起動していた。で、この前再起動したら、sshdが一緒に立ち上がらず休日にいそいそと会社にいくはめになり、マジめんどいと思った。

いままでは、サーバーを再起動するくらいしか、リナックスのサーバー内の時間を合わせる方法を知らなかった。

手法 ~NTP的なやつを使うのがベスト~

手法としてはNTP的なやつを使うと、有志で公開してくれている時刻合わせ用の外部サーバーと時間を同期してくれるってのが主流。で、細かくいくと以下の4つの方法がある。

  1. ntpdateコマンドを使ってバッチで同期(cron登録して任意のタイミングで同期)
  2. ntpサーバーを立ち上げる
  3. date関数を使って自分で時間セット(念のため)
  4. サーバーの再起動(念のため)

3,4の方法は一応網羅的に載せてあるだけで、NTPとかよくわからない昔の自分くらいのスキルの方向けですね。

リナックスコマンド使えるとか、デーモンがconfがどうのこうのってわかる人は、1,2。

1,2の違いは、まず、有志で公開してくれている時刻合わせ用の外部サーバーの負荷を気遣うかどうかって話で、ntpdateコマンド使う方は、1日に一回くらいcronでたたくくらいの負荷だけど、ntpサーバーたてるとより負荷を与えてしまって、数分に一回くらいミニく感じとかそんなんだと思う(よく調べてない)。次に、1は手動or cronで自動実行だけど、ntpはデーモンが死んでないか死活監視しなきゃいけないから、それもトレードオフ。(cron使うかどうかもトレードオフ)

リファレンス

参考にさせて頂いたのは以下のリンク。NTPの設定例とか以下参照。基本は、aptとかyumで落として、confをちょっと変えるだけでいいっぽい。

謎 ~ズレるサーバーとズレないサーバー~

一応、数台のサーバーがあるんだけど、サーバーによって結構ずれるものとずれないものがあるのがどういうわけか謎。ズレやすいサーバーはとにかくズレていくけど、ズレにくサーバーはあまりズレない。

とりあえず、こうしてまたLinux的なインフラの知識が一つ増えたのは、コレ幸い

【追記】
VMWAREのページにベストプラクティスがあって、[Linux ゲストの時刻管理のベスト プラクティス](http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1033498)をみると、NTPは大幅な時間のずれがあると時刻修正できずに死んじゃうらしいので、「tinker panic 0」というのをconfに書いてあげるといいというのを、uzullaさんに教えて頂きましたー!あと、はてぶコメにあるように、ntpdateの場合は、hwclockをあわせて使うべし!ということですー!

Linux update_at : 2014-05-06T19:08:12
hirobanex.netの更新情報の取得
 RSSリーダーで購読する   
blog comments powered by Disqus