SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|

2016-12-30(Fri) うるう秒を回避する

  何を隠そう、オイラの仕事はLinuxのテクニカルサポートなのだが、数年に一度のうるう秒発生前の約半年は、関連する質問が殺到して、うっとおしいことこの上ない。

  んが、毎度のようにLinuxOSが、何かと(パニック、ストール、CPU100%などを)やらかしてしまうのも事実であり、GoogleやAmazonが前後数時間の1秒を微妙に延ばして回避するというのは、もっともクールな回避方法だったりする。

  そういう自分はどうするのかというと、単にntpサーバを止めることで、対処するのであった。問題は、うるう秒の発生「当日(厳密には時差の関係で12月31日の午前9時以降)」に、上位のntpサーバから「うるう秒があるよ」というLIビットが通知され、それを受け取ったntpサーバがLinux kernelに通知され、kernelが誤動作することで起こる。ならば、最初からLIビットを受け取らなければいいのだ。

  その場合、正月明けにntpサーバを再起動するまで、時刻が1秒進んだ状態となり、再起動後には、ポンと1秒戻ることになるが、ウチでは1秒の狂いや1秒の時刻戻りが影響するような微妙なアプリは走らせていないので、それでいいのである。

  既に職場のntpサーバは、テスト用の1台を除いて、すべて停止してある。オイラは結構な数のサーバを管理しているので、結構な手間だった。

  さらに自宅のntpサーバも停止しなければならない……って、自宅に何台あるんだ? デスクトップPC、サーバほかの物理マシン以外に、OpenStack上の仮想マシン、ラズベリーパイ……あ、借りてるVPSもあったっけ。のべ11台。そのほかにもありそうだが、まぁいいや。

  あまりにも数が多いので、スクリプト(?)を作った。

#ssh root@localhost systemctl stop chronyd
#ssh root@******* systemctl stop ntpd.service
#ssh root@******** systemctl stop ntpd.service
#ssh root@****** systemctl stop chronyd
#ssh root@***** systemctl stop chronyd
#ssh root@**** systemctl stop chronyd
#ssh root@**** systemctl stop chronyd
#ssh root@******** systemctl stop chronyd
#ssh root@********* systemctl stop chronyd
#ssh root@******* systemctl stop chronyd
#ssh root@******* systemctl stop chronyd
 
#ssh root@localhost systemctl start chronyd
#ssh root@******* systemctl start ntpd.service
#ssh root@******** systemctl start ntpd.service
#ssh root@****** systemctl start chronyd
#ssh root@***** systemctl start chronyd
#ssh root@**** systemctl start chronyd
#ssh root@**** systemctl start chronyd
#ssh root@******** systemctl start chronyd
#ssh root@********* systemctl start chronyd
#ssh root@******* systemctl start chronyd
#ssh root@******* systemctl start chronyd
 
ssh root@localhost chronyc sources
ssh root@******* ntpq -p
ssh root@******** ntpq -p
ssh root@****** chronyc sources
ssh root@***** chronyc sources
ssh root@**** chronyc sources
ssh root@**** chronyc sources
ssh root@******** chronyc sources
ssh root@********* chronyc sources
ssh root@******* chronyc sources
ssh root@******* chronyc sources

  一応、ホスト名は秘しておくが、アホな数だ。意外とchronyに移行しているサーバが多いのに気付かされた。

  さて、これで無事に正月が迎えられるかねぇ。