IT の基礎

可用性と冗長化

可用性は、システムが使える時間の割合です。部品を直列につなぐと全体の稼働率は下がり、同じ部品を並列に並べて冗長化すると上がります。

可用性は、システムが使える時間の割合で、稼働率 99.9% なら 1 年のうち約 8 時間 46 分は止まってよいという意味です。全体の稼働率は部品の組み方で決まります。どれか 1 つが止まると全体が止まる直列の構成では部品より下がり、同じ役割の部品を並べてどれかが動けばよい並列の構成では部品より上がります。PCA の問題で「単一障害点をなくす」「複数のゾーンに置く」が正解になるのは、この並列の効果を使うためです。

稼働率を停止時間に直す

稼働率は、動いていた時間を測った期間全体の時間で割った値です。1 年 (525,600 分) のうち 525 分止まれば、稼働率は約 99.9% になります。99.9% と 99.99% は数字の差が小さく見えますが、許される停止時間は 10 倍違います。9 の数で「スリーナイン (99.9%)」「フォーナイン (99.99%)」とも呼びます。

稼働率1 年 (365 日) で止まってよい時間1 か月 (30 日) で止まってよい時間
99%3 日 15 時間 36 分7 時間 12 分
99.9%8 時間 46 分43 分
99.95%4 時間 23 分22 分
99.99%53 分4 分
99.999%5 分26 秒

SLO は自分たちの目標、SLA は契約上の約束

SLO (サービスレベル目標) は、自分たちのサービスで目指す稼働率などの目標値で、チームの中で決めます。SLA (サービスレベル契約) は、利用者との契約で約束する値で、下回ったら返金などの補償をします。約束を破らないよう、SLA は SLO より低めに置くのがふつうです。

Google Cloud の SLA は、サービスごとに月単位の稼働率で公開されています。Compute Engine の SLA では、VM 1 台 (メモリ最適化以外のマシン) が 99.9%、複数のゾーンに置いた VM が 99.99% です (Premium Tier の場合。ストックホルムのリージョンだけは 99.95%)。下回った月は、翌月以降の請求からクレジットとして差し引かれます。SLO の決め方は可観測性と信頼性の運用、障害からの復旧の設計は可用性と災害復旧で扱います。

単一障害点は冗長化でなくす

単一障害点 (SPOF、Single Point of Failure) は、そこが壊れると全体が止まる部品です。サーバーが 1 台しかなければ、そのサーバーが単一障害点です。冗長化は、同じ役割の部品を複数置いて、1 つが壊れても残りで処理を続けられるようにすることです。

単一障害点あり利用者サーバー壊れると全停止冗長化利用者ロードバランササーバー A故障サーバー B処理を続ける
サーバーを 2 台にし、ロードバランサで振り分けると、1 台の故障では止まらなくなる

冗長化した構成では、振り分ける側のロードバランサが新しい単一障害点にならないかも確かめます。Google Cloud のロードバランサは、Google のインフラ全体に分散して動くマネージドなサービスなので、利用者が 2 台目を用意する必要はありません。また、サーバーを 2 台置いても同じゾーン (データセンターの区画) にあれば、ゾーンごと止まったときに両方止まります。ゾーンについてはリージョン・ゾーンと可用性で扱います。

直列は稼働率の掛け算、並列は止まる確率の掛け算

Web サーバー、アプリのサーバー、データベースのように、要求が順に通る部品は直列です。全部が動いているときだけ全体が動くので、全体の稼働率は各部品の稼働率の掛け算になります。99.9% の部品を 2 つ直列にすると 99.9% × 99.9% = 99.8001% で、部品 1 つより下がります。

並列に並べた部品は、全部が同時に止まったときだけ全体が止まります。99.9% の部品が止まっている確率は 0.1% なので、2 つが同時に止まる確率は 0.1% × 0.1% = 0.0001% です。全体の稼働率は 100% からこれを引いた 99.9999% になります。

直列: 両方が必要全体 99.8001%部品 A99.9%部品 B99.9%並列: どちらかが動けばよい全体 99.9999%部品 A99.9%部品 B99.9%
同じ 2 つの部品でも、直列だと停止時間が約 2 倍に増え、並列だと約 1,000 分の 1 に減る

下の計算機で、部品の稼働率、数、組み方を変えて、全体の稼働率と年間の停止時間を確かめてください。

