二つを混ぜない
「1台が止まっても、ほかの機械で処理を続けたい」。これは止めないための話です。「壊れても、消されても、データを戻せるようにしたい」。これは失わないための話です。
この二つは、似ているようで別物です。止まらない仕組みを作っても、間違って消したデータは、すべての機械で一緒に消えます。だから、両方を別々に用意します。
止めない:1台が止まっても続ける
1台が止まっても処理を続けるには、次の三つがそろっている必要があります。
- 処理を引き継げる機械が、ほかにある:同じアプリケーションを、別の機械でも動かせる。
- データを、引き継いだ機械からも読める:データが、止まった機械の中に閉じ込められていない。
- 止まったことを判断して、切り替える仕組みがある:3台以上で多数決を取り、残った側で続ける(連載の第5回)。
最初からすべてを自動にする必要はありません。まずは、止まったら人が気づいて、手順どおりに切り替えられること。自動にするのは、その手順が固まってからです。
データの置き場所を分ける
処理をする機械と、データを置く機械を分けておくと、見通しがよくなります。たとえば、1台をデータの保存に専念させ、ほかの機械は処理に専念させる。処理の機械は、壊れても入れ替えれば済みます。
ただし、データを置く1台が止まれば、全体が止まります。だから、データを置く機械こそ、別の機械への複製とバックアップを厚くする必要があります。
失わない:3-2-1ルール
バックアップの考え方として、よく知られているのが3-2-1ルールです。
- 3:データを3つ持つ(元のデータと、写し2つ)。
- 2:2種類以上の保存先に置く。
- 1:1つは、別の場所に置く。
加えて、今は「消されないバックアップ」が大事です。データを暗号化して身代金を求める攻撃は、つながっているバックアップまで一緒に暗号化しようとします。一定期間は書き換えも削除もできないバックアップを、1つは持っておきます。
格安の共用サーバーを、バックアップ先にする
私の計画では、別の場所に置く写しの一つに、格安のレンタル共用サーバーを使います。サービスをVPSと自宅のNASに移したあとも、共用サーバーの契約を安いプランで残し、データベースの写しを定期的に送っておく。月数百円で、建物の外に写しが置けます。
送るデータは暗号化してから送ります。自分の管理下にない場所に置く以上、中身を読まれない形にしておきます。
この段階でやること
- 止まったときの切り替え手順を書き、実際に一度試す。
- データを置く機械を決め、ほかの機械への複製を設定する。
- 3-2-1になるように、写しの置き場所を決める。1つは消されない設定にする。
- 共用サーバーへ、暗号化したデータベースの写しを定期的に送る。
- 写しから、実際に戻せることを確かめる。