Comments
Description
Transcript
実践!! 高可用性システム構築~RAC詳細編
実践!! 高可用性システム構築 ~RAC詳細編 ~ 日本オラクル株式会社 製品事業統括 テクノロジー製品事業統括本部 エンジニア 小林 史郎 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい ては、弊社の裁量により決定されます。 OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 Copyright© 2011, Oracle. All rights reserved. 2 Agenda • Real Application Clusters概要 • 高拡張性① • キャッシュの一貫性 • 高拡張性② • パラレル処理 • 高可用性 • まとめ Copyright© 2011, Oracle. All rights reserved. 3 Real Application Clusters概要 Copyright© 2011, Oracle. All rights reserved. 4 Real Application Clusters (RAC) とは • Oracle Real Application Clustersとは システム障害によるダウンタイムを最小に抑え、データ保護と連続的な サービス環境を実現するOracle Databaseのクラスタ技術 • 特徴 高拡張性:サーバの追加によって容易にスケールアウトが可能 高可用性:Active-Activeのクラスタ構成により、障害時サービスが 停止しても残りのサーバーで処理を継続できる 障害によるサーバ停止 があっても、システムは 残りのサーバーが維持 できる Active 1つのデータベースに 複数のサーバ(ノード)から 同時にアクセスできる Active Active Active 処理量の増加に合わせ、 容易に拡張可能 共有ディスク Copyright© 2011, Oracle. All rights reserved. 5 RACの特徴① 高拡張性の実現 • サーバーの処理性能を高めるためには… • CPUコアを増設して同時実行性を向上 • CPUコアを増設するアプローチは2つ:スケールアップ / スケールアウト スケールアップ スケールアウト + + サーバーにCPUを増設 + ノードを追加してCPUを増設 Copyright© 2011, Oracle. All rights reserved. 6 RACの特徴② 高可用性の実現 • HA(Active-Standby)構成では、 • RAC(Active-Active)構成では、 全てのサーバーが稼働しているため 障害時にディスクの切り替えや すぐに別のサーバーですぐに処理を再 データベース・インスタンスの 開することが可能 再起動が必要 生存ノードに再接続 することで処理を続行 Standby機を起動させる ことで処理を続行 待機サーバー 起動 Active 稼働 サーバー Active Standby Active Active Active 待機サーバー ディスクの 切替え Active-Standby構成 Copyright© 2011, Oracle. All rights reserved. RAC構成 7 RAC データベースとインスタンスの関係 • 複数のインスタンスが同じデータベースにアクセスする • クライアントはどのインスタンスに接続をしても同じSQLを 発行することができる クライアントはどのインスタンスに接続しても同じ Instance1 SGA Instance2 SGA Node1 Instance3 SGA Node2 Node3 データベース Copyright© 2011, Oracle. All rights reserved. 8 RACの構成 Public Network クライアントからの接続 Private Network (Interconnect Network) ノード間の通信(ハートビートや、 キャッシュ・データのやり取り) Oracle Clusterware クラスタメンバシップと データベースシステム の管理 RACサーバー(ノード) Oracle インスタンスを稼働 RAC 複数のOracleインスタ ンスでデータの一貫性 を保つ Oracle Database (RAC) Oracle Clusterware ※REDO、UNDOは インスタンスごとに用意 共有ディスク 全てのサーバーからアクセ SPFILE スできるディスクに、Oracle データベースのファイルを 配置 アーカイブ REDOログファイル REDOログ ファイル データファイル UNDO ファイル 制御ファイル Copyright© 2011, Oracle. All rights reserved. 9 RACのソフトウェアとコンポーネントの関係 • RACを構成するためには Oracle Clusterwareが必要 • 11g R2から Oracle Clusterwareと Oracle ASMが統合され Oracle Grid Infrastructureの構成要素となった • データベース統合基盤となるコンポーネントを集約 11g R2 11g R1まで Oracle Database Listener Oracle Database Listener Oracle Database以外は Grid Infrastructureに Listener Oracle ASM Oracle ASM Oracle Clusterware Oracle Clusterware Oracle Grid Infrastructure Oracle ASM … Oracle Automatic Storage Management Copyright© 2011, Oracle. All rights reserved. 10 RACの高拡張性 キャッシュの一貫性 Copyright© 2011, Oracle. All rights reserved. 11 「ノード」を追加するということは? • RACにノードを追加するのはCPUを追加するということ • 同時に実行可能な処理を増やすことができる • 1つの処理を並列化することができる Copyright© 2011, Oracle. All rights reserved. 12 複数あるCPUの利用 複数の処理を同時実行 (スループットを向上) クライアント SQL サーバー CPU ストレージ 1つの処理を並列実行 (レスポンスタイムを向上) クライアント SQL SQL SQL SQL サーバー CPU ストレージ Copyright© 2011, Oracle. All rights reserved. 13 キャッシュの一貫性を保持する仕組み • Cache Fusion • 各ノード間でキャッシュの一貫性を維持する仕組み • 要求されたOracle データ・ブロックが他のノードで更新されていても、 最新のデータ・ブロックを取得することが可能 SQL> select * from sales; SQL> select * from sales; SQL SQL Instance1 SGA キャッシュの 一貫性を維持 Instance2 SGA Instance3 SGA Datafile Copyright© 2011, Oracle. All rights reserved. 14 RACのデータアクセス Cache Fusion • キャッシュ・ヒットした場合 • キャッシュのデータを使用 • キャッシュ・ミスした場合 • シングル・インスタンス • ディスクから読み込む • RAC • 他ノードのキャッシュから受け取る • ディスクから読み込む SQL Server Process キャッシュの 一貫性を維持 Copyright© 2011, Oracle. All rights reserved. 15 Global Resource Directory(GRD) • Oracle データ・ブロックをどのインスタンスがどのロック状態で キャッシュしているかを管理する領域 • RACの全Oracle インスタンスのSGA上に分散配置 • あるデータ・ブロックのロックの状態に責任をもつGRDは、 クラスタのノードうち1つあり、そのデータ・ブロックのリソース・ マスターと呼ぶ Interconnect Network このデータ・ブロックの リソース・マスターがどの インスタンスであるかは、 データ・ブロックアドレス から決定 バッファ・キャッシュ Instance 1 Instance 2 Instance 3 共有ディスク Copyright© 2011, Oracle. All rights reserved. 16 リソース・マスターの割り当て • あるデータ・ブロックのリソース・マスターとなるインスタンスは 、そのブロック・アドレスをハッシュした値に基づき決定する 対象インスタンス 1 2 3 1 2 3 … 0 1 2 3 4 5 … ハッシュ値 Instance 1 Instance 2 Instance 3 GRD GRD GRD Buffer Cache Buffer Cache Buffer Cache ブロック・アドレスをハッシュ 123AFV45 ブロック・アドレス A B 983KES58 ブロック A の リソース・マスター Copyright© 2011, Oracle. All rights reserved. ブロック B の リソース・マスター 17 キャッシュ・ヒットした場合 Instance1 GRD Buffer Cache ①ノード1に キャッシュヒットした SQL Instance3 GRD Instance2 GRD Buffer Cache Buffer Cache リソース・マスター Datafile Copyright© 2011, Oracle. All rights reserved. 18 キャッシュ・ミスした場合① リモート・キャッシュから取得 ①キャッシュミスした Instance1 GRD Buffer Cache ②このデータ・ブロックの リソース・マスターは どのインスタンスか SQL ③リソース・マスター へデータ・ブロックを リクエスト Instance2 GRD Instance3 GRD Buffer Cache ⑥ 転送 Buffer Cache リソース・マスター ⑤「Instance3」へ データ・ブロック転送を指示 ④GRDから キャッシュ状態を調べる Datafile Copyright© 2011, Oracle. All rights reserved. 19 キャッシュ・ミスした場合② リモート・キャッシュから取得 ①キャッシュミスした Instance1 GRD Buffer Cache ②このデータ・ブロックの リソース・マスターは どのインスタンスか SQL ③リソース・マスターへ データブロックを リクエスト Instance3 GRD Instance2 GRD Buffer Cache Buffer Cache ⑥ 転送 リソース・マスター ④GRDから キャッシュ状態を調べる ⑤リソース・マスターが 最新データ・ブロックを キャッシュしていた Datafile Copyright© 2011, Oracle. All rights reserved. 20 キャッシュ・ミスした場合③ ディスクから取得 ①キャッシュミスした Instance1 GRD Buffer Cache ②このデータ・ブロックの リソース・マスターは どのインスタンスか SQL Instance3 GRD Instance2 GRD Buffer Cache Buffer Cache ④ ディスクから取得 リソース・マスター ③ ディスクから取得するよう指示 Datafile Copyright© 2011, Oracle. All rights reserved. 21 RACの高拡張性② パラレル処理 Copyright© 2011, Oracle. All rights reserved. 22 複数あるCPUの利用 複数の処理を同時実行 (スループットを向上) 1つの処理を並列実行 (レスポンスタイムを向上) クライアント SQL サーバー CPU ストレージ クライアント SQL SQL SQL SQL サーバー CPU ストレージ Copyright© 2011, Oracle. All rights reserved. 23 1つのCPUを使用したデータベース処理 大量データを集計するようなSQLをシリアル実行した場合 クライアント Oracle インスタンス CPU(コア) SP Table SP・・・Server Process (データベース処理をするプロセス) シリアル処理 Copyright© 2011, Oracle. All rights reserved. 24 パラレル処理による複数CPUの利用 1つのSQLを自動並列化 パラレル処理により搭載しているCPUにデータを分散して短時間で結果を返す。 Oracle インスタンス CPU(コア) QC PS PS PS PS PS PS PS PS Table QC…Query Coordinator PS …Parallel Slave Process Parallel Query Copyright© 2011, Oracle. All rights reserved. 25 パラレル処理による複数CPUの利用 1つのSQLを自動並列化 パラレル処理により全ノードに搭載しているCPUにデータを分散して短時間で結 果を返す。 Node1 Node2 Node3 Noden PS PS PS PS PS PS QC PS PS Table QC…Query Coordinator PS …Parallel Slave Process Parallel Query Copyright© 2011, Oracle. All rights reserved. 26 Parallel Queryロードバランス QC • スキャン範囲の担当を動的に決定する • 各スレーブ・プロセスは、異なるブロックを担当 • スレーブ・プロセスの実行時間を均等にする スキャン対象のセグメント 並列度で分割 さらに分割 Copyright© 2011, Oracle. All rights reserved. PS PS 大きなブロックから処理する 27 パラレル・クエリーの設定 Oracle Database 11g Release 2からの新たなパラレル度設定の方法 • 自動パラレル 各SQLの最適なパラレル度を自動的に設定 11.2 New • アプリケーション側での設定は不要 • 初期化パラメータ PARALLEL_DEGREE_POLICYの設定 • RAC環境では、全てのインスタンスに同じ設定をする • I/O測定情報の収集 • DBMS_RESOURCE_MANAGER.CALIBRATE_IOプロシージャの実行 • パラレル実行となるSQLの基準 • PARALLEL_MIN_TIME_THRESHOLD初期化パラメータの設定 • このパラメータで設定されている値(単位:秒)以上の時間がシリアル 実行で必要と判断された場合、自動パラレル実行の対象となる デフォルト値:AUTO (10秒) Copyright© 2011, Oracle. All rights reserved. 28 In-Memory Parallel Execution による さらなる高速化 11.2 New • パラレル実行でもOracleインスタンスにキャッシュされたデータ・ブロック を使用 • 近年のサーバは搭載可能な物理メモリの上限も増加している • アクセスするデータ量を削減 • パーティション表 QC…Query Coordinator クライアント • 圧縮 PS …Parallel Slave Process QC PS PS PS PS PS PS PS PS Oracle Instance Table Copyright© 2011, Oracle. All rights reserved. 29 In-Memory Parallel Execution RACの場合 クライアント ノード数が増えるとキャッシュ可能なデータ量も増加 Node1 Node n Node2 QC PS PS PS … PS Buffer Cache PS PS PS … PS Buffer Cache Copyright© 2011, Oracle. All rights reserved. PS PS PS … PS Buffer Cache 30 高可用性 Copyright© 2011, Oracle. All rights reserved. 31 RACの可用性 • Oracle Clusterwareによる障害ノードの切り離し • 正常ノードでトランザクションのリカバリ (インスタンス・リカバリ) 正常ノードでトランザクションのリカバリ Instance1 SGA Instance2 SGA Instance3 SGA 障害ノードを切り離す Copyright© 2011, Oracle. All rights reserved. 32 Oracle Clusterwareの役割 Oracle Cluster Synchronization Services (CSS) • クラスタにおけるノード構成の管理 • ノード間で相互に生存確認 • 障害ノード切り離し Oracle Cluster Ready Services(CRS) • 監視対象のリソース (CRS リソース)の管理 • リソースの監視 • 障害時のリソース再起動 • 障害時のフェイルオーバー Listener Listener Instance Instance Oracle Cluster Ready Services(CRS) Oracle Cluster Synchronization Services (CSS) Copyright© 2011, Oracle. All rights reserved. 33 Oracle Clusterwareによる監視の仕組み Cluster Synchronization Services (CSS) • クラスタ・メンバーシップを管理 • 他ノードの生存を監視 Cluster Ready Services (CRS) • インスタンス、VIP、リスナー等の リソースを監視 • リソースの停止、起動、フェイル オーバーなどの操作を行う - 共有ディスクのハートビート - インターコネクトのハートビート VIP Listener Instance VIP Listener Instance CRS CRS CSS CSS Copyright© 2011, Oracle. All rights reserved. CRSが管理する主なリソース ・ データベース・インスタンス ・ リスナー ・ サービス ・ ASMインスタンス ・ 仮想IPアドレス(VIP) ・ SCAN IP 34 Cluster Synchronization Services (CSS) • クラスタ・メンバーシップの管理 • ハートビートを行い生存確認 • ハートビートが途絶えると、障害ノードを切り離す インターコネクトでのハートビート CSS CSS CSS 共有ディスクでのハートビート Voting Disk 共有ディスク上のハートビート用領域 Copyright© 2011, Oracle. All rights reserved. 35 CSSによるノード障害の検知 • ハートビートが一定時間途切れたら、CSSが障害として検知 • 最もメンバシップが多いグループでクラスタを再構成し、 障害グループを切り離す クラスタ再構成 ノード切り離し CSS CSS CSS Voting Disk Copyright© 2011, Oracle. All rights reserved. 36 Cluster Ready Services (CRS) • CRSリソースの起動、停止、監視 • 障害を検知すると、リソースの再起動又はフェイルオーバーを試行する • CRSリソースの構成及びステータスはOracle Cluster Registry(OCR) に記録されている VIP VIP Listener Listener Instance Instance CRS CRS OCR 共有ディスク上の リソース管理用の領域 Copyright© 2011, Oracle. All rights reserved. 37 Oracle Clusterware によるリソース管理 エージェントによるリソースの監視 • 11g Release 2 では、エージェントが Oracle Clusterware の プロセスおよびリソースを監視 • エージェントは、高可用性サービスを提供する常駐プロセス • OHAS エージェント • Oracle Clusterware プロセスの監視 • CRS エージェント • CRS リソースの監視 init 監視 監視 OHAS エージェント OHAS Oracle Clusterware プロセス (CSS, CRS, EVM など) 監視 CRS エージェント CRS 監視 CRS リソース (DB, リスナー、VIP など) Copyright© 2011, Oracle. All rights reserved. 38 エージェントおよびプロセスとリソースの一覧 11g R2 (11.2.0.3) OHAS エージェント init Oracle Clusterware プロセス CRS エージェント DISKMON orarootagent リソース Network CTSS Oracle ACFS drivers OHAS Oracle Clusterware orarootagent VIP SCAN VIP CRS Oracle ACFS registry HAIP CRF OC4J Default Listener GIPC SCAN Listener mDNS oraagent GSD GPNPD EVM oraagent Oracle ASM cssdagent CSS ONS CVU Oracle ASM Disk Group Database cssdmonitor Service Copyright© 2011, Oracle. All rights reserved. 39 インスタンス・リカバリ • 障害インスタンスで実行されていたトランザクションのリカバリ • ロールフォワード • コミット済みのトランザクションによる変更をデータファイルに反映する • ロールバック • 未コミットのトランザクションによる変更を戻す リカバリ Instance1 SGA Instance2 SGA Instance3 SGA Copyright© 2011, Oracle. All rights reserved. 40 RACのインスタンス・リカバリ 1. GRDを再構成し、リカバリを実行するインスタンスを決定 2. リカバリが必要なデータ・ブロックを識別(Fast Pass Log Read) • • データ・ブロック毎にどこでロールフォワードが完了するか判断 リカバリ不要なデータ・ブロックはアクセス可能 3. リカバリが必要なデータ・ブロックをリカバリ(Second Pass Log Read) • ロールフォワードが完了したデータ・ブロックからアクセス可能 Instance1 SGA Instance2 SGA Instance3 SGA リカバリ・インスタンス Datafile REDO REDO REDO UNDO UNDO UNDO Instance1用 Instance2用 Instance3用 Copyright© 2011, Oracle. All rights reserved. 41 Fast Pass Log Read リカバリが必要なデータ・ブロックを識別 • 障害が起きたインスタンスのREDOログを読み込み、リカバリが必要 なブロックのリスト(リカバリ・セット)を作成 • リカバリ不要なデータ・ブロックはアクセス可能になる • データ・ブロック毎にどこでロールフォワードが完了するか判断 リカバリが不要な データ・ブロックへ のアクセスは可能 Instance1 SGA Instance2 SGA Instance3 SGA リカバリ・セット リカバリ・インスタンス Datafile REDO REDO REDO UNDO UNDO UNDO Instance1用 Instance2用 Instance3用 Copyright© 2011, Oracle. All rights reserved. 障害ノードのREDO ログファイルを読み 込みリカバリ・セット を作成 42 Second Pass Log Read リカバリが必要なデータ・ブロックのみをロールフォワード • リカバリ・セットから特定されたデータ・ブロックをロールフォワード • ロールフォワードが完了したデータ・ブロックから順次、使用可能となる • SQLの処理が進行する リカバリが完了した データ・ブロックから 順次利用可能 Instance1 SGA Instance2 SGA Instance3 SGA リカバリ・セット リカバリ・インスタンス Datafile REDO REDO REDO UNDO UNDO UNDO Instance1用 Instance2用 Instance3用 Copyright© 2011, Oracle. All rights reserved. リカバリ・セットのデ ータ・ブロックをロー ルフォワード 43 ロールバック • ロールフォワードが完了したデータ・ブロックから順次、使用可能となる • SQLの処理が進行する • SQLがアクセスするデータ・ブロックにロールバックが必要なら、 そのセッションが自動で行う SQL SQL Instance1 SGA SQL Instance2 SGA ロールバックが必要な データ・ブロックにアク セスしたら、そのセッシ ョンが自動でロールバッ クする Datafile SQL Instance3 SGA リカバリ・インスタンス REDO REDO REDO UNDO UNDO UNDO Instance1用 Instance2用 Instance3用 Copyright© 2011, Oracle. All rights reserved. 44 まとめ Copyright© 2011, Oracle. All rights reserved. 45 Oracle Real Application Clusters • 高拡張性 • 全てのOracleインスタンスは同じデータベースへアクセスする • 同時に実行可能な処理を増やすことができる • 1つの処理を並列化することができる • 高可用性 • 障害ノードを切り離して、正常インスタンスで処理が可能 • トランザクションの一貫性を自動で維持 Copyright© 2011, Oracle. All rights reserved. 46 OTNセミナーオンデマンド コンテンツに対する ご意見・ご感想を是非お寄せください。 OTNオンデマンド 感想 http://blogs.oracle.com/oracle4engineer/entry/otn_ondemand_questionnaire 上記に簡単なアンケート入力フォームをご用意しております。 セミナー講師/資料作成者にフィードバックし、 コンテンツのより一層の改善に役立てさせていただきます。 是非ご協力をよろしくお願いいたします。 Copyright© 2011, Oracle. All rights reserved. 47 OTNセミナーオンデマンド 日本オラクルのエンジニアが作成したセミナー資料・動画ダウンロードサイト 掲載コンテンツカテゴリ(一部抜粋) 100以上のコンテンツをログイン不要でダウンロードし放題 Database 基礎 データベースからハードウェアまで充実のラインナップ Database 現場テクニック Database スペシャリストが語る 毎月、旬なトピックの新作コンテンツが続々登場 Java WebLogic Server/アプリケーション・グリッド EPM/BI 技術情報 サーバー ストレージ 例えばこんな使い方 • • • • 製品概要を効率的につかむ 基礎を体系的に学ぶ/学ばせる 時間や場所を選ばず(オンデマンド)に受講 スマートフォンで通勤中にも受講可能 コンテンツ一覧 はこちら http://www.oracle.com/technetwork/jp/ondemand/index.html 毎月チェック! 新作&おすすめコンテンツ情報 はこちら http://oracletech.jp/seminar/recommended/000073.html OTNオンデマンド Copyright© 2011, Oracle. All rights reserved. 48 オラクルエンジニア通信 オラクル製品に関わるエンジニアの方のための技術情報サイト 技術資料 インストールガイド・設定チ ュートリアルetc. 欲しい資 料への最短ルート 特集テーマ Pick UP 性能管理やチューニングな ど月間テーマを掘り下げて 詳細にご説明 アクセス ランキング 他のエンジニアは何を見て いるのか?人気資料のラン キングは毎月更新 技術コラム SQLスクリプト、索引メンテ ナンスetc. 当たり前の運用 /機能が見違える!? http://blogs.oracle.com/oracle4engineer/ オラクルエンジニア通信 Copyright© 2011, Oracle. All rights reserved. 49 oracletech.jp ITエンジニアの皆様に向けて旬な情報を楽しくお届け 製品/技術 情報 Oracle Databaseっていく ら?オプション機能も見積 れる簡単ツールが大活躍 スキルアップ ORACLE MASTER! 試験頻出分野の模擬問 題と解説を好評連載中 セミナー 基礎から最新技術まで お勧めセミナーで自分にあ った学習方法が見つかる Viva! Developer 全国で活躍しているエンジ ニアにスポットライト。きらり と輝くスキルと視点を盗もう http://oracletech.jp/ oracletech Copyright© 2011, Oracle. All rights reserved. 50 あなたにいちばん近いオラクル Oracle Direct まずはお問合せください Oracle Direct システムの検討・構築から運用まで、ITプロジェクト全般の相談窓口としてご支援いたします。 ステム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。 Web問い合わせフォーム フリーダイヤル 専用お問い合わせフォームにてご相談内容を承ります。 http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=28 0120-155-096 ※フォームの入力にはログインが必要となります。 ※こちらから詳細確認のお電話を差し上げる場合がありますので ご登録の連絡先が最新のものになっているかご確認下さい。 ※月曜~金曜 9:00~12:00、13:00~18:00 (祝日および年末年始除く) Copyright© 2011, Oracle. All rights reserved. 51 Copyright© 2011, Oracle. All rights reserved. Copyright© 2011, Oracle. All rights reserved. 53