試す可用性の計算機

部品 1 つの稼働率
2 つ
組み方
99.9%99.9%
全体の稼働率
99.8001%
年間の停止時間
17 時間 31 分

部品 1 つなら年 8 時間 46 分 (365 日で計算)

直列では 2 つ全部が動いているときだけ全体が動くので、稼働率を掛け算します。99.9% × 99.9% = 99.8001% で、部品 1 つより下がります。

この計算は、部品どうしが無関係に壊れることを前提にしています。同じ電源やネットワークを使う部品は一緒に止まるので、実際の稼働率は計算より低くなります。公開されている SLA も、この計算の値をそのまま約束するものではありません。Compute Engine の SLA では、複数のゾーンに置いた VM は 99.99% です。冗長化するときは、部品を別のゾーンやリージョンに分けて、一緒に止まる原因を減らします。

PCA の問題で「1 つのゾーンが止まってもサービスを続けたい」とあれば、VM を複数のゾーンに分けて置き、ロードバランサで振り分ける構成を選びます。「リージョン全体の障害にも耐えたい」なら、同じ考え方で複数のリージョンに分けます。分ける範囲が広いほど、一緒に止まる部品は減り、費用と構成の手間は増えます。

IT の基礎の章はここまでです。次の章「Google Cloud の土台」では、まず学習用の環境を作るところから始めて、ここまでの知識を Google Cloud の上で確かめていきます。

理解度チェック

答えを開く前に、自分で考えてください。結果はこのブラウザにだけ残り、間違えた問題は復習のページでまとめて解き直せます。

思い出す

稼働率 99.9% と 99.99% では、1 年で止まってよい時間はそれぞれどのくらいですか。2 つの数字の差が小さく見えるのに、なぜ大きな違いになるのですか。

状況で選ぶ

Web アプリを 1 つのゾーンにある VM 1 台で動かしています。新しい要件は、1 つのゾーンが丸ごと止まってもサービスを続けることです。どう構成を変えますか。

説明する

Web サーバー、アプリのサーバー、データベースが 1 台ずつ直列につながり、どれも稼働率 99.9% です。全体の稼働率は部品 1 つと比べてどうなりますか。全体の稼働率を上げるにはどうしますか。理由とあわせて説明してください。

章末の確認

「IT の基礎」の章と、1 つ前の章の問題を混ぜています。分野が入れ替わっても選べるかを確かめます。

状況で選ぶ

社内で開発した Web アプリのコードがあり、これを公開したいと考えています。社内に運用の担当者はおらず、OS のセキュリティパッチを当てる作業はしたくありません。どの形を選びますか。

出典: クラウドとは何か
状況で選ぶ

あなたはネットワークエンジニアとして 5 年働き、ルーティングや VPN の設定を日常的に扱っています。一方で、データベースは触ったことがありません。このカリキュラムの IT の基礎の章をどう進めますか。

出典: このカリキュラムの進め方
状況で選ぶ

VPC に Linux の VM を立て、運用担当者が SSH でログインできるようにします。セキュリティの担当者から「default ネットワークのルールのままでは開けすぎ」と指摘されました。どのファイアウォールルールにしますか。

出典: TCP、UDP、ポート
状況で選ぶ

受験は 1 か月後です。ネットで見つけた問題集には、Mountkirk Games と Dress4Win のケーススタディを使った問題がたくさん載っていました。ケーススタディの準備をどう進めますか。

出典: PCA 試験の範囲と形式
状況で選ぶ

来週の土曜に、Web サーバーを新しい IP アドレスへ移します。www の A レコードの TTL は今 86400 秒 (1 日) です。切り替えたあと古いサーバーへ届く利用者を、できるだけ早く減らしたいと考えています。どうしますか。

出典: DNS
状況で選ぶ

自分の PC から Compute Engine の VM に、鍵の組を使って SSH でつなぎたいと考えています。PC で秘密鍵と公開鍵の組を作りました。鍵はどう置きますか。

出典: Linux とコマンドライン
状況で選ぶ

注文を記録する Cloud SQL のデータベースがあります。要件は、主系のゾーンが障害で止まっても書けたはずの注文を 1 件も失わないこと (RPO 0) です。書き込みが少し遅くなるのはかまいません。どう構成しますか。

出典: データベースの基礎