オンライン交換の際に考慮したい事

サーバは入れて終了ではない

形あるものはいつか壊れる。

それは電子機器においても例外ではなく5年もたつとサーバの部品が壊れ始める。
(もちろんそれより前に壊れることも多いが)

また、使用していくうちにディスク容量やメモリが足りなくなり増強することもある。

そういった場合、サーバの部材を交換したり、追加したりして対応する。

無停止でもできるけど…

ただ、そういった作業を行う間、サービスが止まってしまうのはサービス提供者側としては当然避けたい。

なので、昨今のシステムでは、ある程度サーバを止めずにオンラインで交換することが可能になっている。

RAIDを組んだHDD、2系統用意したディスクコントローラー、冗長化したサーバの片系etcといった具合に、一部壊れてもサービスが継続可能なシステムの場合、サービス停止しなくてもメンテナンス可能な場合が多い。

なので「オンラインで交換しましょう!」という話になり、実際にオンラインで交換することも多い。

ただし、オンライン交換にもリスクはあるので、作業前に下記のことは考慮しておく必要がある。

作業ミスによるシステム停止

「Only Human」という言葉もある通り、作業を行うのは人間であり、当然ミスすることもある。

同じようなシステムが並んでいると、間違えて別のサーバのケーブルを引っこ抜いたり、電源を落としたりなんてことが実はままある。(当然、めちゃくちゃ怒られるわけだが。)

サーバに限らず、コンピュータ関連は突然電源を切られたり、通信が途切れたりすると整合性が取れなくなり、ディスクやSSDが壊れたり、ハードウェアは無事だったとしても、データやファイルが壊れて使い物にならなくなったする。

最悪なのがデータベースがぶっ壊れて蓄えられた全データが吹っ飛ぶというケースである。
(そういう事態のためにバックアップを定期的にとるわけだが)

特にデータベースがそうだが、突然サーバが落ちたとしても、サービスを停止してデータの更新がない状態だと、データの整合性が取れなくなる確率はかなり下がる。

なので、オンラインで交換する場合、作業ミスによるリスクと対策は考えておく必要がある。

例えば、何か障害があった場合は、毎日取得しているバックアップから戻すというにしておけば、作業ミスで全データ飛んだ場合でも何とか復旧することは可能である。

サービス提供者としてデータをどこまで保証するか

システムが突然止まった場合、意外と困るのが「どこまでのデータがちゃんと反映されているのか」という点である。

例えば「ショッピングサイトでほしいものをカートに入れて、決済情報を入力して、注文を確定させる」といった、データが発生して登録されるまでの一連の流れをトランザクションというのだが、急にシステムが止まった場合、どこまでのトランザクションデータが保証されるかが難しいのである。

システムが止まる直前に注文ボタンを押したとして、データがサーバに到達する前にシステムが止まっていたら受け付けられていないし、サーバ側で受け付け処理をしている途中で落ちたら処理の巻き戻り(Rollback)が発生して「なかったこと」になる場合もあるし、どこまでの処理がOKだったのかを確認するのが大変なのである。

また、突然止まった場合に、利用者や関係各所にどのように通知するかを決めておく必要がある。
(社内システムだったら関係部署に電話をかけまくる、掲示板やポータルサイトに乗せる、外部に公開しているならメールなどで連絡する、Webに障害情報を出すなどなど。)

障害で止まった場合は仕方ないにしても、事前に作業があることが分かっている場合であれば、予め「何時から何時までは使えません!」「何時から何時の間は止まる可能性があります!」と周知しておいた方が、サービス提供者側にも作業者側にも利用者側にも優しい。

考えておくかおかないかは大違い

というような事があるので、個人的にはシステムを止めて交換する方が好きである。
(さすがにRAID構成のHDDはオンラインで交換するけど。)

結局は腹くくってオンラインで交換することになるわけだが、イケイケドンドンで何も考えず「オンラインでやればいいじゃん」というのではなく、上記のようなことを検討した上で、「オンラインでやりましょう」と言うことが大事である。

コメント

このブログの人気の投稿

ヤマダ電機の安心会員住所変更をした

JP1の定義をドキュメント化するjp1ajs2.jobdocが超便利

curlでADのドメインユーザーでプロキシを超える