https://ochacafe.connpass.com/event/152768/
番外編の第1回。高可用性の話です。
きました pic.twitter.com/plY4jy7rsN
— umemak (@umemak8) November 29, 2019
18:30 受付開始
19:00 オープニング
19:10 セッション開始
- https://speakerdeck.com/mmarukaw/oracleclouddekao-erugao-ke-yong-xing-akitekutiya
- データセンター電源障害の話から
- OCIはまだ日本に来てから日が浅いこともあり、大規模障害はまだない。
- 海外ではあった
- Design For Failure
- サーバーは落ちる前提で考える
- クラウドベンダーの保証はSLAの範囲内まで
- アプリケーションの最終責任はユーザーが負う
- 高可用性のためのコストと複雑性を、軽減できるリスクに対してバランスを取る
- 高可用性とは
- システムが継続して可動できる能力が高いこと
- クラウドでもオンプレのときと考え方は同じ
- クラウドの特性として高可用性を比較的低コストで実現できる
- 障害のレベル
- 機器障害
- プロセスだったりハードウェアだったり
- サイト障害
- DCレベル
- 広域災害
- 地域まるごと
- 機器障害
- クラウドのリソースが備える特性を活かす
- 本質的に堅牢なOCIリソース
- オブジェクトストレージ
- 耐障害性、安価、各種サービスとの連携
- ロードバランサー
- トラフィックの高可用性
- サイトレベルの耐障害性
- OKE(K8s)
- クラスタとノードプールの自己回復
- Exadata Cloud ServiceとAutonomous Database
- Oracle Databaseの高可用性プラクティスが詰め込まれている
- RACでスケール
- OCI DNS
- グローバルレベルの耐障害性
- オブジェクトストレージ
- ユーザーに寄る高可用性実装を支援する
- リソース配置
- リージョン
- 可用性ドメイン(AD)
- データセンター
- 東京はまだ1つなので、AZ障害イコールリージョン障害
- データセンター間の通信は低レーテンシー
- フォルト・ドメイン
- DC内のサーバラック群をグループ化したもの
- 仮想サーバーを別々の物理サーバーに配置したいときに有効
- リソースの有効範囲
- グローバル>リージョン>可用性ドメイン>フォルト・ドメイン
- リージョンレベルのリソース(VCN)でリージョンまたぎをしたいときはピアリングをする必要がある
- リージョナルサブネットというのがある
- リソース配置
- 本質的に堅牢なOCIリソース
19:43 10分休憩
ビール投入
後半戦
- 高可用性要件別のモデル構成
- 単一リージョンの非冗長化構成
- コスト重視
- フォルト・ドメインを分けない
- メンテナンス停止が1回で済む
- サーバー障害時にはサーバー再作成をする
- 再作成できるように準備しておく
- インスタンスのブートボリューム・ブロックボリュームは別インスタンスにアタッチし直して再起動できる
- 仮想マシンの自動再起動(非公式機能)
- プロセスの再起動を仕込むのはユーザー
- LBのターゲットインスタンス数を1にしておくと、自動的にインスタンスが立ち上がる
- ポーリングの間隔に寄るが、15〜20分くらいで上がってくる
- 内部のIPが変わるので、LBがあると良い
- リブート・マイグレーション
- ハードウェアの障害予知など
- 2週間前くらいに通知が来る
- 単一リージョンの非冗長化構成
- サイト障害、広域障害は考慮しない
- コスト重視
- フォルトドメインは分散させる
- オートスケーリングが使える
- ターゲットインスタンスを動的に設定する
- インスタンスの仮想NICにセカンダリIPを設定できる。それを別インスタンスに持っていく(フェイルオーバー)ことができる。
- コマンド一発でいける
- DBCS
- かんたんにData Guard構成が作成可能
- 今のところリージョン内のみ
- マルチリージョンアーキテクチャ
- リージョンまたぎ
- DNSで分散させる
- マルチリージョンにするには、利用するリージョンを選択する
- デフォルトではホームリージョンのみ
- リージョン間の通信はピアリングで接続する
- アウトバウンド通信にインターネット経由と同じ金額がかかる(10TBまで無料)
- ベストエフォートなので、帯域保証したい場合はFastConnect(専用線接続)を使用する
- リアルタイムレプリケーションが必要な場合は、サードパーティのものを使う必要がある
- トラフィック管理
- ヘルスチェック
- OCI外から監視する
- AWS,CGP,Azureなど
- フェイルオーバー
- DNS切り替えるまでの時間は、誤検知を避けるために30秒程度にしておく
- OCI外から監視する
- ヘルスチェック
- 単一リージョンの非冗長化構成