2月29日に発生したWindows Azureのトラブルは証明書の有効期限計算が引き金だった 46
発端はよくありそうなミスだった 部門より
日本マイクロソフトが、2月29日に発生したWindows Azureのトラブルについて、その原因を米MicrosoftのBill Laing氏によるレポートの翻訳という形で報告している。
これによると、2月29日のトラブルはやはりうるう年が原因で、Windows Azureを提供するクラスターシステム内でやり取りする「転送証明書」の有効期限計算にミスがあったのが引き金になったという。これらの証明書では作成日の1年後が有効期限として設定されるのだが、2012年2月29日に作成された証明書では有効期限が「2013年2月19日」という存在しない日付に設定されてしまい、そのため証明書の作成自体が失敗してしまうという。転送証明書は新しい仮想マシンを作成する場合などに作成され、証明書の作成に失敗した場合は仮想マシンの作成自体も失敗する。Windows Azureでは仮想マシンの作成に失敗するとリトライを試みるが、3回連続で失敗すると「ハードウェア故障」と見なされてそのサーバーは待機状態となり、そのサーバーで動いている仮想マシンがほかのサーバーに移動されるという。しかし、仮想マシンを他のサーバーに移動させる際にも転送証明書の作成が必要となり、結果的に他のサーバーでも同様のことが繰り返されて次々とサーバーが待機状態になっていったという。
問題が発生したのは28日の0:00(GMT)で、2:38に不具合を特定、
2:55にクラスターのサービスマネージメント機能を停止、ソフトウェアの更新コードは7:20に準備でき、テストしたうえで10:11には修正プログラムの展開を開始したという。ただし、一部のクラスターでは最新ではない管理ソフトウェアのままだったため個別の対応が行われたのだが、そこでミスが発生、ネットワークから切り離されるというトラブルも発生していたようだ。これらの問題を解決できたのは翌日の10:15分だったという。
「2013年2月19日」という存在しない日付? (スコア:5, おもしろおかしい)
>2012年2月29日に作成された証明書では有効期限が「2013年2月19日」という存在しない日付に設定されてしまい
なんてこったい、来年の2月19日にはまた別の問題が発生するじゃないか!!
# ちなみに原文では2/29
Re:「2013年2月19日」という存在しない日付? (スコア:3, おもしろおかしい)
いやそれはつまり、やはり今年で世界は終末をむかえるってことなんだよ。
Re:「2013年2月19日」という存在しない日付? (スコア:2, おもしろおかしい)
>発端はよくありそうなミスだった 部門より
そういうことだ。
Re: (スコア:0)
だから世界終末の証拠が見つからなかったんですね。
http://idle.srad.jp/story/12/03/13/0054252/ [srad.jp]
#存在しないから探せなかったと
Re: (スコア:0)
「2013年2月19日」なんて日付は存在するわけないって、ずっと前から決まっていたのにね
---- 古代マヤ人
Re: (スコア:0)
無様ね。
Re: (スコア:0)
しかし平成30年度 [msn.com]は存在する
Re:「2013年2月19日」という存在しない日付? (スコア:1)
もう値下げするつもりはない、ってことですよ。
Re: (スコア:0)
未来のことは正確には表せませんから。
西暦、例えばグレゴリオ歴3000年だって存在するかはわかりませんよ?
未来のことは「現在の暦がそのまま続いているだろう」と推定するしかない。
クラウディアさんの有効期間は切れていない (スコア:4, おもしろおかしい)
# いやまあ Azure 使ったことないんだけどさ
Re:クラウディアさんの有効期間は切れていない (スコア:2, 興味深い)
改修に追われて精神的にギリギリなクラウディアさんですか?
Re: (スコア:0)
それはそれで、グッとくるものあがる。
Re:クラウディアさんの有効期間は切れていない (スコア:1)
それは胃酸か何か?
Re:クラウディアさんの有効期間は切れていない (スコア:1)
Re: (スコア:0)
じゃあ某萌えるSE残酷物語とのコラボで。ちょうどネットワークインフラ関係だし。
Re: (スコア:0)
このへん [wikipedia.org]ですか?
#新刊出てたの気付かなかったorz
Re: (スコア:0)
3つめの番外編のカモメさんの話を読みたくなった。
Re: (スコア:0)
空色スカートを空色パン…
# いや、勝手に妄想してしまった
Re: (スコア:0)
バレンタイン壁紙は義理義理ではない
という解釈でよろしいか
なんという・・ (スコア:1)
日付型すら使っていないとか、予想よりはるかに低レベルで驚いた。
Re: (スコア:0)
ITスタッフの9割はスキル不足 [srad.jp]
# スタージョンの法則の特殊例にすぎないよな
Re: (スコア:0)
Excelも使いこなせないMS技術者?
Re: (スコア:0)
クラスターの拡張は自動的にやっているのかと思いきや中の人がExcelで有効期限計算したりしてたのか…。
正直そっちのほうが障害そのものよりはるかに恐ろしい
Re: (スコア:0)
いやいや、むしろExcelだったら問題なく処理してくれます。
A1に2012/2/29と入力しておいて、適当なセルに=DATE(YEAR(A1)+1,MONTH(A1),DAY(A1))などと。
Re: (スコア:0)
Excelは間違えなくても人間が手動でやってたらミスるのは必然でしょ。
ああ日本ではミスった担当者の資質の問題にすべて帰着されるんだっけ。(そしてミスはいつまでたってもなくならない)。
Re:なんという・・ (スコア:1)
いつまでたってもなくならないのであればそれはミスではありません。
それは仕様です!
Re: (スコア:0)
方眼紙として便利に使ってます
Re: (スコア:0)
こんな典型的な「『車輪の再発明』の連鎖」が、21世紀になってもまだ解決されてないとか、もうね…。
Re:なんという・・ (スコア:2)
DateTime d = new DateTime(2012, 2, 29);
Console.WriteLine(d);
Console.WriteLine(d.AddDays(365));
Console.WriteLine(d.AddYears(1));
ふつーに書けばふつーに正しく計算するのだけど、やっぱり車輪の再発明をしていたのだろうね。
Re: (スコア:0)
DateTime d = new DateTime(2012 + 1, 2, 29);
これで例外をcatchしてなかったんじゃね?
Re: (スコア:0)
2012/1/1〜2/28に呼ばれることも考慮する必要があるから、
Console.WriteLine(d.AddDays(365));
は、1年を満たさないという例?
$d =`date -d "2012-02-29 1year" "+%Y-%m-%d"`;
これは「ふつー」じゃない?
Re: (スコア:0)
月末日を求めるのに、一生懸命条件分岐で処理するコードって、困った事によく見かけるんですよね・・・
# 月が1,3,5,7,8,10,12は31、2は年を4で割った余りが(以下略)なんてifの羅列が
年、月、日とシリアル値の相互変換ができる言語なら、[翌月1日]-[1日]でいいじゃんと思いつつスルーしていますが。
Re:なんという・・ (スコア:1)
> [翌月1日]-[1日]でいいじゃん
そして翌月を求めるところで単に月に1を足してバグると。
Re: (スコア:0)
日付型使っても[翌月1日]のところを「1日を求める」→「翌月を求める」の順に処理しないとバグることがあるよ(日付型の仕様にもよるが)。
「こんな簡単なことも…」とか言ってる奴に限ってこんな簡単なことをミスる。
Re: (スコア:0)
今回の問題とは直接関係ないですけど、
いわゆる日付型で、『2012年2月29日の1年後』を取得すると、
たぶん『2013年2月28日』か『2013年3月1日』か『日付取得エラー』になると思うんですけども。
これはこれで何かのトラブルの元になりそうな気もする……
#手近にあったPostgreSQLだと2013-2-28を返してきた。他の環境ではどうなんだろう。
Re:なんという・・ (スコア:1)
日本の民法準拠なら「2013年2月28日」となるのが正解ですね。
Re: (スコア:0)
「民法準拠ならば」ですね。でも、サービスの期間にこれを適用すると、初日不算入やら「1年間有効って言ったじゃねーか」とクレームの嵐になる予感.したがって、対応する暦日がない場合や休日に当る場合は、翌日にするのが無難でしょう。
#この間Symantecの有効期間最終日にLiveUpdateしようとしたら、延長権買わないとだめだと曰いやがった。あれもこれ絡みか?
Re:なんという・・ (スコア:1)
C#だと、2012/2/28と2012/2/29の1年後は2013/2/28でした。
当然といえば当然ですが、2/28の1年後と365日後はちがいました。
Re: (スコア:0)
『2012年2月29日の365日後』を取得すれば良いのでは?(1日のズレが累積するのは仕様です!)
Re: (スコア:0)
2012年2月28日の1年後が2013年2月27日になるのか。それが原因で障害起こしたら背比べしてるどんぐりからボロクソに言われること間違いないね。
前のストーリー (スコア:0)
この記事の「前のストーリー」が
コメント欄、本来あるべき姿から乖離していってる? [srad.jp]
になってるんだけど???
Re: 「2013年2月19日」という存在しない日付 (スコア:1)
vyama 「バグ取れワンワン」
Re: (スコア:0)
JavaのCalendarはデフォルトで、1月40日のような日付も平気で受け付けますね。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Calendar.html#... [sun.com]
Re: (スコア:0)
タレコミはいつ修正されるんだ?