#インターシステムズビジネスソリューションとアーキテクチャ

0 フォロワー · 18 投稿

このトピックでは、InterSystems製品(InterSystems IRIS、InterSystems IRIS for Health、HealthShare、Caché、Ensemble)で作成、構築、実装できるソリューションのビジネスアイデアとアプローチ、成功事例、アーキテクチャ、デモを説明する出版物をまとめます。

InterSystems公式 Megumi Kakechi · 11月 16, 2023 5m read

インターシステムズは InterSystems IRIS data platform、InterSystems IRIS for Health、InterSystems IRIS Studio のバージョン 2023.3 をリリースしました。


リリースハイライト

2023.3 は Continuous Delivery(CD)リリースです。
2023.3 には多くのアップデートや拡張機能が追加されています。


クラウドとオペレーションの強化

ジャーナルアーカイブ: このリリースから、システム管理者は完了したジャーナルファイルのアーカイブ先を設定できるようになりました。設定すると、ジャーナルファイルの切り替え後、完了したジャーナルファイルは自動的に圧縮 (Journal Compression機能を使用) された後、設定したアーカイブ先に移動されます。
アーカイブされたジャーナルファイルは、ローカルのジャーナルディレクトリから自動的に削除されるため、ジャーナルファイルの書き込みに使用される高性能ストレージ層の全体的な占有量を削減し、InterSystems IRIS の導入におけるトータルの所有コストを削減することができます。


アナリティクスとAIの強化

0
0 152
記事 Toshihiko Minamoto · 9月 16, 2021 10m read

はじめに

InterSystemsは最近、HL7バージョン2の相互運用性に焦点を当てた、IRIS for Health 2020.1のパフォーマンスとスケーラビリティのベンチマークを完了しました。 この記事では、さまざまなワークロードで観察されたスループットを説明し、IRIS for HealthをHL7v2メッセージングの相互運用性エンジンとして使用しているシステムの一般的な構成とサイジングのガイドラインを提供します。

ベンチマークは本番環境にほぼ一致するように設計されたワークロードをシミュレーションしています。 シミュレーションの詳細は、「ワークロードの説明と方法」セクションで説明しています。 テストされたワークロードは、HL7v2 Patient Administration(ADT)とObservation Result(ORU)ペイロードで構成され、変換と再ルーティングが含まれました。

IRIS for Healthの2020.1バージョンは、第2世代のIntel® Xeon® スケーラブルプロセッサとIntel® Optane™ SSD DC P4800XシリーズSSDストレージを使用したコモディティサーバーで、1日当たり23億件を超えるメッセージ(インバウンドとアウトバウンドの合計)スループットの持続を実証しました。 これらの結果は、以前のEnsemble 2017.1 HL7v2スループットベンチマークのスケーラビリティの2倍以上です。

これらのテストでは、IRIS for Healthは、先入先出(FIFO)の順序を保持し、インバウンドメッセージとアウトバウンドメッセージのメッセージとキューを完全に永続化するように構成されました。 キューとメッセージを永続化することで、IRIS for Healthはシステムがクラッシュした際に、データ保護と、履歴メッセージの完全な検索と再送機能を提供することがでます。

さらに、構成ガイドラインは以下のセクションで説明されており、ワークロードのパフォーマンスとスケーラビリティの要件を適切に満たす構成とデプロイを選択する上で役立てられます。

この結果は、IRIS for Healthがコモディティハードウェアで極端なメッセージングスループットを満たすことができ、ほとんどの場合において、1つの小さなサーバーで組織全体にHL7の相互運用性を提供できることを示しています。


結果の概要

HL7相互運用性アクティビティのさまざまな側面を表すために、次の3つのワークロードが使用されました。

  • T1ワークロード: 単純なHL7メッセージのパススルーを使用します。インバウンドメッセージごとに1つのアウトバウンドメッセージが使用されます。 メッセージは、ルーティングエンジンを使用せずに、Ensemble Business Serviceから直接Ensemble Business Operationに渡されました。 ルーティングルールは使用されず、変換も実行されませんでした。 データベースには、インバウンドメッセージごとに1つのHL7メッセージインスタンスが作成されました。
  • T2ワークロード: ルーティングエンジンを使って、インバウンドメッセージの平均4つのセグメントを変更し、それを1つのアウトバウンドインターフェースにルーティングします (変換を使用して1対1)。 各インバウンドメッセージでは、1つのデータ変換が実行され、2つのHL7メッセージオブジェクトがデータベースに作成されました。
  • T4ワークロード: ルーティングエンジンを使用して、個別に変換されたメッセージをそれぞれ4つのアウトバウンドインターフェースにルーティングします。 平均して、インバウンドメッセージの4つのセグメントが変換ごとに変更されました(4 つの変換で1件のインバウンドから4件のアウトバウンド)。 各インバウンドメッセージでは、4つのデータ変換の実行により4つのメッセージがアウトバウンドに送信され、5つのHL7メッセージオブジェクトがデータベースに作成されました。

上記の3つのワークロードは、Red Hat Enterprise Linux 8を実行する2つの750GB 2つのIntel® Optane™ SSD DC P4800X SSDドライブとIntel® Scalable Gold 6252プロセッサを備えた物理48コアシステムで実行されました。 データは、1秒当たり(および1時間当たり)のインバウンドごとのメッセージ数、1秒当たりの(および1時間当たり)のアウトバウンドごとのメッセージ数、および1日10時間のメッセージ合計数(インバウンドとアウトバウンド)で表示されています。 また、特定のレベルのスループットにおいて利用可能なシステムリソースの測定値として、CPU使用率が表示されています。 

スケーラビリティの結果

表1: このテスト済みのハードウェア構成における4つのワークロードのスループットの要約:

* 25%のT1/ 25%のT2 / 50%のT4ワークロードの比率で組み合わされたワークロード


ワークロードの説明と方法

テストされたワークロードには、HL7v2 Patient Administration(ADT)とObservation Result(ORU)メッセージが含まれ、平均1.2 KBのサイズと平均14のセグメントが含まれました。 変換によっておよそ4つのセグメントが変更されました(T2およびT4ワークロード)。 テストは、TCP/IPを介してメッセージを送受信する48件から128件のインバウンドと48件から128件のアウトバウンドのインターフェースを表します。

T1ワークロードでは、それぞれに16個のインターフェースを持つ4つの個別のネームスペースが使用され、T2ワークロードでは、それぞれに16個のインターフェースを持つ3つのネームスペースが使用され、T4ワークロードでは、それぞれに32個のインターフェースを持つ4つのネームスペースが使用され、最後の「混合ワークロード」では、T1ワークロードに16個、T2ワークロードに16個、T4ワークロードに32個を持つ3つのネームスペースが使用されました。

スケーラビリティは、各インターフェースのトラフィックを徐々に増やして許容可能なパフォーマンス基準で最高のスループットを見つけることで測定されました。 許容可能なパフォーマンスを得るには、メッセージがキューイングやメッセージの配信に測定可能な遅延のない持続的な速度で処理され、平均CPU使用率が80%未満である必要があります。

以前のテストでは、使用されたHL7メッセージのタイプはEnsembleのパフォーマンスやスケーラビリティにとって重要ではありませんでしたが、インバウンドメッセージ数、インバウンドとアウトバウンドメッセージのサイズ、ルーティングエンジンで作成される新しいメッセージの数、および変更されたセグメント数が重要でした。

さらに、以前のテストでは、データ変換でHL7メッセージの個別のフィールドを処理することは、通常、パフォーマンスに影響がないことが示されています。 これらテストの変換では、かなり単純な割り当てを使用して、新しいメッセージが作成されています。 複雑な処理(データ変換での広範なSQLクエリの使用など)によって、結果が異なる場合があることに注意してください。

以前のテストではまた、ルール処理は通常重要でないことも確認されています。 これらのテストで使用されたルーティングルールセットは平均32個のルールで、すべてのルールは単純です。 ルールセットが極端に大きいか複雑な場合は、結果が異なる場合があります。 

ハードウェア 

サーバーの構成

テストでは、2.1 GHzの48コアの2ソケットシステムで、192 GB DDR4-2933 DRAMと10 Gb Ethernetネットワークインターフェースを使用するソケットごとに24コアを提供する第2世代Intel® Scalable Gold 6252「Cascade Lake」プロセッサを搭載したサーバーが使用されました。 このテストでは、Red Hat Enterprise Linux Server 8オペレーティングシステムでInterSystems IRIS for Health 2020.1を使用しました。

ディスクの構成

IRIS for Healthを通過するメッセージは、ディスクに完全に永続されます。 このテストの場合、システム内部の2つのIntel 750GB Intel® Optane™ SSD DC P4800X SSDドライブを使用して、片方をデータベース用、もう片方をジャーナル用として分割しました。 さらに、実際の比較を実現できるにように、ジャーナルの同期コミットを有効にして、データの耐久性を強化しています。 前述のT4ワークロードの場合、各インバウンドHL7メッセージはおよそ50 KBのデータを生成しますが、これを表2に説明するように分類できます。 トランザクションジャーナルは通常、メッセージデータやログよりも短い時間オンラインに保持されるため、必要な合計ディスク容量を計算する際に、このことを考慮する必要があります。

表2: インバウンドHL7 T4メッセージあたりのディスク要件

項目データ要件
セグメントデータ4.5 KB
HL7メッセージオブジェクト2 KB
メッセージヘッダー1.0 KB
ルーティングルールログ0.5 KB
トランザクションジャーナル42 KB
合計50 KB

T4ワークロードはルーティングエンジンを使用して、個別に変換されたメッセージをそれぞれ4つのアウトバウンドインターフェースにルーティングすることを思い出しましょう。 平均して、インバウンドメッセージの4つのセグメントが変換ごとに変更されました(4 つの変換で1件のインバウンドから4件のアウトバウンド)。 各インバウンドメッセージでは、4 つのデータ変換の実行により 4 つのメッセージがアウトバウンドに送信され、5 つの HL7 メッセージオブジェクトがデータベースに作成されました。

本番環境で使用するシステムを構成する場合、HL7メッセージの1日あたりのインバンドボリュームとパージスケジュール、およびジャーナルファイルの保持ポリシーを考慮して、正味要件を計算する必要があります。 また、適切なジャーナルファイルの容量は、ジャーナルディスクボリュームがいっぱいになるのを防ぐようにして構成する必要があります。 ジャーナルファイルは、パフォーマンスと信頼性を考慮して、データベースファイルから物理的に離れたディスクに存在する必要があります。

まとめ

これらのテストで示されたInterSystems IRIS for Health HL7v2メッセージスループットは、適度な2ソケットコモディティサーバー構成での大規模なスループット性能によって、組織における要求の最も厳しいメッセージワークロードをサポートできることを示しています。 また、InterSystemsは、最新のサーバーとクラウドテクノロジーを活用しながら、バージョンごとにパフォーマンスとスケーラビリティを改善することに絶えず取り組んでいます。

以下のグラフでは、スループットの増加について、Intel® E5-2600 v3(Haswell)を使用したEnsemble 2015.1とEnsemble 2017.1のベンチマークと第1世代Intel® Scalable Platinum Series(Skylake)プロセッサを使用したEnsemble 2017.1のベンチマークをそれぞれ第2世代Intel® Scalable Gold Series(Cascade Lake)プロセッサでIRIS for Health 2020.1を実行した場合の最新の結果と比較しています。

グラフ1: 単一サーバーでの1日10時間当たりのメッセージスループット(百万単位)。

InterSystems IRIS for Healthは、バージョンが上がるたびに、接続機能の柔軟性を提供するとともに、相互運用性スループットの水準を引き上げ続けています。 上記のグラフからわかるように、メッセージスループットは大きく増加しており、同じ10時間の期間と、23億件以上という24時間の合計メッセージ速度を維持したまま、T2ワークロードの場合には2017の2倍、2015と比較すると3倍以上に増加しています。

IRIS for Healthの進歩を示すもう1つの重要な指標は、T1ワークロードの純粋なパススルー操作とは対照に、変換とルーティングルーツが組み込まれたより複雑なT2とT4ワークロードでのスループットの向上です。  

InterSystemsでは、企業や組織におけるインターオペラビリティ(相互運用性)のニーズに対するソリューションのご相談をお待ちしております。

0
0 236
InterSystems公式 Toshihiko Minamoto · 8月 9, 2021

開発者の皆さん、こんにちは。
今回、インターシステムズ・パートナーディレクトリをオープンさせていただくことになりました!

このサイトではインターシステムズ製品で構築された商用のサービスソリューションを見つけることができます。

インターシステムズ・パートナーディレクトリとは?

0
0 104
記事 Toshihiko Minamoto · 7月 15, 2021 16m read

InterSystems および Intel は先日、InterSystems IRIS を「Cascade Late」としても知られる第 2 世代 Intel® Xeon® スケーラブルプロセッサおよび Intel® Optane™ DC パーシステントメモリ(DCPMM)と組み合わせて一連のベンチマークを実施しました。 さまざまなワークロード設定とサーバー構成で、Intel の最新のサーバーテクノロジーを使用した InterSystems IRIS のパフォーマンスとスケーラビリティ機能を実証するのがこのベンチマークの目的です。 このレポートには、さまざまなベンチマークの結果とともに、Intel DCPMM と InterSystems IRIS のユースケースが 3 つ示されています。

概要

パフォーマンスとスケーリングを実証するために 2 種類のワークロードが使用されています。読み取り集中型のワークロードと書き込み集中型のワークロードです。 このように分けて実証するのは、読み取り集中型ワークロードにおけるデータベースキャッシュ効率の増加と、書き込み集中型ワークロードにおけるトランザクションジャーナルの書き込みスループットの増加のそれぞれに特化したユースケースで、Intel DCPMM の影響を示すためです。 両方のユースケースシナリオにおいて、InterSystems IRIS のスループット、スケーラビリティ、およびパフォーマンスの大幅なゲインが達成されています。

  • 読み取り集中型ワークロードでは、4 ソケットサーバーと、合計約 1.2 TB のデータを持つデータセットを使用する大量の長期実行分析クエリが使用されました。 DCPMM を「Memory Mode」で使用した場合のベンチマーク比較では、メモリの少ない前世代の Intel E7v4 シリーズプロセッサと比べた場合、経過実行時間が大幅に短縮され、およそ 6 倍高速になりました。 E7v4 と、DCPMM を使った最新のサーバーを同じメモリサイズで比較した場合は、20% の改善が見られました。 これは、DCPMM による InterSystems IRIS データベースキャッシュ機能の向上と最新の Intel プロセッサアーキテクチャによるものです。

  • 書き込み集中型ワークロードでは、2 ソケットサーバーと InterSystems HL7 メッセージングのベンチマークが使用されました。多数のインバウンドインターフェースで構成されており、各メッセージには複数の変換が伴い、インバウンドメッセージごとに 4 つのアウトバウンドメッセージが使用されています。 高スループットを維持する上で重要なコンポーネントの 1 つは、IRIS for Health のメッセージ耐久性保証で、その操作においては、トランザクションのジャーナル書き込みのパフォーマンスが重要となります。 「APP DIRECT」モードで DCPMM を使用して、DAX XFS でトランザクションのジャーナル用の XFS ファイルシステムを提供した場合、このベンチマークのメッセージスループットには 60% の向上が示されました。

テスト結果と構成を要約すると、DCPMM は適切に設定された InterSystems IRIS とワークロードで使用された場合にスループットを大幅に向上させることができます。 高レベルのメリットとしては、読み取り集中型ワークロードではデータベースのキャッシュ効率の向上とディスク I/O ブロック読み取りの抑制、書き込み集中型ワークロードではジャーナルの書き込みスループットの向上を得られます。

さらに、古いハードウェアを更新し、パフォーマンスとスケーリングの改善を検討しているユーザーにとって、DCPMM を備えた Cascade Lake に基づくサーバーは優れた更新パスとなります。 InterSystems のテクノロジーアーキテクトと相談しながら、既存のワークロードに推奨される構成についてのアドバイスを得ることができます。


読み取り集中型ワークロードベンチマーク

読み取り集中型ワークロードでは、512 GiB と 2 TiB のデータベースキャッシュサイズの E7v4(Broadwell)と Intel® Optane™ DC パーシステントメモリ(DCPMM)を使用した 1 TB と 2 TB のデータベースキャッシュサイズの最新の第 2 世代 Intel® Xeon® スケーラブルプロセッサ(Cascade Lake)と比較する分析クエリベンチマークを使用しました。

より大規模なキャッシュの影響とパフォーマンスの向上を示すために、さまざまなグローバルバッファサイズで複数のワークロードを実行しました。 構成を反復するごとに、COLD と WARM で実行しています。 COLD は、データベースキャッシュにデータが事前に入力されていない場合で、 WARM は、データベースキャッシュがすでにアクティブになっており、ディスクからの物理的な読み取りを減らすために、データが入力済みである(または少なくと可能な限り入力されている)ことを示します。

ハードウェア構成

古い 4 ソケット E7v4(Broadwell)ホストを DCPMM を使った 4 ソケット Cascade Lake サーバーと比較しました。 この比較が選択されたのは、InterSystems IRIS を使ってハードウェアの更新を検討している既存のお客様がパフォーマンスの向上を得られることを実証するためです。 バージョン間のソフトウェアの最適化が要因とならないように、すべてのテストには同じバージョンの InterSystems IRIS が使用されました。

ディスクパフォーマンスが比較の要因とならないように、すべてのサーバーには同一のストレージアレイにある同一のストレージが使用されています。 ワーキングセットは 1.2 TB のデータベースです。 図 1 にはこのハードウェア構成と、それぞれの 4 ソケット構成の比較が示されています。

図 1: ハードウェア構成

サーバー #1 の構成サーバー #2 の構成
プロセッサ: 4 x E7-8890 v4 @ 2.5Ghzプロセッサ: 4 x Platinum 8280L @ 2.6Ghz
メモリ: 2TiB DRAMメモリ: 3TiB DCPMM + 768GiB DRAM
ストレージ: 16Gbps FC all-flash SAN @ 2TiBストレージ: 16Gbps FC all-flash SAN @ TiB
 DCPMM: Memory Mode のみ

ベンチマークの結果と結論

512 GiB を 1 TiB か 2 TiB のいずれかの DCPMM バッファプールサイズと比較した場合、経過実行時間に大幅な短縮が見られます(約 6 分の 1)。 さらに、2 TiB E7v4 DRAM と 2 TiB Cascade Lake DCPMM の構成を比較した場合には約 20% の改善も見られました。 バッファプールのサイズが同じであるとした場合、この 20% の増加は、ほぼ新しいプロセッサのアーキテクチャとプロセッサのコア数の増加によるものだと考えられますが、 それでも、テストされた 4 ソケット Cascade Lake にインストールされていたが 24 x 128 GiB DCPMM のみであることを考慮すると深い意義があります。DCPMM は 12 TiB までスケーリングすることが可能であり、これは E7v4 が同じ 4 ソケットサーバーのフットプリントでサポートできるメモリの約 4 倍のメモリです。

以下の図 2 に示されるグラフは、この比較の結果を示しています。 両方のグラフの y 軸は経過時間(値が小さくなるほど良)で、さまざまな構成で得た結果が比較されています。

図 2: 各種構成の経過時間の比較


書き込み集中型ワークロードベンチマーク

このベンチマークのワークロードは、すべての T4 タイプのワークロードを使用した HL7v2 メッセージングワークロードです。

  • T4 ワークロードは、ルーティングエンジンを使って、個別に変更されたメッセージを 4 つの各アウトバウントインターフェースにルーティングしました。 平均して、インバウンドメッセージの 4 つのセグメントが変換ごとに変更されました(4 つの変換で 1 件につき 4 件)。 各インバウンドメッセージでは、4 つのデータ変換の実行により 4 つのメッセージがアウトバウンドに送信され、5 つの HL7 メッセージオブジェクトがデータベースに作成されました。

各システムは 128 個のインバウンドビジネスサービスと各インバウンドインターフェースに送信される 4800 件のメッセージ(インバウンドメッセージ合計 614,400 件、アウトバウンドメッセージ合計 2,457,600 件)で構成されています。

このベンチマークワークロードのスループットの単位は「1秒あたりのメッセージ数」です。 トランザクションジャーナルのスループットとレイテンシは高スループットを維持する上で重要なコンポーネントであるため、ベンチマーク実行中のジャーナルの書き込みにも関心があります(記録されています)。 IRIS for Health のメッセージ耐久性保証のパフォーマンスに直接影響を与えるため、その操作において、トランザクションジャーナルの書き込みパフォーマンスが重要となります。 ジャーナルのスループットが低下すると、アプリケーションプロセスによってジャーナルバッファの可用性が阻止されてしまいます。

ハードウェア構成

書き込み集中型ワークロードでは、2 ソケットサーバーを使用することにしました。 192 GB の DRAM と 1.5 TiB の DCPMM しかないため、この構成は前述の 4 ソケット構成よりも小さくなります。 DCPMM を使用した Cascade Lake のワークロードを以前の初代 Intel® Xeon® スケーラブルプロセッサ(Skylake)サーバーに比較しました。 両サーバーには 750GiB Intel® Optane™ SSD DC P4800X ドライブがローカル接続されています。

図 3 にはこのハードウェア構成と、それぞれの 2 ソケット構成の比較が示されています。

図 3: 書き込み集中型ワークロードのハードウェア構成

サーバー #1 の構成サーバー #2 の構成
プロセッサ: 2 x Gold 6152 @ 2.1Ghzプロセッサ: 2 x Gold 6252 @ 2.1Ghz
メモリ: 192GiB DRAMメモリ: 1.5TiB DCPMM + 192GiB DRAM
ストレージ: 2 x 750GiB P4800X Optane SSDストレージ: 2 x 750GiB P4800X Optane SSD
 DCPMM: Memory Mode & App Direct モード

ベンチマークの結果と結論

テスト 1: このテストでは、図 3 のサーバー #1 構成に示される Skylake サーバーにおいて前述の**T4 ワークロード**を実行しました。 Skylake サーバーは、2010 ジャーナル書き込み/秒のジャーナルファイル書き込み速度で約 3355 件のインバウンドメッセージの持続的なスループットを示しました。

テスト 2: このテストでは、図 3 のサーバー #2 構成に示される Cascade Lake サーバーにおいて、DCPMM の Memory Mode を指定して同じワークロードを実行しました。 これは、2400 ジャーナル書き込み/秒のジャーナルファイル書き込み速度で約 4684 件のインバウンドメッセージの持続的なスループットという大幅な向上を示しました。 これは、テスト 1 に比較すると 39% の増加です。

テスト 3: このテストでは、図 3 のサーバー #2 構成に示される Cascade Lake サーバーにおいて同じワークロードを実行しましたが、今度は DCPMM を App Direct Mode に指定し、DCPMM による何らかの実行を構成せずに実行しました。 このテストの目的は、DRAM のみを使用した Cascade Lake のパフォーマンスとスループットを DCPMM と DRAM を使用した Cascade Lake に比較して測定することです。 DCPMM が使用されていない場合でもスループットは(比較的小さいとは言え)向上したという、特に驚くことでもない結果が出ました。 これは、2540 ジャーナル書き込み/秒のジャーナルファイル書き込み速度で約 4845 件のインバウンドメッセージの持続的なスループットという向上を示しました。 DCPMM は DRAM に比べてより高いレイテンシがあり、更新が大量に流入すればパフォーマンスが低下するため、予想された動作と言えます。 別の見方をすると、まったく同じサーバーで DCPMM を Memory Mode で使用する場合、書き込みの取り込みワークロードに 5% 未満の低下があることになります。 また、Skylake を Cascade Lake(DRAM のみ)に比較した場合、テスト 1 の Skylake サーバーに比べて 44% の増加が得られています。

テスト 4: このテストでは、図 3 のサーバー #2 構成に示される Cascade Lake サーバーにおいて同じワークロードを実行しましたが、今度は DCPMM を App Direct Mode に指定し、App Direct Mode をジャーナルファイルシステム用にマウントされた DAX XFS として使用して実行しました。 これは 2630/秒のジャーナルファイル書き込み速度で 1 秒あたり 5399 件のインバウンドメッセージというさらに高いスループットを示しました。 この種のワークロードでは App Direct Mode の DCPMM がより適した DCPMM の使用方法であることが示されています。 これらの結果を最初の Skylake 構成と比較すると、テスト 1 の Skylake サーバーに比べ、スループットが 60% 増加しています。


InterSystems IRIS の推奨される Intel DCPMM ユースケース

Intel® Optane™ DC パーシステントメモリを使用することで InterSystems IRIS にメリットが与えられるユースケースと構成にはいくつかあります。

Memory Mode

このモードは、単一の InterSystems IRIS デプロイや大規模な InterSystems IRIS シャードクラスタでの膨大なデータベースキャッシュに最適です。後者の環境ではより多く(またはすべて)のデータベースをメモリにキャッシュできます。 DCPMM と DRAM の比率は最大 8:1 にすることをお勧めします。「ホットメモリ」を L4 キャッシュレイヤーとして機能する DRAM に保持する際に重要です。 これは、リソース占有やその他のメモリキャッシュラインなど、共有内部 IRIS メモリ構造において特に重要となります。

App Direct Mode(DAX XFS)– ジャーナルディスクデバイス

このモードは、DCPMM をトランザクションジャーナルファイルのディスクデバイスとして使用する場合に最適です。 DCPMM は Linux にマウントされた XFS ファイルシステムとしてオペレーティングシステムに表示されます。 DAX XFS を使用するメリットは、これによって PCIe バスのオーバーヘッドとファイルシステムからのダイレクトメモリアクセスが緩和されることにあります。 HL7v2 ベンチマークの結果に示されるように、書き込みレイテンシによって HL7 メッセージングのスループットは大幅に向上します。 また、ストレージには従来のディスクデバイスと同様に、再起動や電源サイクル時における永続性と耐久性が備わっています。

App Direct Mode(DAX XFS)– ジャーナル + 書き込みイメージジャーナル(WIJ)ディスクデバイス

このユースケースでは、App Direct モードの用法がトランザクションジャーナルと書き込みイメージジャーナル(WIJ)の両方に拡張されます。 両ファイルは書き込み集中型であるため、超低レイテンシと永続性のメリットを確実に得られます。

Dual Mode: Memory + App Direct Modes

DCPMM を Dual Mode で使用すると DCPMM のメリットが拡大し、トランザクションジャーナルや書き込みイメージジャーナルデバイスで大規模なデータベースキャッシュと超低レイテンシを実現できるようになります。 このユースケースでは、DCPMM は OS にマウントされた XFS ファイルシステムとオペレーティングシステムの RAM として表示されます。 これは、DCPMM の一定の割合を DAX XFS に割り当て、残りを Memory Mode に割り当てることで可能です。 前述のように、インストールされている DRAM はプロセッサの L4 のようなキャッシュとして機能します。

「疑似」Dual Mode

疑似 Dual Mode 寄りにユースケースモデルを拡張するために、OLTPタイプのワークロード用と分析または大規模なクエリーニーズ用に高速のインバウンドトランザクションと更新が伴うトランザクションと分析の並行ワークロード(HTAP ワークロードとしても知られています)タイプのワークロードがあり、さらに InterSystems IRIS 共有クラスタ内ではそれぞれの InterSystems IRIS ノードタイプが DCPMM のさまざまなモードで稼働しています。

この例では、グローバルバッファの大規模データベースキャッシュと、トランザクションワークロード用に DAX XFS として Dual Mode または App Direct のいずれかで実行するデータノードのメリットを得られるように、DCPMM Memory Mode で実行する大規模なクエリ/分析ワークロードを処理する InterSystems IRIS 計算ノードが追加されています。


まとめ

インフラストラクチャの選択に関して言えば、InterSystems IRIS には多数のオプションが提供されています。 インフラストラクチャの要件はアプリケーション、ワークロードプロファイル、およびビジネスニーズによって決まり、これらのテクノロジーとインフラストラクチャの選択が、ビジネスにおけるアプリケーションの成功、採用、および重要性を左右します。 第 2 世代 Intel® Xeon® スケーラブルプロセッサと Intel® Optane™ DC パーシステントメモリを使用した InterSystems IRIS は、ビジネスに大きな影響を与える InterSystems IRIS ベースアプリケーションに画期的なスケーリング性能とスループット性能を与えることができます。

InterSystems IRIS と Intel DCPMM 対応サーバーには、次のようなメリットがあります。

  • Memory Mode の DCPMM を使用した InterSystems IRIS または InterSystems IRIS for Health データベースキャッシュにマルチテラバイトのデータベースが完全に収まるようにメモリ容量を増加します。 ストレージ(ディスク)からの読み取りと比較した場合、サイズが増加するにつれてシステムメモリを利用する InterSystems IRIS の実証されたメモリキャッシュ機能によって、コードを変更することなくクエリへの応答パフォーマンスを 6 倍向上させることができます。
  • 同一のプロセッサを使って、利用可能な最速の NVMe ドライブから、App Direct モードによって DAX XFS ファイルシステムとして DCPMM を利用するようにトランザクションジャーナルディスクを変更するだけで、HL7 変換など、InterSystems IRIS と InterSystems IRIS for Health に基づく高速データ相互運用性スループットアプリケーションのパフォーマンスを最大 60% 増のスループットに改善します。 メモリ速度のデータ転送とデータの永続性を活用することで、InterSystems IRIS と InterSystems IRIS for Health に大きなメリットが与えられます。
  • 読み取り集中型ワークロードか書き込み集中型ワークロードか、またはその両方のワークロードかに関係なく、Mixed Mode の DCPMM を使った 1 つのリソースコンポーネントの為だけにサーバー全体を過剰に割り当てることなく、必要に応じて計算リソースを拡大します。

お客様の InterSystems IRIS ベースのアプリケーションに最適なハードウェア構成についてのご相談は、InterSystems テクノロジーアーキテクトにお問い合わせください。

0
0 211
記事 Megumi Kakechi · 4月 23, 2021 2m read

これは InterSystems FAQ サイトの記事です。

アプリケーションに求められる要件は日々複雑化しています。

しかし、複雑化するからといって開発のスピードおよび実行時のスピードが遅くなることは許されません。

複雑な要件を満たすために現在主流の手法ではソフトウェアスタック上の様々な部品(ミドルウェア、ライブラリ、フレームワークなど)を組み合わせる方法を取ります。

この方法は、様々なものを学習するための時間、それらを連携する方法、経年で様々なものが進化していくことに伴って各部品間の関係性が変化するためにそれらを維持管理していくための手間など様々な付帯的な作業が必要です。

結果として本来行いたいことに集中して取り組む前に付随する作業に忙殺されることになり開発生産性があがりません。
しかも実行時にも様々な部分が連携するためのオーバーヘッドを避けることができず期待する性能を確保することも困難になります。

一方インターシステムズのプラットフォームには上記要件を満たすのに必要十分な機能がひとつの首尾一貫した形で提供されており上記の様な手間がほとんど必要ありません。

さらにこのプラットフォームにはインターシステムズ独自の高性能、スケーラビリティの高いデータベースエンジンが内蔵されており様々なデータ処理を効率良く高速に処理します。

0
0 173
記事 Toshihiko Minamoto · 4月 19, 2021 12m read

++更新日:2018年8月1日

Cachéデータベースミラーリングに組み込まれているInterSystems仮想IP(VIP)アドレスの使用には、特定の制限があります。 具体的に言うと、ミラーメンバーが同じネットワークサブネットに存在する場合にのみ使用できるというところです。 複数のデータセンターを使用した場合は、ネットワークの複雑さが増すため、ネットワークサブネットが物理的なデータセンターを越えて「延伸」されることはさほどありません(より詳細な説明はこちらです)。 同様の理由で、データベースがクラウドでホストされている場合、仮想IPは使用できないことがよくあります。

ロードバランサー(物理的または仮想)などのネットワークトラフィック管理のアプライアンスを使用して、クライアントアプリケーションやデバイスに単一のアドレスを提示することで、同レベルの透過性を実現できます。 ネットワークトラフィックマネージャは、クライアントを現在のミラープライマリの実際のIPアドレスに自動的にリダイレクトします。 この自動化は、災害後のHAフェイルオーバーとDRプロモーションの両方のニーズを満たすことを目的としています。 

ネットワークトラフィックマネージャーの統合

今日の市場には、ネットワークトラフィックのリダイレクトに対応する多数のオプションが存在します。  アプリケーション要件に基づいてネットワークフローを制御するために、これらのオプションはそれぞれ似たような方法論もしくは複数の方法論に対応しています。  これらの方法論を単純化するために、 データベース _サーバー呼び出し型API、ネットワークアプライアンスポーリング、_または両方を組み合わせたものの、3つのカテゴリを検討していきます。  

次のセクションでは、これらの方法論をそれぞれ概説し、各々をInterSystems製品と統合する方法について説明していきます。  すべてのシナリオでアービターは、ミラーメンバーが直接通信できない場合に安全なフェイルオーバーの判断を下すために使用されます。  アービターの詳細は、こちらを参照してください。

この記事では、図の例は、プライマリ、バックアップ、およびDR非同期の3つのミラーメンバーを示すものとします。  ただし、ユーザーの構成には、ミラーメンバーがより多く含まれている場合、またはより少なく含まれている場合があるということは理解しております。

オプション1:ネットワークアプライアンスのポーリング(推奨

この方法では、ネットワーク負荷分散アプライアンスは、組み込みのポーリングメカニズムを使用して、両方のミラーメンバーと通信することでプライマリミラーメンバーを決定します。 

2017.1で利用可能なCSP Gatewayの_mirror_status.cxw_ページを使用するポーリングメソッドは、ELBサーバープールに追加された各ミラーメンバーに対するELBヘルスモニターのポーリングメソッドとして使用できます。  プライマリミラーのみが「SUCCESS」と応答するため、ネットワークトラフィックはアクティブなプライマリミラーメンバーのみに転送されます。 

このメソッドでは、^ZMIRRORにロジックを追加する必要はありません。  ほとんどの負荷分散ネットワークアプライアンスには、ステータスチェックの実行頻度に制限があることに注意してください。  通常、最高頻度は一般的にほとんどの稼働時間サービス水準合意書で許容される5秒以上に設定されています。

次のリソースへのHTTPリクエストは、【ローカル】キャッシュ構成のミラーメンバーのステータスをテストします。

/csp/bin/mirror_status.cxw_

それ以外の場合、ミラーステータスリクエストのパスは、実際のCSPページのリクエストに使用されるのと同じ階層構造を使用し、適切なキャッシュサーバーとネームスペースに解決されます。

例:/csp/user/ パスにある構成を提供するアプリケーションのミラーステータスをテストする場合は次のようになります。

/csp/user/mirror_status.cxw_

注意:ミラーライセンスチェックを実行しても、CSPライセンスは消費されません。

ターゲットインスタンスがアクティブなプライマリメンバーであるかどうかに応じて、ゲートウェイは以下のCSP応答のいずれかを返します。

**** 成功(プライマリメンバーである)**

_=============================== _

_   HTTP/1.1 200 OK_

_   Content-Type: text/plain_

_   Connection: close_

_   Content-Length: 7_

_   SUCCESS_

**** 失敗(プライマリメンバーではない)**

===============================

_   HTTP/1.1 503 Service Unavailable_

_   Content-Type: text/plain_

_   Connection: close_

_   Content-Length: 6_

_   FAILED_

**** 失敗(キャッシュサーバーが_Mirror_Status.cxw_のリクエストをサポートしていない)**

===============================

_   HTTP/1.1 500 Internal Server Error_

_   Content-Type: text/plain_

_   Connection: close_

_   Content-Length: 6_

_   FAILED_

ポーリングの例として、次の図を検討してみましょう。

フェイルオーバーは、同期フェイルオーバーミラーメンバー間で自動的に発生します:

次の図は、DR非同期ミラーメンバーの負荷分散プールへの昇格を表しています。これは通常、同じ負荷分散ネットワークアプライアンスがすべてのミラーメンバーにサービスを提供していることを前提としています(地理的に分割されたシナリオについては、この記事の後半で説明します)。 標準のDR手順に従って、災害復旧メンバーの昇格には、人間による決定およびデータベースレベルでの簡単な管理アクションが必要になります。 ただし、そのアクションが実行されると、ネットワークアプライアンスでの管理アクションは必要ありません。新しいプライマリが自動的に検出されます。

オプション2:データベースサーバー呼び出し型API

この方法では、フェイルオーバーミラーメンバーと潜在的にDR非同期ミラーメンバーの両方で定義されたサーバープールがあり、ネットワークトラフィック管理アプライアンスが使用されます。  

ミラーメンバーがプライマリミラーメンバーになると、優先度または重み付けを調整して、ネットワークトラフィックを新しいプライマリミラーメンバーに転送するようにネットワークアプライアンスにただちに指示を出すために、ネットワークアプライアンスに対してAPI呼び出しが実行されます。  

同様のモデルは、プライマリミラーメンバーとバックアップミラーメンバーの両方が利用できなくなった場合のDR非同期ミラーメンバーの昇格にも適用されます。

このAPIは、具体的には次のようにプロシージャコールの一部として^ZMIRRORルーチンで定義されています: $$CheckBecomePrimaryOK^ZMIRROR()

このプロシージャコールの中に、REST API、コマンドラインインターフェイスなど該当するネットワークアプライアンスで利用可能なAPIロジックやメソッドを挿入します。 仮想IPの場合と同様に、これは唐突なネットワーク構成の変更であり、障害が発生したプライマリミラーメンバーと接続している既存のクライアントに対し、フェイルオーバーが発生していることを通知するアプリケーションロジックは必要としません。 障害の性質によっては、障害そのものや、アプリケーションのタイムアウトやエラー、新しいプライマリによる古いプライマリインスタンスの強制停止、あるいはクライアントが使用したTCPキープアライブタイマーの失効が原因でこれらの接続が終了する可能性があります。

その結果、ユーザーは再接続してログインする必要がでてくるかもしれません。  この動作はあなたのアプリケーションの動作によって決まります。

オプション3:地理的に分散された展開

複数のデータセンターを備えた構成や、複数のアベイラビリティーゾーンと地理的ゾーンを備えたクラウド展開など、地理的に分散された展開では、DNSベースの負荷分散とローカル負荷分散の両方を使用するシンプルでサポートしやすいモデルで地理的なリダイレクトの慣行を考慮する必要が生じます。

この組み合わせモデルでは、各データセンター、アベイラビリティーゾーン、またはクラウド地理的地域にあるネットワークロードバランサーと合わせて、Amazon Route 53、F5 Global Traffic Manager、Citrix NetScaler Global Server Load Balancing、Cisco Global SiteSelectorなどのDNSサービスと連携する追加のネットワークアプライアンスを導入します。

このモデルでは、前述のポーリング(推奨)またはAPIメソッドのいずれかが、ミラーメンバー(フェイルオーバーまたはDR非同期のいずれか)が稼働している場所に対してローカルで使用されます。  これは、トラフィックをいずれかのデータセンターに転送できるかどうかを地理的/グローバルネットワークアプライアンスに報告するために使用されます。  また、この構成では、ローカルネットワークトラフィック管理アプライアンスは、地理的/グローバルネットワークアプライアンスに独自のVIPを提示します。

通常の定常状態では、アクティブなプライマリミラーメンバーは、プライマリであることをローカルネットワークアプライアンスに報告し、「Up」ステータスを提供します。  この「Up」ステータスは、すべてのリクエストをこのアクティブなプライマリミラーメンバーに転送するためにDNSレコードを調整および維持するよう、地理的/グローバルアプライアンスに中継されます。

同じデータセンター内でフェイルオーバーが起きた場合(バックアップ同期ミラーメンバーがプライマリになった場合)は、APIまたはポーリング方式のいずれかがローカルロードバランサーで使用され、同じデータセンター内の新しいプライマリミラーメンバーにリダイレクトされます。  新しいプライマリミラーメンバーがアクティブであり、ローカルロードバランサーは引き続き「Up」ステータスで応答しているため、地理的/グローバルアプライアンスへの変更は行われません。

次の図で、ネットワークアプライアンスへのローカル統合のためにAPI方式を使用して、例を説明します。

APIまたはポーリング方式のいずれかを使用した別のデータセンターへのフェイルオーバーが起きた場合(代替データセンターの同期ミラーまたはDR非同期ミラーメンバーの場合)は、新しく昇格されたプライマリミラーメンバーがプライマリとしてローカルネットワークアプライアンスへ報告を開始します。

フェイルオーバー中は、かつてプライマリが含まれていたデータセンターは、ローカルロードバランサから地理的/グローバルへの「Up」を報告しなくなります。  地理的/グローバルアプライアンスは、トラフィックをそのローカルアプライアンスには転送しません。   代替データセンターのローカルアプライアンスは、地理的/グローバルアプライアンスに「Up」と報告し、DNSレコードの更新を呼び出して、代替データセンターのローカルロードバランサーによって提示された仮想IPに転送するようにします。

オプション4:多層的、および地理的に分散された展開

ソリューションをさらに一歩進めるには、プライベートWANの内部として、またはインターネット経由でアクセス可能なものとして、個別のWebサーバー層を導入します。  恐らくこのオプションは、大規模なエンタープライズアプリケーションの一般的な展開モデルです。 

次の例では、複数のネットワークアプライアンスを使用して、Web層とデータベース層を安全に分離およびサポートする構成例を示しています。  このモデルでは、地理的に分散された2つの場所が使用され、1つは「プライマリ」場所と見なされ、もう1つはデータベース層用「災害復旧」専用の場所です。  データベース層災害復旧の場所は、プライマリな場所が何らかの理由で運転休止になった場合に使用されます。   さらに、この例のWeb層は、アクティブ - アクティブとして示されます。つまりユーザーは、最小の遅延、最小の接続数、IPアドレス範囲、または適切と思われるその他のルーティンルールなど、さまざまなルールに基づいていずれかの場所に転送されます。

上記の例が示すように、同じ場所でフェイルオーバーが起きた場合は、自動フェイルオーバーが発生し、ローカルネットワークアプライアンスが新しいプライマリを指すようになります。  ユーザーは引き続きいずれかの場所のWebサーバーに接続し、Webサーバーは関連付けられたCSPゲートウェイで引き続き場所Aを指します。

次の例では、プライマリフェイルオーバーミラーメンバーとバックアップフェイルオーバーミラーメンバーの両方が稼働していないロケーションAでの完全フェイルオーバーまたは運転休止について検討します。  このような場合、DR非同期ミラーメンバーは、プライマリおよびバックアップフェイルオーバーミラーメンバーに手動で昇格されます。  昇格されると、新しく指定されたプライマリミラーメンバーにより、ロケーションBの負荷分散アプライアンスが前述のAPIメソッドを使用して「Up」を報告できるようになります(ポーリングメソッドもオプションの1つです)。  ローカルロードバランサーが「Up」を報告するようになった結果、DNSベースのアプライアンスはそれを認識し、データベースサーバーサービスのためにトラフィックを場所Aから場所Bにリダイレクトします。

まとめ

仮想IPを使用しないにミラーフェイルオーバーを設計するには、さまざまな組み合わせが考えられます。 これらのオプションは、最も単純な高可用性シナリオまたはフェイルオーバーとDR非同期ミラーメンバーの両方を含む複数の層を備えた複数の地域に渡る展開のいずれにも適用でき、アプリケーションの最高レベルの運用回復力を維持することを目的とした、可用性が高く災害に強いソリューションを実現できます。

この記事では、あなたのアプリケーションと可用性の要件に適したフェイルオーバーを備えたデータベースミラーリングを正常に展開するために可能なさまざまな組み合わせと活用事例に関して説明いたしました。

0
0 550
記事 Toshihiko Minamoto · 2月 11, 2021 27m read

InterSystems IRIS デプロイガイド - AWS CloudFormation テンプレート 

  注意: 本ガイド (特に前提条件のセクション) を理解するには、AWS に関する中級から上級レベルの知識が必要になります。 S3 バケット、EC2 インスタンスの IAM ロール、VPC、サブネットを作成する必要があります。 また、InterSystems バイナリへのアクセス (通常は WRC サイトからダウンロード可) および IRIS のライセンスキーも必要になります。
  2020 年 8月 12日
Anton Umnikov

テンプレートのソースコードは、こちらから入手していただけます: https://github.com/antonum/AWSIRISDeployment

目次

InterSystems IRIS デプロイガイド – AWS パートナーネットワーク

はじめに

前提条件と要件

所要時間

製品ライセンスとバイナリ

AWS アカウント

IAM エンティティ (ユーザー)

EC2 の IAM ロール

S3 バケット

VPC とサブネット

EC2 キーペア

必要な知識

アーキテクチャ

マルチ AZ 配置による耐障害性を備えたアーキテクチャダイアグラム (優先)

シングルインスタンンス、シングル AZ 配置のアーキテクチャダイアグラム (開発およびテスト)

デプロイメント

セキュリティ

プライベートサブネットのデータ

保存されている IRIS データの暗号化

転送中の IRIS データの暗号化

IRIS Management Portal への安全なアクセス

ログ / 監査 / モニタリング

サイジング / コスト

デプロイアセット

デプロイオプション

デプロイアセット (プロダクションに推奨)

CloudFormation テンプレートの入力パラメータ

クリーンアップ

デプロイのテスト

正常性チェック

フェイルオーバーテスト

バックアップと回復

バックアップ

インスタンスの障害

アベイラビリティーゾーン (AZ) の障害

リージョンの障害

RPO/RTO

ストレージ容量

セキュリティ証明書の期限

日常的なメンテナンス

緊急メンテナンス

サポート

トラブルシューティング

InterSystems サポートへの問い合わせ

付録

IAM Policy for EC2 instance

 

はじめに

InterSystems は、ユーザーの皆さまに InterSystems と AWS のベストプラクティスに則したかたちで独自の InterSystems IRIS® データプラットフォームをセットアップしていただけるよう CloudFormation テンプレートを提供しております。

本ガイドでは、CloudFormation テンプレートをデプロイするステップを詳しく解説していきます。 

本ガイドでは、InterSystems IRIS CloudFormation テンプレートをデプロイする 2 種類の方法をご紹介します。 1 つ目は、複数のアベイラビリティーゾーン (AZ) を使い、プロダクションのワークロードを対象とした可用性の高い方法で、2 つ目は、開発とテストのワークロードを対象に、単一のアベイラビリティーゾーンにデプロイする方法です。

前提条件と要件

このセクションでは、当社のソリューションを実行、操作していただくための前提条件と要件について詳しく説明します。

所要時間

デプロイ自体は 4 分程度で完了しますが、前提条件やテストの時間を入れると、最大 2 時間ほどかかります。

製品ライセンスとバイナリ

InterSystems のお客様には、https://wrc.intersystems.com より InterSystems IRIS のバイナリをご使用いただけます。 WRC の認証情報を使ってログインしてから、リンクに従って Actions -> SW Distributions -> InterSystems IRIS と順に移動してください。 このデプロイガイドは、InterSystems IRIS 2020.1 のビルド 197 の Red Hat プラットフォーム向けに作成されています。 IRIS のバイナリファイル名は、 ISCAgent-2020.1.0.215.0-lnxrhx64.tar.gz および IRISHealth-2020.1.0.217.1-lnxrhx64.tar.gz形式で書かれています。 InterSystems IRIS のライセンスキーは、既存のライセンスキー (iris.key) を使用いただけるはずです。 また、InterSystems IRIS Evaluation Service (https://download.intersystems.com/download/register.csp) より評価キーをリクエストしていただくこともできます。

AWS アカウント

セットアップ済みの AWS アカウントが必要です。 お持ちでない方は、 https://aws.amazon.com/getting-started/ よりセットアップしてください。

IAM エンティティ (ユーザー)

IAM (ユーザーまたはロール) を作成します。 IAM ユーザーは、AWS CloudFormation のアクションを許可するポリシーが必要です。 CloudFormation テンプレートをデプロイするのに、ルートアカウントは使わないでください。 AWS CloudFormation のアクションに加え、スタックを作成または削除する IAM ユーザーは、スタックテンプレートに依拠する別のアクセス権限も必要になります。 このデプロイでは、次のセクションで紹介するすべてのサービスへのアクセス権が必要になります。参考資料: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html

EC2 の IAM ロール

CloudFormation テンプレートは、EC2 インスタンスが S3 バケットにアクセスし、CloudWatch にログを入力するのを許可する IAM ロールが必要です。 そうようなロールに関連するポリシーの例については、「IAM Policy for EC2 instance」と題した付録をご参照ください。参考資料: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html

S3 バケット

「my bucket」という名前の S3 バケットを作成し、IRIS のバイナリファイルと iris.key をコピーします。

BUCKET=

aws s3 mb s3://$BUCKET

aws s3 cp ISCAgent-2020.1.0.215.0-lnxrhx64.tar.gz s3://$BUCKET

aws s3 cp IRISHealth-2020.1.0.217.1-lnxrhx64.tar.gz s3://$BUCKET

aws s3 cp iris.key s3://$BUCKET

VPC とサブネット

テンプレートは、IRIS を既存の VPC とサブネットにデプロイするようにデザインされています。 AZ が 3 つ以上あるリージョンでは、3 つの異なる AZ でプライベートサブネットを 3 つ作成することを推奨しています。 Bastion Host は、VPC 内にあるパブリックサブネットのいずれかに配置します。 CloudFormation テンプレート (https://docs.aws.amazon.com/codebuild/latest/userguide/cloudformation-vpc-template.html) を基に VPC とサブネットを作成するには、AWS の例に従ってください。

EC2 キーペア

このテンプレートによってプロビジョンされる EC2 インスタンスにアクセスするには、EC2 キーペアが少なくとも 1 つは必要です。 詳細は、こちらのガイドをご参照ください: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

必要な知識

以下の AWS サービスに関する知識が必要になります。

  • Amazon Elastic Compute Cloud (Amazon EC2)
  • Amazon Virtual Private Cloud (Amazon VPC)
  • AWS CloudFormation
  • AWS Elastic Load Balancing
  • AWS S3
  • このデプロイを実行するにあたり、アカウント制限の引き上げは必要ありません。

    適切なポリシーやアクセス権限の詳細は、こちらでご確認くださいhttps://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html

    注意: AWS アソシエイト認定をお持ちのユーザーなら、十分な知識を修得していると思われます。

    アーキテクチャ

    このセクションでは、考えられる 2 つのパターンのデプロイを対象としたアーキテクチャダイアグラムをご紹介し、アーキテクチャデザインの選択肢についても解説します。

    マルチ AZ 配置による耐障害性を備えたアーキテクチャダイアグラム (優先)

    優先されるこのオプションでは、高い可用性と耐障害性を確保するために、IRIS のミラー化されたインスタンスが 2 つのアベイラビリティーゾーンでロードバランサーの後に置かれます。 アベイラビリティーゾーンが 3 以上あるリージョンでは、Arbiter ノードが 3 つ目の AZ に置かれます。

    データベースノードは、プライベートサブネットに置かれます。 Bastion Host は、同じ VPC 内のパブリックサブネットにあります。

  • Network Load Balancer は、データベースのトラフィックを現在のプライマリ IRIS ノードに移動させます。
  • Bastion Host は、IRIS EC2 インスタンスへの安全なアクセスを実現します。
  • IRIS は、すべての顧客データを暗号化された EBS ボリュームに保存します。
    1. EBS は暗号化され、AWS Key Management Service (KMS) により管理されるキーを使用します。
    2. 転送中のデータの暗号化が必要とされる規制ワークロードについては、インスタンスの r5n ファミリーを使用すると、インスタンス間のトラフィックが自動的に暗号化されるので便利です。 IRIS レベルでトラフィックを暗号化することも可能ですが、CloudFormation はこれを有効化していません (本ガイドの「転送中の IRIS データの暗号化」のセクションをご覧ください)。
  • セキュリティグループを使用すると、必要なトラフィックだけを許可できるため、アクセスを可能な限り制限できます。
  • シングルインスタンンス、シングル AZ 構成アーキテクチャダイアグラム (開発およびテスト)

    InterSystems IRIS は、開発や評価を行う目的で、1 つのアベイラビリティーゾーンにデプロイすることもできます。 データフローやアーキテクチャのコンポーネントは、前のセクションで説明したものと同じです。 このソリューションは、高い可用性も、耐障害性も提供しないため、プロダクションでの使用には適していません。

     

    デプロイメント

  • 「前提条件」のセクションで作成した IAM エンティティ (ソリューションのデプロイに必要な権限を持つ IAM エンティティ) を使って、AWS アカウントにログインします。
  • VPC、S3 バケット、IRIS バイナリ、ライセンスキーなど、前提条件がすべて整っていることを確認します。
  • 以下のリンクをクリックし、マルチ AZ 配置による耐障害性を備えた CloudFormation テンプレートをデプロイします (デプロイ先は us-east-1): https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=InterSystemsIRIS&templateURL=https://isc-tech-validation.s3.amazonaws.com/MirrorCluster.yaml
  • 「Step 1 - Create Stack」で、「Next」ボタンをクリックします。
  • 「Step 2 - Specify stack details」で、要件に合わせて CloudFormation パラメータを入力、調整します。
  • 「Next」ボタンをクリックします。
  • 「Step 3 - Configure stack options」で、オプションのタグ、権限、詳細オプションを入力、調整します。
  • 「Next」ボタンをクリックします。
  • CloudFormation の設定を確認します。
  • 「Create Stack」ボタンをクリックします。
  • CloudFormation テンプレートがデプロイされるまで、4 分ほど待ちます。
  • デプロイのステータスが「CREATE_COMPLETE」になっていれば、デプロイは成功です。
  • ステータスが「CREATE_FAILED」になっていれば、本ガイドの「トラブルシューティング」のセクションをご覧ください。
  • デプロイが完了したら、本ガイドの「正常性チェック」を実行してください。
  • セキュリティ

    このセクションでは、このガイドを実行してデプロイされる InterSystems IRIS のデフォルト設定、ベストプラクティスの概要、AWS でソリューションをセキュリティ保護するオプションについて解説します。

    プライベートサブネットのデータ

    InterSystems IRIS の EC2 インスタンスは、プライベートサブネットに配置し、それへのアクセスは Bastion Host を経由する場合か、ロードバランサーを経由するアプリケーションに限定する必要があります。

    保存されている IRIS データの暗号化

    InterSystems IRIS を実行するデータベースインスタンスでは、保存データは基になる (かつ暗号化されている) EBS ボリューム内に格納されます。 この CloudFormation テンプレートは、アカウントのデフォルトの AWS マネージドキーで暗号化される「aws/eb」という名前の EBS ボリュームを作成します。

    転送中の IRIS データの暗号化

    この CloudFormation では、クライアントとサーバー間の接続と、インスタンス間の接続はセキュリティ保護されません。 転送中のデータを暗号化する必要がある場合は、デプロイが完了してから、以下のリンクに記載されているステップを実行してください。

    SuperServer 接続 (JDBC/ODBC の接続) で SSL を有効化するステップ: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCAS_ssltls#GCAS_ssltls_superserver

    IRIS EC2 インスタンス間では、耐久性を備えたマルチ AZ 構成のトラフィックも暗号化が必要になる場合があります。 これは、ミラー化に対し SSL 暗号化を有効にする (https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCAS_ssltls#GCAS_ssltls_mirroring) か、インスタンス間のトラフィックを自動的に暗号化する、インスタンスの r5n ファミリーに切り替えることで実現できます。

    AWS Certificate Manager (ACM) を使用すれば、Secure Sockets Layer/Transport Layer Security (SSL/TLS) 証明書のプロビジョン、管理、デプロイを簡単に行えます。

    IRIS Management Portal への安全なアクセス

    デフォルトで、IRIS Management Portal は、Bastion Host 経由でのみアクセスできるようになっています。

    ログ / 監査 / モニタリング

    InterSystems IRIS は、messages.log ファイルにログ情報を保管します。 CloudFormation では、追加のログ / モニタリングサービスはセットアップされません。 こちらに記載される構造化ログを有効化することを推奨します。https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=ALOG

    CloudFormation テンプレートは、InterSystems IRIS と CloudWatch の連携をインストールしません。 InterSystems では、https://github.com/antonum/CloudWatch-IRIS の InterSystems IRIS と CloudWatch の連携を推奨しています。  これにより、IRIS のメトリクスとログが messages.log ファイルから AWS CloudWatch に収集されます。

    CloudFormation テンプレートは、AWS CloudTrail のログを有効化しません。 CloudTrail のログを有効化するには、CloudTrail のサービスコンソールに移動し、CloudTrail のログを有効化します。 CloudTrail を使用すると、AWS インフラストラクチャで実行されるアクションに関連するアクティビティは、イベントとして CloudTrail に記録されます。 これにより、AWS アカウントのガバナンス、コンプライアンス、運用、リスクの監査を有効化できます。 

      参考資料: https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html
     

    InterSystems では、InterSystems IRIS のログとメトリクスのモニタリング、および少なくとも以下のインジケーターに対しアラートを設定することを推奨しています。

  • 重要度 2 と 3 のメッセージ
  • ライセンスの消費
  • ジャーナルとデータベースのディスク領域が不足している
  • Write Daemon のステータス
  • Lock Table ステータス
  • 上の内容に加え、ユーザーの皆さまには独自のモニタリングメトリクス、アラートメトリクス、アプリケーション固有の KPI を指定することを推奨しています。

    サイジング / コスト

    このセクションでは、本ガイドの「デプロイアセット」のセクションで説明する AWS のリソースを作成します。 このデプロイの実行中に使用される AWS サービスのコストはお客様の負担となります。 InterSystems IRIS のデプロイに最低限必要な設定をするだけでも、高い可視性とセキュリティが確保されます。

    本ガイドのテンプレートでは、InterSystems IRIS の BYOL (Bring Your Own License「ライセンスは各自で用意する」) ライセンスモデルを採用しています。

    InterSystems IRIS Marketplace のページでは、Pay Per Hour IRIS Pricing (時間課金制の IRIS 使用料金) についてご説明しています: https://aws.amazon.com/marketplace/pp/B07XRX7G6B?qid=1580742435148&sr=0-3

    BYOL モデルの料金に関する詳細は、https://www.intersystems.com/who-we-are/contact-us/ より InterSystems までお問い合わせください。

    正常に機能するプラットフォームを提供するには、以下の AWS アセットが必要です。

  • EC2 インスタンス 3 つ (EBS ボリュームとプロビジョンされた IOPS を含む)
  • Elastic Load Balancer 1 つ
  • 次のテーブルでは、デプロイ用の CloudFormation テンプレートに組み込まれる EC2 と EBS のキャパシティおよび AWS リソースのコスト (単位: $/月) に関する推奨事項を示しています。

    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" align="center" valign="top">
      <b>開発 / テスト</b>
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" align="center" valign="top">
      <b>小規模</b>
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" align="center" valign="top">
      <b>中規模</b>
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" align="center" valign="top">
      <b>大規模</b>
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      m5.large
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      2 * r5.large
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      2 * r5.4xlarge
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      2 * r5.8xlarge
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      t3.small
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      t3.small
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      t3.small
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      t3.small
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      t3.small
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      t3.small
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      t3.small
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      t3.small
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      gp2 20GB
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      gp2 50GB
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      io1 512GB 1,000iops
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      io1 600GB 2,000iops
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      gp2 128GB
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      gp2 128GB
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      io1 1TB 10,000iops
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      io1 4TB 10,000iops
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      gp2 64GB
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      gp2 64GB
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      io1 256GB 1,000iops
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      io1 512GB 2,000iops
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      85.51
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      199.71
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      1506.18
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      2981.90
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      27.20
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      27.20
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      450.00
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      1286.00
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      - 
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      - 
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      1560.00
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      1820.00
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      - 
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      - 
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      351.62
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      608.79
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      127.94
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      271.34
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      3867.80
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      6696.69
    </td>
    
    <td style="border-bottom:1px solid black; width:110px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
     <a href="https://calculator.s3.amazonaws.com/index.html#r=IAD&amp;s=EC2&amp;key=files/calc-80c2b4058aa67338d41697a65e2dec0b7dcd6b31&amp;v=ver20200806gR" style="color:blue; text-decoration:underline">計算</a>
    </td>
    
    <td style="border-bottom:1px solid black; width:95px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      <a href="https://calculator.s3.amazonaws.com/index.html#r=IAD&amp;s=EC2&amp;key=files/calc-5c93e625e2dc193f85de03582f319daebfaf387f&amp;v=ver20200806gR" style="color:blue; text-decoration:underline">計算</a>
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      <a href="https://calculator.s3.amazonaws.com/index.html#r=IAD&amp;s=EC2&amp;key=files/calc-4a2db7d6d3a73380df9d4fc02966898bef2845c2&amp;v=ver20200806gR" style="color:blue; text-decoration:underline">計算</a>
    </td>
    
    <td style="border-bottom:1px solid black; width:145px; padding:0in 7px 0in 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
      <a href="https://calculator.s3.amazonaws.com/index.html#r=IAD&amp;s=EC2&amp;key=files/calc-b7c5bc1f63c9f58457a022e720e347cb5b80531f&amp;v=ver20200806gR" style="color:blue; text-decoration:underline">計算</a>
    </td>
    
    ワークロード
     
    EC2 DB*
    EC2 Arbiter*
    EC2 Bastion*
    EBS SYS
    EBS DB
    EBS JRN
    計算コスト
    EBS ボリュームのコスト
    EBS IOPS コスト
    サポート
    (ベーシック)
    コスト合計
    計算リンク

    *すべての EC2 インスタンスには追加で gp2 の EBS ルートボリュームが 20GB 含まれます。

    AWS の推定コストは、バージニア州北部の地域のオンデマンド料金を基に計算されています。 スナップショットとデータ転送のコストは含まれていません。 料金に関する最新情報は、AWS 料金を参照してください。

    デプロイアセット

    デプロイオプション

    InterSystems IRIS CloudFormation テンプレートには、デプロイオプションが 2 つあります。 マルチ AZ 配置オプションは、プロダクションのワークロードに適した、可用性が高く、冗長性を備えたアーキテクチャを提供します。 シングル AZ 配置オプションは、低コストのオプションで、開発やテストのワークロードに適しています。

    デプロイアセット (プロダクションでの使用に推奨)

    InterSystems IRIS のデプロイメントは、CloudFormation テンプレートを使って実行されます。同テンプレートは、入力パラメータを受け取り、それをネストされた適切なテンプレートに渡します。  それらは、条件や依存関係に従って順番に実行されます。

    作成される AWS リソース

  • VPC セキュリティグループ
  • IRIS ノードと Arbiter の EC2 インスタンス
  • Network Load Balancer (NLB) (Amazon Elastic Load Balancing (Amazon ELB))
  • CloudFormation テンプレートの入力パラメータ

    AWS 全般

  • EC2 Key Name Pair
  • EC2 インスタンスロール
  • S3

  • IRIS のディストリビューションファイルとライセンスキーがある S3 バケットの名前。
  • ネットワーク

  • リソースが起動される個別の VPC とサブネット。
  • データベース

  • データベースマスターパスワード
  • データベースノードの EC2 インスタンスタイプ
  • スタックの作成マスターテンプレートの出力は、JDBC クライアントを InterSystems IRIS に接続する際に使用できる JDBC エンドポイント、Bastion Host のパブリック IP、および両方の IRIS ノードのプライベート IP、と 4 つの出力があります。

    クリーンアップ

  • 本ガイドを実行した結果デプロイされるリソースを削除するには、AWS CloudFormation Delete ドキュメンテーションに記載されているステップを実行してください。
  • デプロイとの統合やサポートの実施中に手動で作成したその他のリソース (S3 バケットや VPC など) を削除します。
  • デプロイのテスト

    正常性チェック

    Node 01/02 Management Portal へのリンクをクリックします。 ユーザー名「SuperUser」および CloudFormation テンプレートで選択したパスワードを使ってログインします。

    System Administration -> Configuration -> Mirror Settings -> Edit Mirror と順に移動します。 システムに 2 つのファイルオーバーメンバが設定されていることを確認します。

    ミラー化されたデータベースが作成され、アクティブであることを確認します。 System Administration -> Configuration -> Local Databases と順に移動します。

    「First Look JDBC」と題したドキュメント (https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_jdbc) の内容に従って、JDBC が Load Balancer を介して IRIS に接続されていることを確認します。 URL 変数をテンプレートの出力に表示されている値に変更し、パスワードも「SYS」からセットアップの最中に選択したパスワードに変更します。

    フェイルオーバーテスト

    Node02 で、Management Portal にアクセス (上の「正常性チェック」のセクション参照) し、Configuration->Edit Mirror と順に開きます。 ページの一番下に「このメンバはバックアップです。 プライマリに変更を加える必要があります。」 というメッセージが表示されます。

    AWS EC2 マネジメントダッシュボードで Node01 インスタンスを見つけます。 その名前は、MyStackName-Node01-1NGXXXXXX の形式で書かれています。

    Node01 インスタンスを再起動します。 これにより、インスタンス / AZ の停止がシミュレートされます。

    Node02 の「Edit Mirror」ページを再度読み込みます。 するとステータスは、このメンバはプライマリです。 変更内容は他のメンバに送信されます。 に変わるはずです。

    バックアップと回復

    バックアップ

    CloudFormation をデプロイしても、InterSystems IRIS のバックアップは有効化されません。 当社では、EBS Snapshot (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html) と IRIS Write Daemon Freeze (https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCDI_backup#GCDI_backup_methods_ext) の両方を使って IRIS EBS ボリュームをバックアップすることを推奨しています。

    インスタンスの障害

    異常な IRIS インスタンスは、IRIS のミラーリング機能と Load Balancer により検出され、トラフィックは別のミラーノードに移動されます。 回復可能なインスタンスはミラーに再度参加して、通常の操作が続行されます。 異常な状態が続くインスタンスがある場合は、当社のナレッジベースおよび本ガイドの「緊急メンテナンス」のセクションをご覧ください。

    アベイラビリティゾーン (AZ) の障害

    AZ の障害が発生すると、トラフィックが一時的に中断される場合があります。 インスタンスの障害発生時と同様に、この場合も IRIS のミラーリング機能と Load Balancer がトラフィックを使用可能な別の AZ に切り替えて状況に対処します。

    リージョンの障害

    本ガイドで紹介するアーキテクチャでは、マルチリージョンオペレーションをサポートする設定はデプロイされません。 IRIS の非同期ミラーリングと AWS Route53 を使用すれば、中断を最小限に抑えながらリージョンの障害に対処できる構成を作成できます。 詳細は、https://community.intersystems.com/post/intersystems-iris-example-reference-architectures-amazon-web-services-awsを参照してください。

    RPO/RTO


    目標復旧時点 (RPO)

  • シングルノードの開発 / テスト設定は、最後に正常に行われたバックアップの時刻によって定義されます。
  • Multi Zone Fault Tolerant セットアップは、フェイルオーバー発生時にデータの完全な一貫性を保証するアクティブ/アクティブ構成を提供し、最後に正常に実行されたトランザクションの RPO が使用されます。
  • 目標復旧時間 (RTO)

  • シングルノードの開発 / テスト構成におけるバックアップの復元は、本デプロイガイドの範囲外です。 EBS ボリュームのスナップショットを復元することに関する詳細は、https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-restoring-volume.htmlを参照してください。
  • Multi Zone Fault Tolerant セットアップの RTO は、一般的に、Elastic Load Balancer がトラフィックを IRIS クラスタの新しい Primary Mirror ノードに移動させるのに要する時間によって定義されます。 RTO の時間は、ミラー対応アプリケーションを作成するか、ミラーに Application Server Connection を追加することで、さらに短縮できます (https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GHA_mirror#GHA_mirror_set_configecp を参照)。
  • ストレージ容量

    IRIS ジャーナルとデータベースの EBS ボリュームは、容量が上限に達する場合があります。 InterSystems では、IRIS Dashboard ならびに「df」のような Linux のファイルシステムツールを使い、ジャーナルとデータベースのボリュームの状態をモニタリングすることを推奨しています。

    ジャーナルとデータベースのボリュームは、EBS ガイド https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modify-volume.htmlを使えば拡張することができます。 注意: EBS ボリュームの拡張と Linux ファイルシステムの拡張の両方のステップを実行する必要があります。 また、データベースのバックアップを実行した後に、Purge Journalsを実行すれば、ジャーナルが占めていた領域を開放することもできます。

    また、インスタンスに対して CloudWatch Agent を有効にして (この CloudFormation テンプレートでは無効)、ディスク領域をモニタリングすることも検討してもよいでしょう (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)

    セキュリティ証明書の期限

    AWS Certificate Manager (ACM) を使えば、Secure Sockets Layer/Transport Layer Security (SSL/TLS) 証明書を簡単にプロビジョン、デプロイ、管理し、またその有効期限をモニタリングできます。

    証明書の有効期限は把握しておく必要があります。 InterSystems では、証明書の有効期限をモニタリングする統合プロセスは提供していません。 AWS では、アラームのセットアップに便利な CloudFormation テンプレートが提供されています。 詳細は、こちらのリンク https://docs.aws.amazon.com/config/latest/developerguide/acm-certificate-expiration-check.html をご覧ください。

    日常的なメンテナンス

    ミラー化された構成において IRIS をアップグレードする手順については、https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCI_upgrade#GCI_upgrade_tasks_mirrorsを参照してください。

    継続的なタスクについて、InterSystems では以下を含む AWS と InterSystems のベストプラクティスを実施することを推奨しています。 

  • アクセスキーのローテーション
  • サービス制限の評価
  • 証明書の更新
  • IRIS ライセンスの制限と期限: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCM_dashboard
  • ストレージ容量のモニタリング: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCM_dashboard
  • また、EC2 インスタンスに CloudWatch Agent を追加することを検討しても良いでしょう: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html

    緊急メンテナンス

    EC2 インスタンスを使用できる場合は、Bastion Host 経由でインスタンスに接続しましょう。

    注意: インスタンスを停止 / 開始した後は、Bastion Host のパブリック IP が変更される場合があります。 これが、IRIS クラスタの可用性や JDBC 接続に影響することはありません。

    コマンドラインを使ってアクセスするには、以下のコマンドを使って Bastion Host 経由で IRIS ノードに接続します。

    $ chmod 400 .pem$ ssh-add .pem

    $ ssh -J ec2-user@<bastion-public-ip> ec2-user@<node-private-ip> -L 52773:1:52773

    上のコマンドを実行したら、インスタンスの Management Portal が http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen にて使用可能になります。ユーザは「SuperUser」、パスワードはスタックの作成時に入力したパスワードを使います。

    IRIS のコマンドプロンプトにアクセスするには、以下のコマンドを使います。

    $ iris session iris

    「InterSystems IRIS Management and Monitoring」ガイドを参照してください: https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GCM

    InterSystems サポートへの問い合わせ。

    EC2 インスタンスが使用またはアクセスできない場合は、AWS サポートまでお問い合わせください。

    注意: マルチ AZ 配置のデプロイで発生する AZ やインスタンスの障害は、自動的に処理されます。

    サポート

    トラブルシューティング

    CloudFormation で「Create Stack」(スタックを作成) を実行できません「Create Stack」を実行できる適切な権限を持っていることをご確認ください。 AWS アカウントの管理者にアクセス権限をお求めください。また、問題が解決しない場合は AWS サポートまでお問い合わせください

    スタックは作成されますが、IRIS にアクセスできませんEC2 インスタンスのステータスが「CEATE COMPLETED」に変わってから、IRIS の使用準備が完全に整うまでは、およそ 2 分程度かかります。 SSH で EC2 Node のインスタンスと通信し、IRIS が稼働していることをご確認ください。

    $iris list

    アクティブな IRIS インスタンスが見当たらない場合や、“iris: command not found” というメッセージが表示される場合は、IRIS のインストールが失敗したことを意味します。 インスタンスを最初に開始するときに、インスタンスの $cat /var/log/cloud-init-output.log をチェックして、インストールに問題がなかったどうかを確認します。

    IRIS は稼働していますが、Management Portal にアクセスすることも、[Java] アプリケーションから接続することもできませんCloudFormation が作成した Security Group に、お使いのソース IP アドレスが許可されている IP アドレスとして表示されていることをご確認ください。

    InterSystems サポートへの問い合わせ

    InterSystems Worldwide Response Center (WRC) では、専門家によるテクニカルサポートを提供しています。

    InterSystems IRIS のサポートは、常に IRIS へのサブスクリプションに含まれています。

    電話、メール、オンラインでのサポートは、24 時間、年中無休でご利用いただけます。 世界 15 か国にサポートアドバイザーを配置。英語、スペイン語、ポルトガル語、イタリア語、ウェールズ語、アラビア語、ヒンディー語、中国語、タイ語、スウェーデン語、韓国語、日本語、フィンランド語、ロシア語、フランス語、ドイツ語、ヘブライ語およびハンガリー語での対応が可能です。 お客様の成功を大切にする、経験、知識ともに豊富なサポートスペシャリストが、すべてのお客様を素早くサポートいたします。

    すぐにサポートが必要な場合

    電話サポート:+1-617-621-0700 (US)+44 (0) 844 854 2917 (UK)0800615658 (NZ フリーダイヤル)1800 628 181 (AUS フリーダイヤル)

    メールサポート:support@intersystems.com

    オンラインサポート:WRC ダイレクトsupport@intersystems.com までログイン情報をお求めください。

    付録

    IAM Policy for EC2 instance

    以下の IAM ポリシーを使うことで、EC2 インスタンスは S3 バケット ‘my-bucket’ からオブジェクトを読み取り、CloudWatch にログを書き込むことができます。

    {  "Version": "2012-10-17",  "Statement": [    {      "Sid": "S3BucketReadOnly",      "Effect": "Allow",      "Action": ["s3:GetObject"],      "Resource": "arn:aws:s3:::my-bucket/"    },    {      "Sid": "CloudWatchWriteLogs",      "Effect": "Allow",      "Action": [        "logs:CreateLogGroup",        "logs:CreateLogStream",        "logs:PutLogEvents",        "logs:DescribeLogStreams"      ],      "Resource": "arn:aws:logs:::"    }  ]} 

    0
    0 447
    記事 Toshihiko Minamoto · 1月 28, 2021 4m read

    独自の組織データアーキテクチャを書き、InterSystems IRIS にマッピングする必要がある場合は、以下にご紹介するデータアーキテクチャダイアグラムおよび InterSystems IRIS ドキュメンテーションのリファレンスに記載されている内容を考慮してください。

    アーキテクチャマッピング

  • SQL データベース: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GSQL
  • 管理されるファイル: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=AFL_mft および https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=SETEDIGuides
  • IoT ブローカー、イベント、センサー: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EMQTT
  • メッセージ: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EMQS
  • NoSQL: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GDOCDB
  • API と Web サービス: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GREST, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GSOAP, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=AFL_iam および https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=PAGE_interoperability
  • ETL: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=SETAdapters, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EDTL, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EBPL および
  • EAI コネクタ: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=SETAdapters
  • XEP イベント: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=BJAVXEP, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=BNETXEP,
  • ビッグデータの取り込み: https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=BSPK
  • AI: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=PAGE_text_analytics, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=APMML, https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_python_native, https://www.intersystems.com/br/resources/detail/machine-learning-made-easy-intersystems-integratedml/
  • プロセス: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EBPL
  • コーポレートサービス: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EESB および https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=AFL_iam
  • メモリ内: https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GSCALE_ecp
  • コンテンツ: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GDOCDB
  • 文字列: https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_textanalytics
  • 保護: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=SETSecurity, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=TSQS_Applications,  https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GCDI および https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS
  • インベントリ: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GSA_using_portal および https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_xdata
  • プライバシー: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCAS_encrypt
  • IT ライフサイクル、バックアップ、復元: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GSA_using_portal, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCDI_backup
  • アクセス管理: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=TSQS_Authentication, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=TSQS_Authorization, https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=TSQS_Applications
  • レプリケーションおよび HA (高可用性): https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_high_availability
  • モニタリング: https://docs.intersystems.com/sam/csp/docbook/DocBook.UI.Page.cls?KEY=ASAM および https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_monitoring
  • IT オペレーション: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=PAGE_platform_mgmt
  • 0
    0 225
    記事 Toshihiko Minamoto · 12月 22, 2020 13m read

    HealthShare の理想的な Apache HTTPD Web サーバー構成に関するお問い合わせをよくいただいています。 この記事では、真っ先に推奨される HealthShare 製品の Web サーバー構成について概要を説明します。

    何よりもまず第一に、Apache HTTPD バージョン 2.4.x(64ビット)を使用することをお勧めします。 2.2.x のような旧バージョンも使用できますが、HealthShare のパフォーマンスとスケーラビリティを確保するにはバージョン 2.2 はお勧めできません。

    Apache の構成

    NSD を使用しない Apache API モジュール {#ApacheWebServer-ApacheAPIModulewithoutNSD}

    HealthShare では、NSD を使用しない Apache API モジュールをインストールオプションに指定する必要があります。 動的にリンクされるモジュールのバージョンは、Apache のバージョンによって異なります。

    • CSPa24.so(Apache バージョン 2.4.x)

    Apache の httpd.conf での Caché Server Pages の構成は、このドキュメントで詳しく説明する HealthShare のインストールによって実行するのが最善です。 ただし、この設定は手動で実行することもできます。 詳細については、InterSystems のドキュメントに掲載されている Apache 構成ガイド「推奨オプション:NSD を使用しない Apache API モジュール(CSPa24.so)」を参照してください。

    Apache マルチプロセッシングモジュール(MPM)の推奨事項 {#ApacheWebServer-ApacheMulti-ProcessingModuleRecommendations}

    Apache Prefork MPM と Worker MPM {#ApacheWebServer-ApachePreforkMPMVs.WorkerMPM}

    Apache HTTPD Web サーバーには、Prefork / Worker / Event の 3 つのマルチプロセッシングモジュール(MPM)が付属しています。 MPM はマシンのネットワークポートへのバインド、リクエストの受理、およびリクエストを処理するように子プロセスに割り当てたりする役割を担います。Apache はデフォルトで通常はトランザクションが多い場合や同時接続による負荷が高い場合には適切に拡張できない Prefork MPM で構成されています。

    HealthShare の本番システムでは、Apache MPM Worker を有効にしてパフォーマンスとスケーラビリティを確保する必要があります。 Worker MPM が推奨される理由は次のとおりです。

    • Prefork MPM はそれぞれ 1 つのスレッドを持つ複数の子プロセスを使用し、各プロセスが一度に 1 つの接続を処理します。 Prefork を使用する場合は各プロセスが一度に 1 つのリクエストしか処理できないため、同時リクエストが発生した場合に支障が出ます。この場合、リクエストはサーバープロセスが解放されるまでキューに格納されます。 また、スケーリングするには大量のメモリを消費する Prefork の子プロセスがさらに必要になります。
    • Worker MPM は、それぞれ多数のスレッドを持つ複数の子プロセスを使用します。 各スレッドが一度に 1 つの接続を処理することで同時実行性が大幅に向上し、メモリ要件が低くなります。 Worker の場合はビジー状態の可能性があるシングルスレッドの Prefork プロセスとは異なり、通常はリクエストの処理に使用できる空きスレッドがあるため、Prefork よりも高度に同時リクエストを処理できます。

    Apache Worker MPM のパラメーター {#ApacheWebServer-ApacheWorkerMPMParameters}

    Worker はスレッドを使用してリクエストを処理するため、Prefork プロセスベースのサーバーよりも少ないシステムリソースで多数のリクエストを処理できます。
    Worker MPM の制御に使用される最も重要なディレクティブは、各子プロセスが生成するスレッドの数を制御する ThreadsPerChild と起動可能なスレッドの最大数を制御する MaxRequestWorkers です。
    推奨される Worker MPM 共通ディレクティブの値を以下の表に詳しく記載しています。

    <th scope="col">
       <p style="margin-left: 40px;">推奨値</p>
    </th>
    
    <th scope="col">
       <p style="margin-left: 40px;">コメント</p>
    </th>
    
    <td>
     <p style="margin-left: 40px;"> HealthShare Clinical Viewer の最大同時接続ユーザー数、または他の HealthShare コンポーネントの場合は定義されているすべての本番インターフェースの着信ビジネスサービスのプールサイズの合計値に設定されます。</p><p><em>* <u>注意</u>: 構成時に不明であれば「1000」で開始してください</em></p>
    </td>
    
    <td>
      <p style="margin-left: 40px;">MaxRequestWorkers は同時に処理されるリクエストの数を制限します。つまり、クライアントにサービスを提供するために使用できるスレッドの総数を制限します。<br>MaxRequestWorkers は低すぎる値に設定するとリソースが無駄になり、高すぎる値に設定するとサーバーのパフォーマンスに影響が出るため、正しく設定しなければなりません。<br>Worker の数を超える接続があった場合、接続はキューに格納されてしまいます。 デフォルトのキューは、ListenBackLog ディレクティブで調整できます。  </p>
    </td>
    
    <td>
      <p style="margin-left: 40px;">250</p>
    </td>
    
    <td>
     <p style="margin-left: 40px;"> MaxSpareThreads はサーバー全体のアイドルなスレッドの数を制御します。 サーバー上にアイドルなスレッドが多すぎる場合、アイドルなスレッドの数がこの数より少なくなるまで子プロセスが強制終了されます。 スペアスレッドの量をデフォルトより多くすると、プロセスが再生成される確率が低くなります。</p>
    </td>
    
    <td>
      <p style="margin-left: 40px;">75</p>
    </td>
    
    <td>
     <p style="margin-left: 40px;"> MinSpareThreads はサーバー全体のアイドルなスレッドの数を制御します。 サーバー上にアイドルなスレッドが不足している場合、アイドルなスレッドの数がこの数より多くなるまで子プロセスが生成されます。 スペアスレッドの量をデフォルトより少なくすると、プロセスが再生成される確率が低くなります。  </p>
    </td>
    
    <td>
     <p style="margin-left: 40px;"> MaxRequestWorkers を ThreadsPerChild で割った値</p>
    </td>
    
    <td>
      <p style="margin-left: 40px;">サーバー稼働中における MaxRequestWorkers の最大値です。 ServerLimit はアクティブな子プロセス数の厳密な上限値であり、MaxRequestWorkers ディレクティブを ThreadsPerChild ディレクティブで割った値以上である必要があります。 worker では MaxRequestWorkers および ThreadsPerChild の設定で 16(デフォルト)以上のサーバープロセスが必要な場合にのみ、このディレクティブを使用してください。  </p>
    </td>
    
    <td>
      <p style="margin-left: 40px;">20</p>
    </td>
    
    <td>
      <p style="margin-left: 40px;">StartServers ディレクティブは起動時に生成される子サーバープロセスの数を設定します。 プロセス数は負荷に応じて動的に制御されるため、サーバーが起動時に大量の接続を処理できるようにする場合を除き、通常はこのパラメーターを調整する理由はほとんどありません。  </p>
    </td>
    
    <td>
     <p style="margin-left: 40px;">25</p>
    </td>
    
    <td>
      <p style="margin-left: 40px;">このディレクティブは各子プロセスが生成するスレッドの数を設定します。デフォルトでは 25 です。 デフォルト値を増やすと単一のプロセスに過度に依存する可能性があるため、デフォルト値を維持することをお勧めします。</p>
    </td>
    
    推奨される Apache HTTPD Web サーバーのパラメーター
    Apache Worker MPM のディレクティブ
    MaxRequestWorkers 
    MaxSpareThreads
    MinSpareThreads
    ServerLimit
    StartServers
    ThreadsPerChild

    詳細については、関連する Apache バージョンのドキュメントを参照してください。

    Apache 2.4 の Worker MPM 構成の例 {#ApacheWebServer-ExampleApache2.4WorkerMPMConfiguration}

    このセクションでは、最大 500 人の TrakCare ユーザーが同時接続できるようにするために必要な RHEL7 の Apache 2.4 Web サーバー用に Worker MPM の構成について詳しく説明します。

    1. まず、以下のコマンドを使用して MPM を確認します。
    2. 必要に応じて、構成ファイル /etc/httpd/conf.modules.d/00-mpm.conf を編集します。コメント文字 # の追加や削除を行い、Worker MPM モジュールのみがロードされるようにしてください。 Worker MPM セクションを、以下と同じ順序で次の値に変更します。
    3. Apache を再起動します。
    4. Apache が正常に再起動したら、以下のコマンドを実行して worker プロセスを検証します。 次のような内容が表示され、httpd.worker プロセスを確認できます。

    Apache の強化 {#ApacheWebServer-ApacheHardening}

    Apache に必要なモジュール {#ApacheWebServer-ApacheRequiredModules}

    公式の Apache 配布パッケージをインストールすると、デフォルトで特定の Apache モジュールセットが有効になります。 Apache のこのデフォルト構成では、これらのモジュールが各 httpd プロセスにロードされます。 次の理由により、HealthShare に必要のないすべてのモジュールを無効にすることをお勧めします。

    • httpd デーモンプロセスのメモリ使用量が削減されます。
    • 不正なモジュールに起因するセグメンテーション違反の可能性が低下します。
    • セキュリティの脆弱性が削減されます。

    HealthShare に推奨される Apache モジュールの詳細を以下の表に記載しています。 以下に掲載されていないモジュールは無効にすることができます。

    モジュール名説明
    aliasホストファイルシステム内のさまざまな場所をドキュメントツリーにマッピングする機能と、URL リダイレクト機能を提供します。
    authz_hostクライアントのホスト名、IPアドレスに基づいてアクセス制御を行います。
    dir末尾のスラッシュを補完してリダイレクトする機能と、ディレクトリのインデックスファイルを扱う機能を提供します。
    headersHTTP リクエストとレスポンスヘッダーを制御および変更するためのモジュールです。
    log_configサーバーに対して発行されるリクエストのログを記録します。
    mimeリクエストされたファイル名の拡張子をファイルの振る舞いと内容に関連付けます。
    negotiationクライアントの特性に応じて最適なドキュメントの内容を選択する機能を提供します。
    setenvifリクエストの特徴に基づいて環境変数を設定できるようにします。
    statusサーバーのステータスとパフォーマンスに関する統計を表示します。

    モジュールを無効にする

    セキュリティの脆弱性を減らすように構成を強化するには、不要なモジュールを無効にする必要があります。 Web サーバーのセキュリティポリシーを管理するのはお客様の役割です。 少なくとも、以下のモジュールを無効にする必要があります。

    モジュール名説明
    asis独自の HTTP ヘッダーを含むファイルを送信する機能を提供します。
    autoindexindex.html ファイルが存在しない場合にディレクトリインデックスを生成し、ディレクトリをリスト表示する機能を提供します。
    envCGI スクリプトと SSI ページに渡される環境変数を変更する機能を提供します。
    cgicgi - CGI スクリプトを実行する機能を提供します。
    actionsメディアタイプまたはリクエストメソッドに基づいて CGI スクリプトを実行し、リクエストに応じてアクションをトリガーする機能を提供します。
    includeサーバーで解析された HTML ドキュメント(サーバーサイドインクルード)を使用可能にするモジュールです。
    filterリクエストの高度なフィルタリング機能を提供します。
    versionIfVersion を使用して構成ファイル内でバージョン情報を処理できるようにします。
    userdirリクエストをユーザー専用のディレクトリにマッピングする機能を提供します。 具体的には、URL の ~username がサーバー内のディレクトリに変換されます。

    Apache SSL/TLS {#ApacheWebServer-ApacheSSLTLS}

    転送中のデータを保護し、機密性を確保して認証を行うため、InterSystems は HealthShare サーバーとクライアント間のすべての TCP/IP 通信を SSL/TLS で暗号化し、さらにはユーザーのブラウザクライアントと提案されたアーキテクチャの Web サーバーレイヤー間のすべての通信に HTTPS を使用することを推奨しています。 所属する組織に固有のセキュリティ要件に準拠していることを確認するには、必ず所属する組織のセキュリティポリシーを参照してください。

    SSL/TLS 証明書を提供および管理するのはお客様の役割です。
    SSL 証明書を使用している場合は、ssl_module(mod_ssl.so)を追加してください。

    追加の Apache 強化パラメーター {#ApacheWebServer-AdditionalHardeningApacheParameters}

    Apache 構成をさらに強化するには、httpd.conf で次の変更を行ってください。

    • 潜在的なクロスサイトトレーシングの問題を防ぐため、TraceEnable をオフにする必要があります。

    • Web サーバーのバージョンが表示されないようにするため、ServerSignature をオフにする必要があります。

    補足的な Apache 構成パラメーター {#ApacheWebServer-SupplementalApacheConfigurationParameters}

    Keep-Alive {#ApacheWebServer-Keep-Alive}

    Apache の Keep-Alive 設定は、新しいリクエストのたびに新しい接続をオープンせず、同じ TCP 接続を使用して HTTP 通信を行えるようにするものです。 Keep-Alive はクライアントとサーバー間に持続的な接続を維持します。 Keep-Alive オプションを有効にすると、ネットワークの輻輳が軽減され、後続リクエストの遅延が少なくなり、同時接続のオープンに起因する CPU 消費が低下し、パフォーマンスが向上します。 Keep-Alive はデフォルトでオンになっており、HTTP v1.1 標準では当然オンにすることが求められています。

    ただし、Keep-Alive を有効にする場合は注意が必要です。Internet Explorer は古いバージョンでの既知のタイムアウトの問題を回避するため、 IE10 以降でなければなりません。 また、ファイアウォール、ロードバランサー、プロキシなどの仲介者が「持続的なTCP接続」に干渉し、予期せず接続が閉じられてしまう可能性もあります。 

    Keep-Alive を有効にする場合は、Keep-Alive のタイムアウト値も設定する必要があります。 Apache デフォルトの Keep-Alive タイムアウト値は非常に小さく、壊れた AJAX(hyperevent などの)リクエストに関連して問題が発生する可能性があるため、ほとんどの構成では大きくする必要があります。 これらの問題は、サーバーの Keep-Alive タイムアウト値がクライアントのタイムアウト値よりも大きくなるように調整することで回避できます。 つまり、サーバーではなくクライアントがタイムアウトして接続を閉じるようにすべきです。 ブラウザが当然オープンしていると考えている接続を(特に POST する場合に)使用しようとすると、問題が発生します(ほとんどの場合は IE で発生し、他のブラウザではそれほど発生しません)。

    HealthShare Web サーバーに推奨される KeepAlive と KeepAliveTimeout の値については、以下を参照してください。

    Apache で KeepAlive を有効にするには、httpd.conf で以下のように変更を行ってください。

    CSP Gateway {#ApacheWebServer-CSPGateway}

    CSP Gateway の KeepAlive パラメーターについては、各リクエストの HTTP レスポンスヘッダーによって KeepAlive のステータスが決まるため、この値はデフォルトの「No Action」のままにしてください。

    0
    0 1280
    記事 Mihoko Iijima · 12月 3, 2020 3m read

    これまでさまざまなストレージ技術とそのパフォーマンス特性の例を紹介してきましたが、今回は新しい HPE Cloudline 3150 Gen10(AMD プロセッサベースのシングルソケットサーバーで 3.2TB の Samsung PM1725a NVMe ドライブを 2 台搭載)など、内部コモディティベースのサーバーストレージの活用が増加傾向にあることを確認しました。  

    ハードウェア構成と LinuxLVM のセットアップ

    テストは次の構成で行われました。

    • 2 x Samsung 3.2TB PM1725a NVMe ドライブ(サーバー内蔵)
    • 1 x HPE Cloudline 3150 Gen10 サーバー
    • Red Hat Enterprise Linux 7.5 64 ビット版

    このテストでは、その他のストレージデバイスや HBA は使用していません。両方の NVMe ディスク装置の IO 能力を最大化するため、16MB の PE サイズを使用して単一の LVM PE ストライプを作成しました。 LVM PE ストライピングのセットアップの詳細は、コミュニティ内の別の記事にあります。

    InterSystems IRIS のインストールとセットアップ

    InterSystems IRIS は、単一のボリュームグループと単一の論理ボリュームにインストールされます。 今回は複数のボリュームグループと論理ボリュームを使わず、非常に単純なセットアップを行いたいと思いました。 この例では、単一の論理ボリュームとファイルシステムを作成しました(この例では、/data がファイルシステムのマウントポイントになっています)。データベースインスタンスからのランダム読み取りのワークロードを使用し、徐々にジョブ数が増加する IO ワークロードを生成しています。 1 TBのデータベースが IO ワークロードのターゲットです。 このテストで使用された RANREAD ツールの詳細は、こちらを参照してください。

    テスト結果

    わずか 10 個のジョブから開始した最初の時点では、ストレージのスループットは 100 マイクロ秒(µs)と非常に低い遅延で 1 秒間に 10 万個の 8 KB データベースブロックを読み取ることができました。 ジョブの数が増えても、サーバーが実際に CPU の能力を使い果たしてストレージをさらに激しく駆動させるまでは遅延はずっと低いままでした。 観察された中で最も大きな遅延は 300µs に過ぎず、1秒間に 850 K 以上の 8KB データベースブロックの読み取りを維持していました。  

    図 1 は 2 台の Samsung NVMe ディスク装置のみを使用してテストした構成で、パフォーマンスが予測可能でスループットが維持されたことを示しています。 最大値でも遅延は非常に低く、実際には NVMe ディスク装置のスループットが最大化する前にテストサーバーが実際に CPU を使い果たしたことが分かります。

    図 1: 予測可能で非常に低い遅延と非常に高いスループットを維持

    まとめ

    Samsung PM1725a NVMe ディスク装置は非常に低い遅延と高スループット能力を示し、非常に高性能なトランザクションシステムをサポートしています。 そのため、ストレージの待機時間とスループットが必要なインジェッション・ワークロードに最適です。 これらの Samsung NVMe ディスク装置はこのような素晴らしいパフォーマンス特性を備えながら非常に魅力的な価格で提供されており、InterSystems のデータベースミラーリングと組み合わせると同じレベルのアプリケーションの可用性を実現できます。

    0
    0 301
    記事 Toshihiko Minamoto · 11月 5, 2020 6m read

    データベースシステムには非常に特殊なバックアップ要件があり、企業のデプロイメントでは、事前の検討と計画が必要です。 データベースシステムの場合、バックアップソリューションの運用上の目標は、アプリケーションが正常にシャットダウンされた時と同じ状態で、データのコピーを作成することにあります。 アプリケーションの整合性バックアップはこれらの要件を満たし、Cachéは、このレベルのバックアップ整合性を達成するために、外部ソリューションとの統合を容易にする一連のAPIを提供しています。

    これらのAPIは**ExternalFreezeExternalThaw**です。 _ExternalFreeze_は一時的にディスクへの書き込みを停止し、この期間にCaché はメモリ内の変更をコミットします。 この期間にバックアップ操作を完了させ、_ExternalThaw_の呼び出しを行う必要があります。 この呼び出しによって、書き込みのデーモンがグローバルバッファプール(データべースキャッシュ)で更新されたキャッシュをディスクに書き込むと、通常のCachéデータベースの書き込みデーモン操作が再開します。 このプロセスはCachéのユーザープロセスに対して透過的に行われます。 具体的なAPIクラスメソッドは次のとおりです。

    ##Class(Backup.General).ExternalFreeze()

    ##Class(Backup.General).ExternalThaw()

    これらのAPIは、スナップショット操作のプリスクリプトとポストスクリプトを実行するAzure Backupの新機能と合わせて、Azure上のCachéのデプロイメントに対する包括的なバックアップソリューションを提供しています。 Azure Backupのプリスクリプトとポストスクリプト機能は現在、Linux VMでのみ利用できます。

    前提条件

    Azure Backupを使用してVMをバックアップする前に、おおまかに3つのステップを実行する必要があります。

    1. Recovery Servicesコンテナーを作成する
    2. VM Agentの最新バージョンをインストールする
    3. VMからAzureサービスへのネットワークアクセスを確認する

    Recovery Servicesコンテナーは、バックアップの目標、ポリシー、および保護する項目を管理します。 Recovery Servicesコンテナーの作成は、Azure PortalまたはPowerShellを使ったスクリプトによって行います。 Azure BackupにはVMで実行する拡張機能が必要であり、Linux VMエージェントによって管理されています。また、最新バージョンのエージェントも必要です。 拡張機能はAzure StorageとRecovery Servicesコンテナーの外向きのHTTPSエンドポイントと対話します。 VMからこれらのサービスへのセキュアアクセスは、Azure Network Security Groupのプロキシとネットワークルールを使用して構成できます。

    上記のステップに関する詳細は、「Prepare your environment to back up Resource Manager-deployed virtual machines」を参照してください。

    プリスクリプトとポストスクリプトの構成

    バックアップ操作の前と後にスクリプトを呼び出す機能は、Azure Backup Extension(Microsoft.Azure.RecoveryServices.VMSnapshotLinux)の最新バージョンに含まれています。 この拡張機能のインストール方法については、機能に関する詳細なドキュメントを確認してください。

    デフォルトでは、拡張機能には、Linux VMの次の場所に、サンプルのプリスクリプトとポストスクリプトが含まれます。

    /var/lib/waagent/Microsoft.Azure.RecoveryServices.VMSnapshotLinux-1.0.9110.0/main/tempPlugin

    そして、スクリプトをそれぞれ次の場所にコピーする必要があります。

    /etc/azure/prescript.sh
    /etc/azure/postScript.sh

    スクリプトテンプレートは、GitHubからもダウンロード可能です。

    Cachéでは、ExternalFreeze APIを呼び出すprescript.shスクリプトを実装でき、postScript.shにはExternalThawを実行するコードが含まれている必要があります。

    以下は、Cachéのprescript.shの実装例です。

    #!/bin/bash
    # variables used for returning the status of the script
    success=0
    error=1
    warning=2
    status=$success
    log_path="/etc/preScript.log"#path of log file
    printf  "Logs:\n" > $log_path# TODO: Replace <CACHE INSTANCE> with the name of the running instance
    csession <CACHE INSTANCE> -U%SYS "##Class(Backup.General).ExternalFreeze()" >> $log_path
    status=$?if [ $status -eq 5 ]; then
    echo "SYSTEM IS FROZEN"
    printf  "SYSTEM IS FROZEN\n" >> $log_pathelif [ $status -eq 3 ]; then
    echo "SYSTEM FREEZE FAILED"
    printf  "SYSTEM FREEZE FAILED\n" >> $log_path
    status=$error
    csession <CACHE INSTANCE> -U%SYS "##Class(Backup.General).ExternalThaw()"
    fi
    
    exit $status

    以下は、CachéのpostScript.shの実装例です。

    #!/bin/bash
    # variables used for returning the status of the script
    success=0
    error=1
    warning=2
    status=$success
    log_path="/etc/postScript.log"#path of log file
    printf  "Logs:\n" > $log_path# TODO: Replace <CACHE INSTANCE> with the name of the running instance
    csession <CACHE INSTANCE> -U%SYS "##class(Backup.General).ExternalThaw()"
    status=$?
    if [ $status req 5]; then
    echo "SYSTEM IS UNFROZEN"
    printf  "SYSTEM IS UNFROZEN\n" >> $log_pathelif [ $status -eq 3 ]; then
    echo "SYSTEM UNFREEZE FAILED"
    printf  "SYSTEM UNFREEZE FAILED\n" >> $log_path
    status=$error
    fi
    exit $status

    バックアップの実行

    Azureポータルで、Recoveryサービスに移動して、最初のバックアップをトリガできます。 初回バックアップまたは後続のバックアップに関係なく、VMスナップショットの時間は数秒であることに注意してください。 最初のバックアップのデータ転送には時間がかかりますが、データ転送は、データベースのフリーズを解除するポストスクリプトの実行後に開始されるため、プリスクリプトとポストスクリプト間の時間に影響を与えることはありません。

    データ保護操作が有効であることを確認するには、定期的に非本番環境にバックアップを復元してデータベースの整合性チェックを実行することを強くお勧めします。

    バックアップのトリガ方法、およびバックアップスケジュールなどの関連トピックについては、「Back up Azure virtual machines to a Recovery Services vault」を参照してください。  

    0
    0 355
    記事 Toshihiko Minamoto · 9月 23, 2020 45m read

    Amazon Web Services(AWS)クラウドは、コンピューティングリソース、ストレージオプション、ネットワークなどのインフラストラクチャサービスの幅広いセットをユーティリティとしてオンデマンドかつ秒単位の従量課金制で提供しています。 新しいサービスは、先行投資なしで迅速にプロビジョニングできます。 これにより、大企業、新興企業、中小企業、公営企業の顧客は、変化するビジネス要件に迅速に対応するために必要なビルディングブロックにアクセスすることができます。

    更新: 2019年10月15日

    以下の概要と詳細は Amazon が提供しているものであり、こちらから参照できます。

    概要

    AWS グローバルインフラストラクチャ

    AWS Cloud のインフラストラクチャは、リージョンとアベイラビリティーゾーン(AZ)を中心に構築されています。 リージョンは、世界中にある複数の AZ が存在する物理的な場所です。 それぞれの AZ は、別々の施設にある冗長電源、ネットワーク、接続機能を備えた 1 つ以上の異なるデータセンターで構成されています。 これらの AZ は、単一のデータセンターを使用する場合よりも高い可用性、耐障害性、拡張性を持つ本番アプリケーションとデータベースを運用する機能を提供します。

    AWS グローバルインフラストラクチャの詳細は、こちらを参照してください。

    AWS のセキュリティとコンプライアンス

    クラウドのセキュリティはオンプレミスのデータセンターのセキュリティとほぼ同じですが、設備とハードウェアのメンテナンスにコストがかからないという点が異なります。 クラウドでは、物理サーバーやストレージデバイスを管理する必要はありません。 代わりに、ソフトウェアベースのセキュリティツールを使用して、クラウドリソースに出入りする情報のフローを監視および保護します。

    AWS クラウドは、責任共有モデルを提供しています。 AWS はクラウドのセキュリティを管理しますが、クラウドのセキュリティはユーザーが責任を負います。 つまり、実際のデータセンターと同じように、自身が所有するコンテンツ、プラットフォーム、アプリケーション、システム、およびネットワークを保護するために導入することを選択したセキュリティを制御し続けることができます。

    AWS クラウドのセキュリティの詳細は、こちらを参照してください。

    AWS が顧客に提供する IT インフラストラクチャは、最良のセキュリティプラクティスとさまざまな IT セキュリティ標準に合わせて設計および管理されています。AWS が準拠している保証プログラムの完全なリストは、こちらを参照してください。

    AWS クラウドプラットフォーム

    AWS は、ビジネスや組織のニーズに合わせて組み合わせて使用できる 多くのクラウドサービスで構成されています。 次のサブセクションでは、InterSystems IRIS のデプロイで一般的に使用される主な AWS サービスをカテゴリ別に紹介します。 他にも多くのサービスがあり、特定のアプリケーションに役立つ可能性があります。 必要に応じて必ず調査してください。

    サービスにアクセスするには、AWS マネジメントコンソール、コマンドラインインターフェース、またはソフトウェア開発キット(SDK)を使用できます。

    <th style="padding: 5px; ; text-align: center;">
      詳細
    </th>
    
    <td style="padding: 5px;">
      AWS マネジメントコンソールの詳細は、<a href="https://aws.amazon.com/jp/console/">こちら</a>を参照してください。
    </td>
    
    <td style="padding: 5px; ;">
      AWS コマンドラインインターフェース(CLI)の詳細は、<a href="https://aws.amazon.com/jp/cli/">こちら</a>を参照してください。
    </td>
    
    <td style="padding: 5px; ;">
      AWS ソフトウェア開発キット(SDK)の詳細は、<a href="https://aws.amazon.com/jp/tools/">こちら</a>を参照してください。
    </td>
    
    <td style="padding: 5px; ;">
      次のようなさまざまなオプションを利用できます。<ul><li>AmazonElastic Cloud Computing(EC2)の詳細は<a href="https://aws.amazon.com/jp/ec2/">こちら</a>を参照してください。</li><li>Amazon EC2 Container Service(ECS)の詳細は<a href="https://aws.amazon.com/jp/ecs/">こちら</a>を参照してください。</li><li>Amazon EC2 Container Registry(ECR)の詳細は<a href="https://aws.amazon.com/jp/ecr/">こちら</a>を参照してください。</li><li>Amazon Auto Scaling の詳細は<a href="https://aws.amazon.com/jp/autoscaling/">こちら</a>を参照してください。</li></ul>
    </td>
    
    <td style="padding: 5px; ;">
      次のようなさまざまなオプションを利用できます。<ul><li>Amazon Elastic Block Store(EBS)の詳細は<a href="https://aws.amazon.com/jp/ebs">こちら</a>を参照してください。</li><li>Amazon Simple Storage Service(S3)の詳細は<a href="https://aws.amazon.com/jp/s3/">こちら</a>を参照してください。</li><li>Amazon Elastic File System(EFS)の詳細は<a href="https://aws.amazon.com/jp/efs/">こちら</a>を参照してください。</li></ul>
    </td>
    
    <td style="padding: 5px; ;">
      次のようなさまざまなオプションを利用できます。 <ul><li>Amazon Virtual Private Cloud(VPC)の詳細は<a href="https://aws.amazon.com/jp/vpc/">こちら</a>を参照してください。</li><li>Amazon Elastic IP アドレスの詳細は<a href="https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html">こちら</a>を参照してください。Amazon Elastic Network Interface の詳細は<a href="https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-eni.html">こちら</a>を参照してください。</li><li>Amazon の Linux 向け拡張ネットワーキングの詳細は<a href="https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking.html">こちら</a>を参照してください。</li><li>Amazon Elastic Load Balancing(ELB)の詳細は<a href="https://aws.amazon.com/jp/elasticloadbalancing/">こちら</a>を参照してください。</li><li>Amazon Route 53 の詳細は<a href="https://aws.amazon.com/jp/route53/">こちら</a>を参照してください。</li></ul>
    </td>
    
    AWS クラウドプラットフォーム
    コンポーネント
    AWS マネジメントコンソール
    AWS コマンドラインインターフェース
    AWS ソフトウェア開発キット(SDK)
    AWS コンピューティング
    AWS ストレージ
    AWS ネットワーキング

     

    InterSystems IRIS サンプルアーキテクチャ

    この記事の一部では、アプリケーション固有のデプロイの出発点として、AWS に InterSystems IRIS をデプロイする場合のサンプルを提供しています。デプロイの可能性には多数ありますが、これらのサンプルをガイドラインとしてご利用ください。このリファレンスアーキテクチャでは、最も小規模なデプロイから非常にスケーラブルなワークロードまで、コンピューティングとデータの両方の要件に対応する非常に堅牢なデプロイオプションを紹介しています。 

    このドキュメントでは、高可用性と災害復旧に関するオプションと共にその他の推奨されるシステム運用について説明しています。これらの運用は、組織の標準的なプラクティスとセキュリティポリシーに対応できるように変更してください。

    InterSystems では、ユーザー固有のアプリケーションについて、AWS ベースの InterSystems IRIS デプロイに関するご相談またはご質問をお受けしています。


    サンプルリファレンスアーキテクチャ

    以下のサンプルアーキテクチャでは、キャパシティと機能を高めるさまざまな構成を提供します。これらの小規模な開発、本番、大規模な本番、およびシャードクラスタを使用した本番の例を検討してください。開発作業用の小規模な構成から、ゾーン全体に適した高可用性とマルチリージョン災害復旧機能を備えた非常にスケーラブルなソリューションへと構成が成長していく様子を確認できます。さらに、SQL クエリの超並列処理によるハイブリッドワークロードに対する InterSystems IRIS データプラットフォームの新しいシャーディング機能を使用するサンプルアーキテクチャも用意されています。


    小規模な開発の構成

    この例では、最小構成を使用して、開発者数最大10 人と 100 GB のデータに対応できる小規模な開発環境を示します。仮想マシンのインスタンスの種類を変更し、EBS ボリュームのストレージを適切に増加するだけで、より多くの開発者と保存データを簡単にサポートできるようになります。

    これは開発作業をサポートし、InterSystems IRIS の機能や、必要に応じて Docker コンテナの構築とオーケストレーションに慣れる上で十分な構成です。小規模な構成では通常、データベースミラーリングによる高可用性を使用することはありませんが、高可用性が必要な場合にはいつでも追加することができます。 

    小規模な構成のサンプル図

    以下の図 2.1.1-a のサンプル図は、図 2.1.1-b のリソーステーブルを示します。含まれているゲートウェイは単なる例であり、組織の標準的なネットワーク実践に合わせて調整できます。 

    図-2.1.1-a: サンプルの小規模開発アーキテクチャ

    以下の AWS VPC 内のリソースは、最低限の小規模構成としてプロビジョニングされています。AWS リソースは必要に応じて追加または削除することができます。 

    小規模構成の AWS リソース

    以下のテーブルは、小規模構成 AWS リソースのサンプルを示しています。

    図 2.1.1-b: 小規模構成 AWS リソースのサンプルテーブル

    VPC への不要なアクセスを防止するには、適切なネットワークセキュリティとファイアウォールのルールを検討する必要があります。Amazon は、次のようなネットワークセキュリティのベストプラクティスを提供しています。

    https://docs.aws.amazon.com/vpc/index.html#lang/en_us

    https://docs.aws.amazon.com/quickstart/latest/vpc/architecture.html#best-practices

    注意: VM インスタンスが AWS サービスにアクセスするには、パブリック IP アドレスが必要です。 この実践では懸念を生じてしまう可能性がありますが、AWS は、ファイアウォールのルールを使用して、これらの VM インスタンスへの受信トラフィックを制限することを推奨しています。

    セキュリティポリシーで VM インスタンスが完全に内部化されていることが要求されている場合、ネットワークと対応するルートに手動で NAT プロキシを設定し、内部インスタンスがインターネットにアクセスできるようにする必要があります。 SSH を使用して、完全に内部化された VM インスタンスに直接接続することはできないことに注意しておくことが重要です。 そのような内部マシンに接続するには、外部 IP アドレスを持つ踏み台インスタンスをセットアップしてから、それを通過するトンネルをセットアップする必要があります。 外部に接する VPC へのエントリポイントを提供するため、踏み台ホストをプロビジョニングすることができます。 

    踏み台ホストの使用方法に関する詳細は、こちらを参照してください。

    https://aws.amazon.com/blogs/security/controlling-network-access-to-ec2-instances-using-a-bastion-server/

    https://docs.aws.amazon.com/quickstart/latest/linux-bastion/architecture.html


    本番の構成

    この例では、InterSystems IRIS データベースミラーリング機能を組み込んで高可用性と災害復旧をサポートする本番構成の例として、より大規模な構成を示しています。

    この構成には、自動フェイルオーバーを行うために region-1 内で 2 つのアベイラビリティーゾーンに分割された InterSystems IRIS データベースサーバーの同期ミラーペアと、AWS リージョン全体がオフラインになるという稀なイベントで災害復旧を行うことを目的とした region-2 の 3 番目の DR 非同期ミラーメンバーが含まれます。

    マルチ VPC 接続を含む複数リージョンの詳細は、こちらを参照してください。

    InterSystems Arbiter と ICM サーバーは、レジリエンシーを高めるために、別の 3 番目のゾーンにデプロイされています。サンプルアーキテクチャには、Web 対応アプリケーションをサポートするためのオプションとして、オプションの負荷分散された Web サーバーのセットも含まれています。InterSystems Gateway を備えたこれらの Web サーバーは、必要に応じて個別に拡張することができます。

    本番構成のサンプル図

    図 2.2.1-a のサンプル図は、図 2.2.1-b のリソーステーブルを示しています。ここに記載されているゲートウェイは単なる例であり、組織の標準的なネットワークプラクティスに合わせて調整できます。 

    図 2.2.1-a: 高可用性と災害復旧を備えたサンプルの本番アーキテクチャ

    以下の AWS VPC 内のリソースは、Web アプリケーションの本番ワークロードをサポートするための最小推奨要件です。AWS リソースは必要に応じて追加または削除することができます。

    本番構成の AWS リソース

    以下の表に、本番構成の AWS リソースのサンプルを示しています。

    図 2.2.1-b: 本番構成の AWS リソースの表(続き)


    大規模な本番の構成

    この例では、InterSystems IRIS の機能を拡張することで、InterSystems の Enterprise Cache Protocol(ECP)を使用したアプリケーションサーバーを導入してユーザーの大規模な水平スケーリングも提供できる、大規模な構成を示しています。ECP クライアントはデータベースインスタンスのフェイルオーバーが発生した場合でもセッション情報を保持するため、この例ではさらに高いレベルの可用性が実現されています。複数の AWS アベイラビリティーゾーンが、複数のリージョンにデプロイされた ECP ベースのアプリケーションサーバーとデータベースミラーメンバーの両方で使用されています。この構成では、毎秒数千万件のデータベースアクセスと数テラバイトのデータをサポートできます。 

    本番構成のサンプル図

    図 2.3.1-a のサンプル図は、図 2.3.1-b のリソースの表を示しています。ここに記載されているゲートウェイは単なる例であり、組織の標準的なネットワークプラクティスに合わせて調整できます。 

    この構成には、フェイルオーバーミラーペア、4 つ以上の ECP クライアント(アプリケーションサーバー)、およびアプリケーションサーバーにつき 1 つ以上の Web サーバーが含まれます。 フェイルオーバーデータベースミラーのペアは、同一のリージョン内で 2 つの異なる AWS アベイラビリティーゾーンで分割されており、3 番目のゾーンに個別にデプロイされた InterSystems Arbiter と ICM サーバーでフォールトドメインの保護を確立し、レジリエンシーを高めています。 

    災害復旧は、前の例と同様に、2 番目の AWS リージョンとアベイラビリティーゾーンに拡張されています。複数の DR リージョンは、必要に応じて複数の DR 非同期ミラーメンバーターゲットと共に使用できます。

    図 2.3.1-a: ECP アプリケーションサーバーを使用したサンプルの大規模本番アーキテクチャ

    以下の AWS VPC プロジェクト内のリソースは、シャードクラスタをサポートするための最小推奨要件です。AWS リソースは必要に応じて追加または削除することができます。 

    大規模な本番構成の AWS リソース

    以下の表に、大規模な本番環境構成のサンプル AWS リソースを示しています。

    図 2.3.1-b: ECP アプリケーションサーバーを使用した大規模構成の AWS リソースの表

    図 2.3.1-b: ECP アプリケーションサーバーを使用した大規模構成の AWS リソースの表(続き)

    図 2.3.1-b: ECP アプリケーションサーバーを使用した大規模構成の AWS リソースの表(続き)


    InterSystems IRIS シャードクラスタを使用した本番構成

    この例では、SQL を使用したハイブリッドワークロード向けに水平スケーリングされた構成を示しています。この構成には InterSystems IRIS の新しいシャードクラスタ機能が含まれており、複数のシステムをまたぐ SQL クエリとテーブルの大規模な水平スケーリングを提供しています。InterSystems IRIS のシャードクラスタとその機能の詳細については、この記事の第9章で説明します。

    シャードクラスタを使用した本番構成のサンプル図

    図 2.4.1-a のサンプル図は、図 2.4.1-b のリソーステーブルを示します。ここに記載されているゲートウェイは単なる例であり、組織の標準的なネットワークプラクティスに合わせて調整できます。 

    この構成には、4 つのミラーペアがデータノードとして含まれています。それぞれのフェイルオーバーデータベースミラーのペアは、同一のリージョン内で 2 つの異なる AWS アベイラビリティーゾーンで分割されており、3 番目のゾーンに個別にデプロイされた InterSystems Arbiter と ICM サーバーでフォールトドメインの保護を確立し、レジリエンシーを高めています。

    この構成では、クラスタ内のあらゆるデータノードからすべてのデータベースアクセスメソッドを使用することができます。大規模な SQL テーブルのデータは、すべてのノード間で物理的に分割されているため、クエリ処理とデータ量の両方を大規模に並列化できます。これらすべての機能を組み合わせることで、大規模な分析 SQL クエリの実行と新しいデータの同時取り込みなどのあらゆる複雑なハイブリッドワークロードを単一の InterSystems IRIS データプラットフォーム内でサポートできるようになります。

    図 2.4.1-a:高可用性を備えたシャードクラスタを使用した本番環境構成のサンプル

    上の図と下のテーブルの「リソースタイプ」列にある「EC2」とは、このドキュメントのセクション 3.1 で説明されている AWS 仮想サーバーインスタンスを表す AWS の用語です。 第 9 章で説明されているクラスタアーキテクチャでの「計算ノード」の使用を表したり暗示するものではありません。

    以下の AWS VPC 内のリソースは、シャードクラスタをサポートするための最小推奨要件です。AWS リソースは必要に応じて追加または削除することができます。 

    シャードクラスタを使用した本番構成の AWS リソース

    以下のテーブルは、シャードクラスタを使用した本番構成の AWS リソースのサンプルを示しています。

    図 2.4.1-b: シャードクラスタを使用したサンプル本番環境構成の AWS リソースの表


    クラウドの基礎概念

    Amazon Web Services(AWS)は、IaaS(サービスとしてのインフラストラクチャ)向けの機能性豊かなクラウド環境を提供しています。新しい InterSystems IRIS データプラットフォームによるコンテナベースの開発運用など、InterSystems の全製品に完全に対応していますが、 あらゆるプラットフォームやデプロイモデルと同様に、パフォーマンス、可用性、システム運用、高可用性、災害復旧、セキュリティ制御、およびその他の管理手順などの環境に関わるすべての側面が正しく機能するように注意を払う必要があります。この記事では、Compute、Storage、および Networking という、すべてのクラウドデプロイの 3 つの主要コンポーネントについて説明します。

    Compute Engine(仮想マシン)

    AWS EC2 内には、仮想 CPU とメモリの仕様と関連するストレージオプションを数多く備えた Compute Engine リソースで利用できるオプションがいくつかあります。AWS EC2 ではあるマシンタイプの vCPU 数を参照する場合、1 つの vCPU はハイパーバイザー層にある物理ホスト上の 1 つのハイパースレッドに等しいことに注意する必要があります。 

    このドキュメントでは m5* および r5* EC2 インスタンスタイプが使用されています。これらは、ほとんどの AWS デプロイリージョンで最も広く利用できるインスタンスです。ただし、大量のデータをメモリにキャッシュする非常に大型の作業データセットにおいては、非常に大きなメモリを備えた x1* のような他の特殊なインスタンスタイプか、NVMe ローカルインスタンスストレージを備えた i3* を使用することが望ましいです。 AWS のサービスレベル契約(SLA)に関する詳細については、こちらを参照してください。

     

    ディスクストレージ

    InterSystems 製品に最も直接関係しているストレージタイプは永続ディスクタイプですが、データ可用性の制限を理解して対応できる場合はローカルストレージを使用して高度なパフォーマンスを実現することができます。 S3(バケット)や Elastic File Store(EFS)といったその他のオプションもいくつかありますが、それらは InterSystems IRIS データプラットフォームの運用をサポートするというよりも、個別のアプリケーションの要件に特化したオプションです。 

    ほかのほとんどのクラウドプロバイダと同様に、AWS でも各 Compute Engine に関連付けられる永続ストレージの容量に制限があります。これらの制限には、各ディスクの最大サイズ、各 Compute Engine に接続される永続ディスクの数量、永続ディスク当たりの IOPS 量と各 Compute Engine インスタンスの総合的な IOPS 限界などがあります。さらに、ディスク容量 1 GB あたりの IOPS 制限もあるため、希望する IOPS レートを得るには、より多くのディスク容量をプロビジョニングする必要があります。 

    これらの制限は時間の経過とともに変化する可能性があるため、適宜 AWS に確認する必要があります。

    ディスクボリュームの永続ストレージタイプには、EBS gp2(SSD)、EBS st1(HDD)、EBS io1(SSD)の 3 種類があります。予測可能な低レイテンシ IOPS とより高いスループットを必要とする本番ワークロードには、標準の EBS gp2 ディスクがより適しています。標準永続ディスクはより経済的なオプションで、非本番環境の開発やテスト、またはアーカイブタイプのワークロードに適しています。 

    さまざまなディスクタイプと制限の詳細については、こちらを参照してください。

    VPC ネットワーキング

    InterSystems IRIS データプラットフォームの多様なコンポーネントのサポートと共に、適切なネットワークセキュリティコントロール、各種ゲートウェイ、ルーティング、内部 IP アドレス割り当て、ネットワークインターフェース分離、およびアクセス制御を提供するには、仮想プライベートクラウド(VPC)ネットワークの使用が強く推奨されます。VPC の例は、このドキュメント内の例で詳しく説明します。

    VPC ネットワーキングとファイアウォールの詳細については、こちらを参照してください。


    仮想プライベートクラウド(VPC)の概要

    AWS VPC の詳細は、こちらを参照してください。

    ほとんどの大規模なクラウドデプロイでは、複数の VPC をプロビジョニングしてさまざまなゲートウェイタイプをアプリケーション中心の VPC から分離し、インバウンドとアウトバウンドの通信に VPC ピアリングを活用しています。 勤務先で使用されているサブネットと組織のファイアウォールルールの詳細について、ネットワーク管理者に相談することを強くお勧めします。VPC ピアリングについては、このドキュメントでは説明していません。

    このドキュメントに含まれる例では、3 つのサブネットを持つ単一の VPC を使用してさまざまなコンポーネントのネットワークを分離し、予測可能なレイテンシと帯域幅、およびさまざまな InterSystems IRIS コンポーネントのセキュリティ分離を実現しています。 

    ネットワークゲートウェイとサブネットの定義

    このドキュメントでは、インターネットとセキュア VPN 接続をサポートするために、2 つのゲートウェイを使用した例を示しています。アプリケーションに適度なセキュリティを提供するために、各イングレスアクセスには、適切なファイアウォールとルーティングのルールが必要です。VPC ルートテーブルの使用方法に関する詳細については、こちらを参照してください。

    InterSystems IRIS データプラットフォームで使用するための専用のアーキテクチャ例では、3 つのサブネットが使用されています。これらの個別のネットワークサブネットとネットワークインターフェースを使用することで、セキュリティコントロールと帯域幅の保護に柔軟性を持たせ、上記 3 つの主要コンポーネントをそれぞれ監視することができます。複数のネットワークインターフェースを備えた仮想マシンインスタンスの作成に関する詳細は、こちらを参照してください。

    これらの例には、次のサブネットが含まれます。

    1. インバウンド接続ユーザーとクエリ用のユーザースペースネットワーク
    2. シャードノード間通信用のシャードネットワーク
    3. 各データノードの同期レプリケーションと自動フェイルオーバーを使用して高可用性を実現するミラーリングネットワーク 
    注意: フェイルオーバー同期データベースミラーリングは、単一の AWS リージョン内で相互接続のレイテンシが低い複数のゾーンでのみ推奨されます。 リージョン間のレイテンシは非常に高いことが通例であるため、特に更新が頻繁に行われるデプロイメントにおいては、良好なユーザーエクスペリエンスを提供することができません。

    内部ロードバランサー

    ほとんどの IaaS クラウドプロバイダーには、自動データベースフェイルオーバー設計で一般的に使用される仮想 IP(VIP)アドレスに対応できる能力が欠けています。 この問題を解決するため、ミラー対応と自動化を行う VIP 機能に依存しないよう、InterSystems IRIS 内では最も一般的に使用されるいくつかの接続方法(特に ECP クライアントや Web ゲートウェイ)が強化されています。 

    xDBC、TCP/IP ソケットによる直接接続などの接続方法や、その他の直接接続プロトコルについては VIP 同様のアドレスを使用する必要があります。このようなインバウンドプロトコルをサポートするために、InterSystems のデータベースミラーリング技術では、mirror_status.cxw というヘルスチェックステータスページを使って、それらの接続方法の自動フェイルオーバーを AWS 内で提供できるようになっています。VIP のようなロードバランサーの機能性を達成するためにロードバランサーと対話し、アクティブなプライマリメンバーにのみトラフィックをダイレクトすることで、完全かつ堅牢な高可用性設計を AWS 内で作り上げています。 

    AWS Elastic Load Balancer(ELB)の詳細は、こちらを参照してください。

    図 4.2-a: 仮想IPアドレスなしの自動フェイルオーバー

    ロードバランサーを使用して VIP 同様の機能を提供する方法の詳細については、こちらを参照してください。 

    VPC トポロジの例

    以下の図 4.3-a では、すべてのコンポーネントを組み合わせて、次の特性を持つ VPC のレイアウトを示しています。

    • 高可用性を得るために、リージョン内の複数のゾーンを活用する
    • 災害復旧を可能にするために、2 つのリージョンを提供する
    • ネットワーク分離を実施するために、複数のサブネットを使用する
    • VPC ピアリング、インターネット、および VPN 接続用の個別のゲートウェイを含める
    • ミラーメンバーが IP フェイルオーバーを行えるように、クラウドロードバランサーを使用する

    AWS では、各サブネットは完全に 1 つのアベイラビリティーゾーン内に存在する必要があり、ゾーンをまたがることはできません。 したがって、以下の例では、ネットワークセキュリティまたはルーティングルールを適切に定義する必要があります。 AWS の VPC とサブネットの詳細は、こちらを参照してください。

    図 4.3-a: VPC ネットワークトポロジの例


    永続ストレージの概要

    概要で説明したように、AWS Elastic Block Store(EBS)ボリューム、特に EBS gp2 ボリュームタイプの使用をお勧めします。読み取りと書き込みの IOPS レートがより高く、トランザクションと分析用のデータベースワークロードに必要なレイテンシが低いため、EBS gp2 ボリュームが推奨されています。特定の状況で ローカル SSD を使用できることもありますが、ローカル SSD のパフォーマンス向上には、可用性、耐久性、および柔軟性のトレードオフが伴うことに注意してください。 

    ローカル SSD データ永続性の詳細については、こちらを参照してください。ローカル SSD データが保持される場合とされない場合を理解することができます。

     

    LVM PE ストライピング

    ほかのクラウドプロバイダと同様に、AWS においても、IOPS、容量、および仮想マシンインスタンス当たりのデバイス数に関してストレージに対する制限を課しています。AWS のドキュメントで現在の制限を確認してください。こちらから参照できます。

    このような制限があるため、データベースインスタンスの単一ディスクデバイスの IOPS を超えて IOPS を最大化するには、LVM のストライピングが必要となります。提供されている仮想マシンインスタンスの例では、以下のディスクレイアウトが推奨されています。SSD 永続ディスクに関連するパフォーマンス制限については、こちらを参照してください。

    注意: 現在は Linux EC2 インスタンスごとに最大 40 個の EBS ボリュームがありますが、AWS のリソース能力は頻繁に変更されますので、最新の制限については AWS のドキュメントを参照するようにしてください。

    図 5.1-a: LVM ボリュームグループ割り当ての例

    LVM ストライピングのメリットによって、ランダムな IO ワークロードをより多くのデバイスに分散し、ディスクキューを継承することができます。以下は、データベースボリュームグループに対して、Linux で LVM ストライピングを使用する方法の例を示しています。この例では、物理エクステント(PE)サイズが 4 MB の LVM PE ストライプで 4 つのディスクを使用しています。または、必要に応じてより大きな PE サイズを使用することもできます。

    • 手順 1: 必要に応じて標準または SSD 永続ディスクを作成します。
    • 手順 2: “lsblk -do NAME,SCHED” を使用し、各ディスクデバイスの IO スケジューラが NOOP であることを確認します。
    • 手順 3: “lsblk -do KNAME,TYPE,SIZE,MODEL” を使用し、ディスクデバイスを識別します。
    • 手順 4: 新しいディスクデバイスでボリュームグループを作成します。
      • vgcreate s 4M   
      • <span style="color:#c0392b;"><i>vgcreate -s 4M vg_iris_db /dev/sd[h-k]</i></span>
    • 手順 4: 論理ボリュームを作成します。
      • lvcreate n -L -i -I 4MB
      • : <i>lvcreate -n lv_irisdb01 -L 1000G -i 4 -I 4M vg_iris_db</i>
    • 手順 5: ファイルシステムを作成します。
      • mkfs.xfs K
      • <i>mkfs.xfs -K /dev/vg_iris_db/lv_irisdb01</i>
    • 手順 6: ファイルシステムをマウントします。
      • 次のマウントエントリで /etc/fstab を編集します。
        • /dev/mapper/vg_iris_db-lv_irisdb01    /vol-iris/db    xfs defaults 0 0
        • mount /vol-iris/db

    上記の表を使用すると、各 InterSystems IRIS サーバーに、SYS 用ディスク 2 個、DB 用ディスク 4 個、プライマリジャーナル用ディスク 2 個、および代替ジャーナル用ディスク 2 個を備えた以下の構成が作られます。

    図 5.1-b: InterSystems IRIS の LVM 構成

    LVM では運用を中断することなく、必要に応じてデバイスと論理ボリュームを拡張できます。LVM ボリュームの継続的な管理と拡張のベストプラクティスについては、Linux のドキュメントを参照してください。

    注意: データベースと書き込みイメージジャーナルファイルの両方で非同期 IO を有効にすることを強くお勧めします。Linux での有効化に関する詳細については、コミュニティの記事を参照してください。

    プロビジョニング

    InterSystems IRIS には InterSystems Cloud Manager(ICM)という新しいツールがあります。ICM は多くのタスクを実行し、InterSystems IRIS データプラットフォームをプロビジョニングするためのオプションを多数提供しています。 ICM は Docker イメージとして提供され、堅牢な AWS クラウドベースのソリューションをプロビジョニングするために必要なすべての機能を含んでいます。

    ICM は現在、以下のプラットフォームでのプロビジョニングをサポートしています。

    • GovCloud を含む Amazon Web Services(AWS / GovCloud)
    • Google Cloud Platform(GCP)
    • Government を含む Microsoft Azure Resource Manager(ARM / MAG)
    • VMware vSphere(ESXi)

    ICM と Docker は、デスクトップ/ノートパソコンのワークステーションから実行することも、小規模な専用の集中型「プロビジョニング」サーバーと集中型リポジトリを持つことも可能です。 

    アプリケーションのライフサイクルにおける ICM の役割は、 定義 -> プロビジョン -> デプロイ -> 管理です。

    ICM のインストールと Docker との使用に関する詳細は、こちらを参照してください。

    注意: クラウドのデプロイでは、ICM を使用する必要はありません。tar 形式の配布物を使用する従来のインストールとデプロイの方法は完全にサポートされており、利用できます。ただし、クラウドのデプロイでプロビジョニングと管理を容易にするため、ICM の使用をお勧めします。

    コンテナの監視

    ICM には、コンテナベースの手プロ委に適した 2 つの基本的な監視機能(Rancher および Weave Scope)が含まれています。 どちらもデフォルトではデプロイされないため、defaults ファイルの Monitor フィールドを使用して指定する必要があります。ICM を使用した監視、オーケストレーション、およびスケジューリングに関する詳細は、こちらを参照してください。

    Rancher の概要とドキュメントは、こちらを参照してください。

    Weave Scope の概要とドキュメントは、こちらを参照してください。


    高可用性

    InterSystems のデータベースミラーリングは、あらゆるクラウド環境で最も高度な可用性を提供します。AWS は単一の EC2 インスタンスに対する可用性を保証していないため、データベースをミラーリングするには、負荷分散や自動スケールグループと組み合わせることもできるデータベース層が必要です。 

    前の方のセクションでは、クラウドロードバランサーがデータベースミラーリングを使用して仮想 IP(VIP のような)機能に自動 IP アドレスフェイルオーバーを提供する方法について説明しました。クラウドロードバランサーは、前の「内部ロードバランサー」セクションで述べた mirror_status.cxw というヘルスチェックステータスページを使用します。データベースミラーリングには、自動フェイルオーバー付きの同期ミラーリングと非同期ミラーリングとうい 2 つのモードがありますが、この例では、同期フェイルオーバーミラーリングについて説明しています。ミラーリングの詳細については、こちらを参照してください。

    最も基本的なミラーリング構成は、アービター制御構成で一組のフェイルオーバーミラーメンバーを使用する構成です。アービターは同一リージョン内の 3 番目のゾーンに配置されており、アービターと片方のミラーメンバーに影響を与える可能性のあるアベイラビリティーゾーンの停止を防いでいます。

    ネットワーク構成でミラーリングをセットアップする方法はたくさんありますが、この例では、このドキュメントの「ネットワークゲートウェイとサブネットの定義」セクションで定義したネットワークサブネットを使用します。IP アドレススキームの例は以下のセクションで提供しています。このセクションでは、ネットワークインターフェースと指定されたサブネットについてのみ示しています。

    図 7-a: アービターを使用したミラー構成のサンプル


    災害復旧

    InterSystems のデータベースミラーリングは、高可用性機能を拡張することで、別の AWS 地理的リージョンへの災害復旧もサポートし、AWS の全リージョンがオフラインになるという万が一の事態に備え、運営のリジリエンシーをサポートします。アプリケーションがそのような停止にどのようにして耐えるかは、目標復旧時間(RTO)と目標復旧ポイント(RPO)によって異なります。これらは、適切な災害復旧計画を作成するために必要な分析の初期フレームを提供するものです。以下のリンクでは、アプリケーションの災害復旧計画を作成する際に検討すべき項目のガイドが提供されています。 https://aws.amazon.com/disaster-recovery/

    非同期データベースミラーリング

    InterSystems IRIS データプラットフォームのデータベースミラーリングは、AWS アベイラビリティーゾーンとリージョン間のデータレプリケーションを非同期に実行する堅牢な機能を提供しているため、災害復旧計画の RTO と RPO の目標をサポートする上で役立ちます。非同期ミラーメンバーの詳細については、こちらを参照してください。

    前の高可用性のセクションと同様に、クラウドロードバランサーは、自動 IP アドレスフェイルオーバーを仮想 IP(VIP のような)機能に提供して、前の「内部ロードバランサー」セクションで述べたのと同じ mirror_status.cxw ヘルスチェックステータスページを使用してDR 非同期ミラーリングも提供することができます。

    この例では、InterSystems IRIS のデプロイが動作しているアベイラビリティーゾーンやリージョンに関係なく、上流システムとクライアントワークステーションに単一の DNS アドレスを提供する AWS Route53 DNS サービスの導入とともに DR 非同期フェイルオーバーミラーリングがカバーされるようになります。

    AWS Route53 の詳細は、こちらを参照してください。

    図 8.1-a: AWS Route53 でのDR非同期ミラーリングのサンプル

    上の例では、InterSystems IRIS インスタンスのフロントエンドである両方のリージョンの Elastic Load Balancer(ELB)の IP アドレスに Route53 が提供されており、アベイラビリティーゾーンやリージョンに関係なく、有効なプライマリミラーであるミラーメンバーにのみトラフィックが転送されるようになります。


    シャードクラスタ

    InterSystems IRIS には包括的な機能セットが含まれており、ワークロードの性質とワークロードが直面している特定のパフォーマンスの課題に応じて、単独または組み合わせて適用できます。 機能セットの 1 つであるシャーディングは、データとその関連するキャッシュの両方を複数のサーバーに分割することで、クエリとデータの取り込みを行うための柔軟で安価なパフォーマンスの拡張を行いながら、リソースを非常に効率的に利用することで、インフラストラクチャの価値を最大化することができます。 InterSystems IRIS のシャードクラスタは、広範なアプリケーション、特に以下の 1 つ以上の項目を含むワークロードを使用するアプリケーションに、大きなパフォーマンスのメリットを提供できます。

    • 大量または高速なデータの取り込み、またはその両方。
    • 比較的大規模なデータセット、大量のデータを返すクエリ、またはその両方。
    • ディスク上の大量のデータをスキャンしたり、大規模な計算作業を必要としたりする、大量のデータ処理を行う複雑なクエリ。

    このような要因は、それ自体がシャーディングから得られる潜在的なメリットに影響を与えますが、これらを組み合わせた場合はさらにメリットが高まる可能性があります。 たとえば、大量データの迅速な取り込み、大規模なデータセット、および大量のデータを取得して処理する複雑なクエリという 3 つのすべての要因が組み合わさった場合、今日の分析ワークロードの多くでシャーディングを利用する価値が非常に高くなります。

    これらの特性はすべてデータに関係しています。InterSystems IRIS のシャーディングの主な機能は、データボリュームに対して拡張することだからです。 ただし、シャードクラスタには、一部またはすべてのデータ関連の要因が伴うワークロードで、多数のユーザーから非常に高いクエリ量が発生する場合に、ユーザーのボリュームに合わせて拡張する機能も含められます。 シャーディングは、垂直スケーリングと組み合わせることもできます。

    運用の概要

    シャードアーキテクチャの目的は、データとそれに関連するキャッシュを複数のシステム間で分割することにあります。 シャードクラスタは、データノードと呼ばれる複数の InterSystems IRIS インスタンス間で、大量のデータベーステーブルを物理的に水平に(行ごとに)分割します。その一方で、アプリケーションが任意のノードを介してこれらのテーブルに透過的にアクセスし、1 つの論理的な結合としてデータセット全体を捉えられるようにします。 このアーキテクチャには、次の 3 つのメリットがあります。

    • 並列処理

    クエリは、データノードで並列に実行され、結果は、アプリケーションが接続されたノードによってマージ、結合され、完全なクエリ結果としてアプリケーションに返されます。多くの場合、実行速度が大幅に改善されます。

    • 分割されたキャッシュ

    単一のインスタンスのキャッシュをデータセット全体で使用するのではなく、各ノードにそれが格納するシャーディングされたテーブルのデータ分割専用の独自キャッシュがあります。そのため、キャッシュのオーバーフローやパフォーマンスを低下するディスク読み取りのリスクが大幅に軽減されます。

    • 並列読み込み

    データをデータノードに並列に読み込めるため、取り込みワークロードとクエリワークロード間のキャッシュとディスクの競合が緩和され、両者のパフォーマンスが改善されます。

    InterSystems IRIS のシャードクラスタの詳細については、こちらを参照してください。

    シャーディングの要素とインスタンスタイプ

    シャードクラスタは、少なくとも 1 つのデータノードと、特定のパフォーマンスやワークロード要件に必要な場合は、オプションの数の計算ノードで構成されます。 これら 2 つのノードタイプは単純なビルディングブロックで、シンプルで透過的かつ効果的なスケーリングモデルを提供しています。

    データノード

    データノードはデータを格納します。 物理レベルでは、シャーディングされたテーブル [1] のデータはクラスタ内のすべてのデータノードに分散され、シャーディングされていないテーブルのデータは、最初のデータノードのみに物理的に格納されます。 この区別は、ユーザーに透過的です。最初のノードのストレージ消費量はほかのノードに比べてわずかに高いことがあるという唯一の例外がありますが、シャーディングされたテーブルデータは通常、シャーディングされていないテーブルデータをわずかに上回る程度であるめ、この差は無視することができます。

    シャーディングされたテーブルデータは、必要に応じて、通常は新しいデータノードを追加した後で、クラスタ全体で再調整できます。 この調整により、分散するデータが均等になるようにノード間でデータの「バケツ」が移動されます。

    論理レベルでは、シャーディングされていないテーブルデータとシャーディングされたテーブルのすべてのデータの結合はあらゆるノードから可視状態であるため、クライアントは接続しているノードに関係なく、データセット全体を見ることができます。 メタデータとコードも、すべてのデータノードで共有されます。

    シャードクラスタの基本的なアーキテクチャ図は、クラスタ全体で均一に見えるデータノードで構成されています。 クライアントアプリケーションは、任意のノードに接続でき、データがローカルであるかのように処理されます。

    図 9.2.1-a: 基本的なシャードクラスタの図


    [1] 便宜上、ドキュメントを通して「シャーディングされたテーブルデータ」という用語によって、シャーディングとしてマークされる、シャーディングをサポートするデータモデルの「エクステント」データを表しています。 「シャーディングされていないテーブルデータ」と「シャーディングされていないデータ」は、シャーディング可能なエクステントにあり、そのようにマークされていないデータ、またはシャーディングをまだサポートしていないデータモデルのデータを指します。

    計算ノード

    低レイテンシが必要となる高度なシナリオでは、潜在的にデータの一定した流入が発生する可能性があるため、クエリを処理するための透過的なキャッシング層を提供するために計算ノードを追加することができます。

    計算ノードはデータをキャッシュします。 各計算ノードは、対応するシャーディングされたテーブルデータをキャッシュするデータノードに関連付けられています。さらに、そのデータに加え、クエリを満たすために必要に応じてシャーディングされていないテーブルデータもキャッシュします。

    図 9.2.2-a: 計算ノードを含むシャードクラスタ

    計算ノードは物理的にデータを格納せず、クエリ実行をサポートすることを目的としているため、メモリと CPU に重点を置いてストレージを最小限に抑えるなどによって、そのハードウェアプロファイルをニーズに合わせて調整することができます。 取り込みは、ドライバー(xDBC、Spark)で直接、または計算ノードで「ベア」アプリケーションコードが実行されるときにシャーディングマネージャーコードによって暗黙的にデータノードに転送されます。

    シャードクラスタの図説

    シャードクラスタのデプロイにはさまざまな組み合わせがあります。以下の概要図は、最も一般的なデプロイメントモデルを説明しています。これらの図には、ネットワークゲートウェイと詳細は含まれておらず、シャードクラスタコンポーネントのみに焦点が当てられています。

     

    基本的なシャードクラスタ

    以下の図は、単一のリージョンと単一のゾーンにデプロイされた 4 つのデータノードを持つ最も単純なシャードクラスタです。クライアント接続をシャードクラスタノードに分散するために、AWS Elastic Load Balancer(ELB)が使用されています。

    図 9.3.1-a: 基本的なシャードクラスタ 

    この基本モデルでは、単一の仮想マシンとそれに接続された SSD 永続ストレージに AWS が提供するものを超えるレジリエンシーや高可用性は提供されていません。インバウンドクライアント接続のネットワークセキュリティ分離と、クライアントトラフィックとシャードクラスタ通信間の帯域幅分離の両方を実現するには、2 つのネットワークインターフェースアダプターを個別に用意することをお勧めします。

     

    高可用性を備えた基本的なシャードクラスタ

    以下の図は、単一のリージョンにデプロイされた 4 つのミラーデータノードとゾーン間で分岐した各ノードのミラーを持つ最も単純なシャードクラスタです。クライアント接続をシャードクラスタノードに分散するために、AWS Load Balancer が使用されています。 

    高可用性は、リージョン内のセカンダリゾーンで同期的に複製されたミラーを維持する InterSystems のデータベースミラーリングを使用して提供されています。

    インバウンドクライアント接続のネットワークセキュリティ分離と、クライアントトラフィック、シャードクラスタ通信、およびノードペア間の同期ミラートラフィック間の帯域幅分離を実現するには、3 つのネットワークインターフェースアダプターを個別に用意することをお勧めします。

    図 9.3.2-a: 高可用性を備えた基本的なシャードクラスタ 

    このデプロイモデルでは、この記事の前のセクションで説明したミラーアービターも導入されています。

    個別の計算ノードを持つシャードクラスタ

    以下の図は、大規模なユーザー/クエリ同時実行向けに、個別の計算ノードと 4 つのデータノードを持つシャードクラスタを拡張しています。Cloud Load Balancer サーバープールには、計算ノードのアドレスのみが含まれます。更新とデータの取り込みは、以前と同様にデータノードに直接更新され続け、超低レイテンシパフォーマンスを維持し、リアルタイムデータ取り込みによるクエリ/分析ワークロード間のリソースの干渉と輻輳を回避します。

    このモデルでは、計算/クエリと取り込みを個別にスケーリングできるようにリソースの割り当てを微調整することで、計算またはデータをスケーリングするためだけにリソースを不要に無駄にする代わりに、必要なときに「ジャストインタイム」でリソースを最適化し、経済的でありながらも単純なソリューションを維持することができます。 

    計算ノードは AWS 自動スケールグループ(自動スケーリング)を非常に簡単に使用できるため、負荷の増減に基づいて、管理されたインスタンスグループへのインスタンスの追加または削除を自動的に実行することができます。 自動スケーリングは、負荷が高まるとインスタンスグループにインスタンスを追加し(アップスケーリング)、インスタンスのニーズが低下するとインスタンスを削除(ダウンスケーリング)します。

    AWS 自動スケーリングの詳細については、こちらを参照してください。

    図 9.3.3-a: 計算ノードとデータノードが分離されたシャードクラスタ

    自動スケーリングを使用すると、クラウドベースのアプリケーションは、トラフィックの増加を適切に処理し、リソースのニーズが低下するとコストを削減するのに役立ちます。 ポリシーを定義するだけで、オートスケーラーは測定された負荷に基づいて自動的にスケーリングを実行します。


     

    バックアップ操作

    バックアップ操作には、いくつかのオプションがあります。InterSystems IRIS を使用した AWS デプロイでは、次の 3 つのオプションを使用できます。

    最初の 2 つのオプションは、以下で説明するとおり、スナップショットを作成する前にデータベースによるディスクへの書き込みを一時停止し、スナップショットに成功したら更新を再開するというスナップショットタイプの手順を使用しています。

    いずれかのスナップショット方式を使用してクリーンなバックアップを作成するには、次のおおまかな手順を実行します。

    • データベースの External Freeze API を呼び出し、データベースへの書き込みを一時停止する。
    • OS とデータディスクのスナップショットを作成する。
    • External Thaw API を呼び出し、データベースの書き込みを再開する。
    • バックアップファシリティがバックアップ場所にアーカイブする。

    External Freeze/Thaw API に関する詳細は、こちらを参照してください。

    注意: このドキュメントにはバックアップのサンプルスクリプトは含まれていませんが、InterSystems 開発者コミュニティに掲載される例を定期的に確認してください。 www.community.intersystems.com

    3 つ目のオプションは、InterSystems Online のバックアップです。これは、非常にシンプルな使用事例とインターフェースを備えたより小規模なデプロイメント向けのエントリーレベルのアプローチです。ただし、データベースのサイズが大きくなるにつれ、スナップショットテクノロジーを使った外部バックアップがベストプラクティスとして推奨されます。外部ファイルのバックアップ、より高速な復元時間、エンタープライズ全体のデータビューと管理ツールなどのメリットがあります。 

    クリーンで一貫したバックアップを確保するために、整合性チェックなどの追加手順を定期的に追加することができます。

    どのオプションを使用するかは、組織の運用要件とポリシーによって決まります。さまざまなオプションをさらに詳しく検討するには、InterSystems にご相談ください。

    AWS Elastic Block Store(EBS)スナップショットのバックアップ

    バックアップ操作は、AWS CLI コマンドライン API と InterSystems External Freeze/Thaw API 機能を使用して実行できます。 これにより、実質的に 24 時間 365 日の運用レジリエンシーとクリーンな定期バックアップを実現できます。AWS EBS スナップショットの管理と作成および自動化の詳細については、こちらを参照してください。

    論理ボリュームマネージャー(LVM)のスナップショット

    別の方法として、市場に出回っている多くのサードパーティ製バックアップツールを使用する場合は、VMそのものにバックアップエージェントを展開し、論理ボリュームマネージャ(LVM)のスナップショットと組み合わせてファイルレベルのバックアップを活用することができます。

    このモデルには、Windows または Linux ベースの VM をファイルレベルで復元できるというメリットがあります。このソリューションで注意すべき点は、AWS やほとんどの IaaS クラウドプロバイダはテープメディアを提供しないため、すべてのバックアップリポジトリは、短期アーカイブ用のディスクベースであり、長期保管(LTR)には BLOB またはバケットタイプの低コストストレージを活用できるということです。このモデルを使用する場合は、ディスクベースのバックアップリポジトリを最も効率的に使用できるように、重複除去テクノロジーをサポートするバックアップ製品を使用することを強くお勧めします。

    こういったクラウド対応のバックアップ製品には、Commvault、EMC Networker、HPE Data Protector、Veritas Netbackup などさまざまな製品があります。InterSystems では、これらの製品の比較検証や推奨は行っておりません。

    Online Backup

    小規模なデプロイでは、組み込みの Online Backup ファシリティもオプションとして考えられます。InterSystems のデータベースオンラインバックアップユーティリティは、データベース内のすべてのブロックをキャプチャしてデータベースファイルにデータをバックアップし、出力をシーケンシャルファイルに書き込みます。 この、InterSystems 独自のバックアップメカニズムは、本番システムのユーザーにダウンタイムを引き起こさないように設計されています。 Online Backup の詳細については、こちらを参照してください。

    AWS では、オンラインバックアップが完了した後、バックアップ出力ファイルとシステムで使用中のほかのすべてのファイルを、その仮想マシンインスタンスの外部にあるほかのストレージの場所にコピーする必要があります。これには、バケット/オブジェクトストレージが適しています。

    AWS Single Storage Space(S3)バケットを使用するには、2 つのオプションがあります。 

    • AWS CLI スクリプト API を直接使用して、新しく作成したオンラインバックアップ(とほかの非データベース)ファイルをコピーして操作する。
      • 詳細については、こちらを参照してください。
    • Elastic File Store(EFS)ボリュームをマウントし、永続ディスクと同様に低コストで使用する。
      • EFS の詳細は、こちらを参照してください。

    0
    1 1392
    記事 Toshihiko Minamoto · 9月 9, 2020 2m read

    最近の大規模なベンチマーク活動で、アプリケーションのスケーリングに悪影響を与える過度の %sys CPU 時間が観察されました。

    問題

    TZ 環境変数が設定されていないため、 localtime() システムコールに多くの時間が費やされていることがわかりました。 観察結果を確認するための単純なテストルーチンが作成されましたが、TZ が設定されている場合と TZ が未設定の場合とでは経過時間と必要な CPUリソースが驚くほど違っていました。 TZ が設定されていない場合、localtime() から /etc/local_time への stat() システムコールの継承使用は非常に負荷が高いことがわかりました。

    推奨事項

    InterSystems は、x86 または Linux on Power のいずれの Linux インストール環境でも、TZ 環境変数を適切に設定して最適なパフォーマンスを確保することを強く推奨しています。  詳細については、「man tzset」を参照してください。

    現在の Caché 2016.1のフィールドテストでは日付および時刻関連の関数に関する最適化が行われており、初期テストでは大幅に改善していることがわかっています。 以下は、TZ が設定されていない場合に PowerPC上のLinuxで新しい内部関数の呼び出しをテストした結果の出力例です。

    Caché 2016.1 FT 未満:

    real    0m22.60suser  0m1.64ssys   0m20.89s

    Caché 2016.1 FT の場合:

    real  0m0.40s
    user    0m0.37s
    sys 0m0.00s

    皆さんが TZ 環境変数に関してアプリケーションで経験したことや、TZ 環境変数の設定有無による Caché  2016.1 のフィールドテストへの影響についてコメントを投稿してください。

    0
    0 241
    記事 Toshihiko Minamoto · 8月 27, 2020 37m read

    企業はグローバルコンピューティングインフラストラクチャを迅速かつ効率的に成長させて管理すると同時に、資本コストと費用を最適化して管理する必要があります。 Amazon Web Services(AWS)および Elastic Compute Cloud(EC2)コンピューティングおよびストレージサービスは、非常に堅牢なグローバルコンピューティングインフラストラクチャを提供することにより、最も要求の厳しいCachéベースのアプリケーションのニーズを満たします。 企業は Amazon EC2 インフラストラクチャを利用し、コンピューティング能力を迅速にプロビジョニングしたり、既存のオンプレミスインフラストラクチャをクラウドに迅速かつ柔軟に拡張したりできます。 AWSは、セキュリティ、ネットワーキング、コンピューティング、ストレージのための豊富なサービスセットと堅牢でエンタープライズレベルの仕組みを提供します。

    AWS の中核となっているのは、Amazon EC2 です。 さまざまな OS とマシン構成(CPU、RAM、ネットワークなど)をサポートするクラウドコンピューティングインフラストラクチャです。 AWS は、Amazon マシンイメージ(AMI)と呼ばれる構成済みの仮想マシン(VM)イメージを、さまざまな Linux® および Windows ディストリビューションとバージョンを含むゲスト OS と共に提供しています。AWS で実行される仮想化インスタンスの基盤として、追加のソフトウェアが使用される場合もあります。 このような AMI を最初に使用し、追加のソフトウェアやデータなどをインスタンス化してインストールまたは構成し、アプリケーション固有またはワークロード固有の AMI を作成できます。 

    あらゆるプラットフォームやデプロイメントモデルと同様に、パフォーマンス、可用性、運用、管理手順などのアプリケーション環境に関わるすべての側面が正しく機能するように注意を払う必要があります。 

    このドキュメントでは、次のような各分野の詳細について説明しています。

    • ネットワークのセットアップと構成。 このセクションでは、リファレンスアーキテクチャ内のさまざまなレイヤーとロールの論理サーバーグループをサポートするサブネットなど、AWS 内で Caché ベースのアプリケーションのネットワークをセットアップする方法について説明します。
    • サーバーのセットアップと構成。 このセクションでは、各レイヤーのさまざまなサーバーの設計に関連するサービスとリソースについて説明します。 また、アベイラビリティーゾーン全体で高可用性を実現するためのアーキテクチャも取り上げます。
    • セキュリティ。 このセクションではインスタンスとネットワークのセキュリティを構成し、ソリューション全体やレイヤーとインスタンス間で認可済みアクセスを実現する方法など、AWS のセキュリティメカニズムについて説明します。
    • デプロイと管理。 このセクションでは、パッケージ化、デプロイ、監視、および管理の詳細について説明します。 

    # アーキテクチャとデプロイシナリオ

    このドキュメントでは、Caché、Ensemble、HealthShare、TrakCare、および DeepSee、iKnow、CSP、Zen、Zen Mojo といった関連する組み込みテクノロジーなどの InterSystems のテクノロジーに基づく堅牢かつパフォーマンスと可用性の高いアプリケーションを提供する AWS 内のいくつかのリファレンスアーキテクチャをサンプルとして提供します。

    Caché と関連コンポーネントを AWS でホストする方法を理解するため、まずは典型的な Caché デプロイのアーキテクチャとコンポーネントを確認し、いくつかの一般的なシナリオとトポロジを探っていきましょう。

    Caché アーキテクチャのレビュー

    InterSystems のデータプラットフォームは絶え間なく進化しており、高度なデータベース管理システムと迅速なアプリケーション開発環境を提供することで、複雑なデータモデルの処理と分析、および Web アプリケーションとモバイルアプリケーションの開発に飛躍的進歩をもたらしています。

    これは、複数モードのデータアクセスを提供する新世代のデータベーステクノロジーです。 データは単一の統合データディクショナリに1回だけ記述され、オブジェクトアクセス、高性能 SQL、および強力な多次元アクセスによりすぐに利用できます(これらはすべて同じデータに同時にアクセスできます)。

    アクセス可能な Caché の高レベルアーキテクチャコンポーネントの階層とサービスを図1に示します。これらの一般的な階層は、InterSystems TrakCare および HealthShare 製品の両方にも適用されます。

    図 1: 高レベルのコンポーネント階層

    ##一般的なデプロイシナリオ

    デプロイにはさまざまな組み合わせが可能ですが、このドキュメントではハイブリッドモデルと完全なクラウドホストモデルの 2 つのシナリオについて説明します。 

    ###ハイブリッドモデル

    このシナリオでは、企業はオンプレミスのエンタープライズリソースと AWS EC2 リソースの両方を、必要に応じて災害復旧、社内メンテナンスでの不測の事態、プラットフォームの変更計画、または短期的あるいは長期的な能力の増強に活用したいと考えています。 このモデルは、オンプレミスのフェイルオーバーミラーメンバーセットに対して高レベルの可用性を提供し、事業継続性と災害復旧を実現できます。  

    このシナリオでのこのモデルは、オンプレミスデプロイと AWS アベイラビリティーゾーン間の接続に VPN トンネルを利用し、AWS リソースを企業のデータセンターの拡張先として提供しています。 AWS Direct Connect などの他の接続方法もあります。 ただし、このドキュメントの中では説明していません。  AWS Direct Connect に関する詳細については、こちらを参照してください。

    この例の Amazon Virtual Private Cloud(VPC)を設定してオンプレミスのデータセンターの災害復旧に対応する方法については、こちらを参照してください。

    図 2: オンプレミスの障害復旧に AWS VPC を使用するハイブリッドモデル

    上記の例は、AWS VPC に VPN で接続されたオンプレミスデータセンター内で動作するフェイルオーバーミラーペアを示しています。 図の中の VPC は、特定 AWS リージョンにある 2 つのアベイラビリティーゾーンで複数のサブネットを提供しています。 レジリエンシーを高めるため、2 つの災害復旧(DR)非同期ミラーメンバー(各アベイラビリティーゾーンに 1 つ)があります。   

    ###クラウドホストモデル

    このシナリオでは、データレイヤーとプレゼンテーションレイヤーの両方を含む Caché ベースのアプリケーションは、単一 AWS リージョン内の複数のアベイラビリティーゾーンを使用して AWS クラウド内に完全に維持されています。 同じVPNトンネル、AWS Direct Connect、さらには純粋なインターネット接続モデルも利用できます。

    図 3: 完全な本番ワークロードに対応したクラウドホストモデル

    上記の図 3 の例は、VPC 内にアプリケーションの本番環境全体をデプロイするデプロイモデルを示しています。 このモデルは、アベイラビリティーゾーン間の同期的なフェイルオーバーミラーリングに対応した 2 つのアベイラビリティーゾーンと共に、ロードバランシングされた Web サーバーと関連するアプリケーションサーバーを ECP クライアントとして活用しています。 それぞれの層は、ネットワークセキュリティ制御のために個別のセキュリティグループに分離されています。 IPアドレスと一定範囲のポートは、アプリケーションのニーズに応じて必要な場合にのみ開かれます。

    # ストレージとコンピューティングリソース

    ###ストレージ

    複数のストレージタイプを選択できます。 このリファレンスアーキテクチャでは、Amazon Elastic Block Store(Amazon EBS)と Amazon EC2 Instance Store インスタンスストア(エフェメラルドライブとも呼ばれます)のボリュームについて想定されるいくつかの使用事例を説明します。 さまざまなストレージオプションの詳細は、こちらこちらをご覧ください。

    Elastic Block Storage(EBS)

    EBS は、Linux または Windows で従来型のファイルシステムとしてフォーマットおよびマウント可能で、Amazon EC2 インスタンス(仮想マシン)で使用する耐久性のあるブロックレベルのストレージを提供します。また、最も重要な事ですが、ボリュームはデータベースにとって重要な単一の Amazon EC2 インスタントの稼働期間とは独立して存続するインスタンス外のストレージになっています。

    さらに、Amazon EBS はボリュームのポイントインタイムスナップショットを作成し、Amazon S3 に保存する機能を提供します。 これらのスナップショットは新しい Amazon EBS ボリュームの開始ポイントとして、および長期的な耐久性の確保を目的としてデータを保護するために使用できます。 同じスナップショットを使用して必要な数のボリュームをインスタンス化することができます。 これらのスナップショットは AWS リージョン間でコピーできるため、複数の AWS リージョンを地理的な拡張、データセンターの移行、災害復旧により簡単に活用できるようになっています。 Amazon EBS ボリュームのサイズの範囲は 1 GB から 16 TB の範囲で、1 GB 単位で割り当てられます。

    Amazon EBS 内には、マグネティックボリューム、汎用(SSD)、プロビジョンド IOPS(SSD)という 3 種類のタイプがあります。 次のサブセクションでは、それぞれについて簡単に説明します。

    マグネティックボリューム

    マグネティックボリュームは、中程度または突発的な I/O 要件を持つアプリケーションにコスト効率の高いストレージを提供します。 マグネティックボリュームは平均で毎秒約 100 件の入出力操作(IOPS)を実現するように設計されており、ベストエフォートで数百 IOPS にバーストする機能を備えています。 バースト機能がインスタンスの起動時間を高速にするため、マグネティックボリュームは起動ボリュームとしての使用にも適しています。

    汎用(SSD)

    汎用(SSD)ボリュームは、幅広いワークロードに適した費用対効果の高いストレージを提供します。 これらのボリュームは、数ミリ秒のレイテンシ、長時間にわたって 3,000 IOPS までバーストする機能、3 IOPS/GB から最大 10,000 IOPS(3,334 GBの場合)までのベースラインパフォーマンスを提供します。 汎用(SSD)ボリュームのサイズは 1 GB から 16 TB の範囲です。

    プロビジョンド IOPS(SSD)

    プロビジョンド IOPS(SSD)ボリュームは、ランダムアクセス I/O スループットにおけるストレージのパフォーマンスと整合性に影響されやすいデータベースワークロードなど、I/O 集中型のワークロードに予測可能な高パフォーマンスを提供するように設計されています。 ボリュームの作成時に IOPS レートを指定すると、Amazon EBS は 1 年間のうち 99.9% の時間についてプロビジョニングされた IOPS の 10% の範囲内でパフォーマンスを提供します。 プロビジョンド IOPS(SSD)ボリュームのサイズは 4 GB から 16 TB の範囲で、ボリュームごとに最大20,000 IOPS をプロビジョニングできます。 プロビジョニングされた IOPS とリクエストされたボリュームサイズの最大比率は 30 です。例えば、3,000 IOPS のボリュームのサイズは少なくとも 100 GB である必要があります。 プロビジョンド IOPS(SSD)ボリュームのスループットは、プロビジョニングされた IOPS ごとに 256 KB であり、最大で 320 MB/秒となります(1,280 IOPS の場合)。

    このドキュメントで説明するアーキテクチャでは EBS ボリュームを使用しています。予測可能な低レイテンシの入出力操作毎秒(IOPS)とスループットが必要な本番ワークロードに適しているためです。 すべての VM タイプが EBS ストレージにアクセスできるわけではないため、特定の EC2 インスタンスのタイプを選択する際には注意が必要です。

    注意: Amazon EBS ボリュームはネットワークに接続されたデバイスであるため、Amazon EC2 インスタンスによって実行される他のネットワーク I/O と共有ネットワークの全体的な負荷も、個々の Amazon EBS ボリュームのパフォーマンスに影響を与える可能性があります。 Amazon EC2 インスタンスが Amazon EBS ボリュームでプロビジョンド IOPS を十分に活用できるようにするには、選択した Amazon EC2 インスタンスのタイプを Amazon EBS 最適化インスタンスとして起動してください。 

    EBS ボリュームの詳細については、こちらを参照してください。

    EC2 インスタンスストレージ(エフェメラルドライブ)

    EC2 インスタンスストレージは、稼働中の Amazon EC2 インスタンスをホストしているのと同じ物理サーバー上に構成され、接続されたディスクストレージのブロックで構成されています。 提供されるディスクストレージの容量は、Amazon EC2 インスタンスのタイプによって異なります。 インスタンスストレージを提供する Amazon EC2 インスタンスファミリーでは、インスタンスが大きいほど、インスタンスストアのボリュームが大きくなる傾向があります。

    Amazon EC2 インスタンスファミリーにはストレージ最適化(I2)と高密度ストレージ(D2)があり、それぞれが特定の使用事例を対象とした特殊な用途のインスタンスストレージを提供しています。 例えば、I2 インスタンスは 365,000 超のランダム読み取り IOPS と 315,000 書き込み IOPS に対応できる非常に高速な SSD ベースのインスタンスストレージを提供し、コスト的に魅力的な価格モデルを提供しています。

    このストレージは EBS ボリュームのように永続的ではなく、インスタンスの存続期間中のみ使用できるものであるため、接続を解除したり別のインスタンスに接続したりすることはできません。 インスタンスストレージは、絶えず変化する情報を一時的に保存するためのものです。 InterSystems のテクノロジーと製品の領域では、エンタープライズサービスバス(ESB)としての Ensemble や Health Connect の使用、エンタープライズキャッシュプロトコル(ECP)を使用するアプリケーションサーバー、または CSP Gateway と Web サーバーの使用などが、このタイプのストレージとストレージ最適化インスタンスタイプに適した使用事例になるでしょう。また、プロビジョニングツールと自動化ツールを使用することで、これらの効率を合理化して柔軟性を高めることができます。

    インスタンスストアの詳細については、こちらを参照してください。

    コンピューティング

    EC2 インスタンス

    さまざまな使用事例に最適化された多数のインスタンスタイプを利用できます。 インスタンスタイプは、CPU、メモリ、ストレージ、ネットワーク容量のさまざまな組み合わせで構成されており、それらを無数に組み合わせてアプリケーションのリソース要件を適切なサイズに調整できます。

    このドキュメントでは、Amazon EC2 の M4 汎用インスタンスタイプを適切な環境のサイジングを行うために参照しています。また、これらのインスタンスは EBS ボリュームの機能と最適化を提供しています。 アプリケーションの容量要件と価格モデルに基づいて、他のインスタンスを使用することもできます。

    M4 インスタンスは最新世代の_汎用_インスタンスです。 このファミリーは、コンピューティング、メモリ、ネットワークリソースをバランスよく提供しているため、多くのアプリケーションに適しています。 仮想 CPU の数は 2 個から 64 個、メモリ容量は 8 GB から 256 GB を提供し、対応する専用 EBS 帯域幅が決まっています。

    個々のインスタンスタイプに加えて、専用ホスト、スポットインスタンス、リザーブドインスタンス、専用インスタンスなどの階層化された分類もあり、それぞれ価格、パフォーマンス、分離の程度が異なります。

    現在利用可能なインスタンスの可用性と詳細については、こちらを参照してください。

    可用性と運用

    Web/アプリサーバーの負荷分散

    Cachéベースのアプリケーションには、外部および内部の負荷分散されたWebサーバーが必要となる場合があります。 外部のロードバランサーはインターネットまたは WAN(VPN または Direct Connect)経由でのアクセスに使用され、内部のロードバランサーは内部トラフィックに使用される可能性があります。 AWS Elastic Load Balancing は、アプリケーションロードバランサーとクラシックロードバランサーの 2 種類のロードバランサーを提供します。

    クラシックロードバランサー

    クラシックロードバランサーは、アプリケーションやネットワークレベルの情報に基づいてトラフィックをルーティングし、高可用性、自動スケーリング、堅牢なセキュリティが必要な複数の EC2 インスタンス間でのトラフィックを単純にロードバランシングするのに適しています。仕様の詳細と機能については、こちらを参照してください。

    アプリケーションロードバランサー

    アプリケーションロードバランサーは Elastic Load Balancing サービスの負荷分散オプションであり、アプリケーションレイヤーで動作し、1 つ以上の Amazon EC2 インスタンスで実行されている複数のサービスやコンテナ全体の内容に応じてルーティングのルールを定義する機能を提供します。 さらに、WebSockets および HTTP/2 に対応しています。仕様の詳細と機能については、こちらを参照してください。

    次の例では最高レベルの可用性を提供するため、独立したアベイラビリティーゾーンに 3 つの Web サーバーのセットが定義されています。 Web サーバーのロードバランサーは、ユーザーセッションを Cookie を使用する特定の EC2 インスタンスに固定する機能を提供する_スティッキーセッション_を使用して構成する必要があります。 ユーザーがアプリケーションにアクセスし続けると、トラフィックは同じインスタンスにルーティングされます。 

    次の図4では、AWS 内のクラシックロードバランサーの簡単な例を示しています。

    図 4: クラシックロードバランサーの例

    データベースミラーリング

    Caché ベースのアプリケーションを AWS にデプロイする場合、Caché データベースサーバーの高可用性を確保するには、同期的なデータベースミラーリングを使用して特定のプライマリ AWS リージョンで高可用性を確保し、稼働時間サービスレベル契約の要件によっては非同期なデータベースミラーリングを使用して災害復旧用のセカンダリ AWS リージョン内のホットスタンバイにデータを複製する必要があります。

    データベースミラーは、フェイルオーバーメンバーと呼ばれる2つのデータベースシステムの論理グループです。これらのメンバーはネットワークでのみ接続された物理的に独立したシステムです。 ミラーは、2 つのシステムを解決した後、自動的に片方をプライマリシステムとするため、もう片方は自動的にバックアップシステムになります。 外部クライアントワークステーションまたはほかのコンピュータは、ミラーリング構成中に指定されたミラーの仮想IP(VIP)を介してミラーに接続します。 ミラーVIPは、ミラーのプライマリシステムのインターフェイスに自動的にバインドされます。 

    注意: AWS ではミラー VIP を構成することはできないため、代替ソリューションが考案されています。 ただし、サブネット間のミラーリングはサポートされています。

    AWS にデータベースミラーをデプロイするための現在推奨されているのは、3 つの異なるアベイラビリティーゾーンの同じ VPC に 3 つのインスタンス(プライマリ、バックアップ、アービター)を構成することです。 こうすることで、AWS は常に 99.95% の SLA でこれらの VM のうち少なくとも 2 つが外部に接続されていることを保証します。 その結果、データベースのデータ自体の適切な分離と冗長性を提供しています。 AWS EC2 のサービスレベル契約に関する詳細については、こちらを参照してください。

    フェイルオーバーメンバー間のネットワーク遅延には厳密な上限はありません。 遅延の増加による影響は、アプリケーションによって異なります。 フェイルオーバーメンバー間のラウンドトリップ時間がディスク書き込みサービス時間と同じである場合、影響はありません。 ただし、アプリケーションがデータの永続化(ジャーナル同期と呼ばれることもあります)を待つ必要がある場合はラウンドトリップ時間が問題になることがあります。 データベースミラーリングとネットワーク遅延に関する詳細については、こちらを参照してください。

    ### 仮想 IP アドレスと自動フェイルオーバー

    ほとんどの IaaS クラウドプロバイダーには、データベースのフェイルオーバー設計で一般的に使用される仮想 IP(VIP)アドレスを提供する機能がありません。 この問題を解決するために ECP クライアントや CSP Gateway などの最も一般的に使用される接続方法が Caché、Ensemble、HealthShare 内で拡張されたため、VIP の機能を使用してこれらをミラー対応にする必要はなくなりました。 

    xDBC、TCP/IP ソケットによる直接接続などの接続方法や、その他の直接接続プロトコルについては引き続き VIP を使用する必要があります。 この問題を解決するため、InterSystems のデータベースミラーリングテクノロジーは、AWS の Elastic Load Balancer(ELB)とやり取りして VIP のような機能を実現する API を使用することで、AWS 内でこれらの接続方法に対して自動フェイルオーバーを提供できるようにしています。その結果、AWS 内で完全かつ堅牢な高可用性を実現しています。 

    さらに、AWS は最近になってアプリケーションロードバランサーと呼ばれる新しいタイプの ELB を導入しました。 このタイプのロードバランサーはレイヤー 7 で実行され、コンテンツベースのルーティングをサポートし、コンテナで実行されるアプリケーションをサポートしています。 コンテンツベースのルーティングは、パーティション分割されたデータやデータシャーディングを使用するビッグデータタイプのプロジェクトのデプロイで特に役に立ちます。 

    仮想 IP の場合と同様に、これは唐突なネットワーク構成の変更であり、フェイルオーバーが発生していることを障害が発生したプライマリミラーメンバーに接続されている既存のクライアントに通知するアプリケーションロジックを必要としないものです。 障害の性質によっては、障害そのもの、アプリケーションのタイムアウトやエラー、新しいプライマリによる古いプライマリインスタンスの強制停止、あるいはクライアントが使用した TCP キープアライブタイマーの失効が原因でこれらの接続が終了する可能性があります。

    その結果、ユーザーは再接続してログインする必要になるかもしれません。 この動作はアプリケーションの動作によって決まります。 利用可能なさまざまなタイプの ELB に関する詳細については、こちらをご覧ください。

    AWS EC2 インスタンスから AWS Elastic Load Balancer メソッドの呼び出し

    このモデルでは、ELB はフェイルオーバーミラーメンバーと潜在的な DR 非同期ミラーメンバーの両方が定義され、現在のプライマリミラーメンバーであるアクティブなエントリが 1 つだけのサーバープールか、アクティブなミラーメンバーのエントリを 1 つ持つサーバープールのみを持つことができます。 

    図 5: Elastic Load Balancer と対話する API メソッド(内部)

    ミラーメンバーがプライマリミラーメンバーになると、新しいプライマリミラーメンバーの ELB を調整/指示するために API 呼び出しが EC2 インスタンスから AWS ELB に発行されます。 

    図 6: ロードバランサーの API を使用したミラーメンバー B へのフェイルオーバー

    同様のモデルは、プライマリミラーメンバーとバックアップミラーメンバーの両方が利用できなくなった場合の DR 非同期ミラーメンバーの昇格にも適用されます。

    図 7: ロードバランサーの API を使用した DR 非同期ミラーのプライマリへの昇格

    標準の推奨される DR 手順のとおり、上記図 6 の DR メンバーの昇格では非同期複製によるデータ損失の可能性があるため、人間による判断が必要になります。 ただし、その操作を実行した後は ELB 上での管理操作は必要ありません。 昇格中に API が呼び出されると、トラフィックが自動的にルーティングされます。

    API の詳細

    AWS ロードバランサのリソースを呼び出すためのこの API は、具体的には次のようにプロシージャコールの一部として ^ZMIRROR ルーチンで定義されています。  

    $$CheckBecomePrimaryOK^ZMIRROR()

    このプロシージャの中に、AWS ELB REST API、コマンドラインインターフェイスなどから使用するために選択した API ロジックまたはメソッドを挿入します。 ELB と効果的かつ安全に対話するには、AWS Identity and Access Management(IAM)ロールを使用してください。これにより、長期間有効な認証情報を EC2 インスタンスに配布する必要がなくなります。 IAM ロールは、Caché が AWS ELB と対話するために使用できる一時的な権限を提供します。EC2 インスタンスに割り当てられた IAM ロールの使用に関する詳細は、こちらを参照してください。

    AWS Elastic Load Balancer のポーリングメソッド

    2017.1で利用可能な CSP Gateway の mirror_status.cxw ページを使用するポーリングメソッドは、ELB サーバープールに追加された各ミラーメンバーに対する ELB ヘルスモニターのポーリングメソッドとして使用できます。 プライマリミラーのみが「SUCCESS」に応答するため、ネットワークトラフィックはアクティブなプライマリミラーメンバーのみに送信されます。 

    このメソッドでは、^ZMIRROR にロジックを追加する必要はありません。 ほとんどの負荷分散ネットワークアプライアンスには、ステータスチェックの実行頻度に制限があることに注意してください。 通常、最高頻度は一般的にほとんどの稼働時間サービスレベル契約で許容される 5 秒以上に設定されています。

    次のリソースの HTTP リクエストは、ローカルキャッシュ構成のミラーメンバーのステータスをテストします。

    /csp/bin/mirror_status.cxw_

    それ以外の場合、ミラーステータスリクエストのパスを実際の CSP ページのリクエストに使用されるのと同じ階層構造を使用し、適切なキャッシュサーバーとネームスペースに解決する必要があります。

    例: /csp/user/ パスにある構成サービスアプリケーションのミラーステータスをテストする場合は次のようになります。

    /csp/user/mirror_status.cxw_

    注意: ミラーライセンスチェックを実行しても、CSP ライセンスは消費されません。

    ターゲットインスタンスがアクティブなプライマリメンバーであるかどうかに応じて、ゲートウェイは以下の CSP 応答のいずれかを返します。

    **** 成功(プライマリメンバーである)**

    ===============================

       HTTP/1.1 200 OK

       Content-Type: text/plain

       Connection: close

       Content-Length: 7

       SUCCESS

    **** 失敗(プライマリメンバーではない)**

    ===============================

       HTTP/1.1 503 Service Unavailable

       Content-Type: text/plain

       Connection: close

       Content-Length: 6

       FAILED

    **** 失敗(キャッシュサーバーが Mirror_Status.cxw のリクエストをサポートしていない)**

    ===============================

       HTTP/1.1 500 Internal Server Error

       Content-Type: text/plain

       Connection: close

       Content-Length: 6

       FAILED

    次の図は、ポーリングメソッドを使用するさまざまなシナリオを表しています。

    図 8: すべてのミラーメンバーへのポーリング

    上の図 8 のように、すべてのミラーメンバーは動作しており、プライマリミラーメンバーのみがロードバランサーに「SUCCESS」を返しているため、ネットワークトラフィックはこのミラーメンバーにのみ送信されます。

    図 9: ポーリングを使用したミラーメンバー B へのフェイルオーバー

    次の図は、DR 非同期ミラーメンバーの負荷分散プールへの昇格を表しています。これは通常、同じ負荷分散ネットワークアプライアンスがすべてのミラーメンバーにサービスを提供していることを前提としています(地理的に分割されたシナリオについては、この記事の後半で説明します)。

    標準の推奨される DR 手順のとおり、DR メンバーの昇格では非同期複製によるデータ損失の可能性があるため、人間による判断が必要になります。 ただし、その操作を実行した後は ELB 上での管理操作は必要ありません。 新しいプライマリは自動的に検出されます。

    図 10: ポーリングを使用した DR 非同期ミラーメンバーのフェイルオーバーと昇格

    バックアップと復元

    バックアップ操作には、いくつかのオプションがあります。 InterSystems 製品を使用した AWS のデプロイでは、次の 3 つのオプションを実行できます。 最初の 2 つのオプションは、スナップショットを作成する前にデータベースによるディスクへの書き込みを一時停止し、スナップショットに成功したら更新を再開するというスナップショットタイプの手順を使用しています。 いずれかのスナップショット方式を使用してクリーンなバックアップを作成するには、次のおおまかな手順を実行します。

    • データベースのFreeze API呼び出しにより、データベースへの書き込みを一時停止する。
    • OS とデータディスクのスナップショットを作成する。
    • データベースのThaw API呼び出しにより、Cachéの書き込みを再開する。
    • バックアップファシリティはバックアップ場所にアーカイブする。

    クリーンで一貫したバックアップを確保するために、整合性チェックなどの追加手順を定期的に追加することができます。

    どのオプションを使用するかという決定ポイントは、組織の運用要件とポリシーによって異なります。 さまざまなオプションをさらに詳しく検討するには、InterSystemsにご相談ください。

    EBS スナップショット

    EBS スナップショットは、高可用性で低コストの Amazon S3 ストレージにポイントインタイムスナップショットを作成するための非常に高速で効率的な方法です。 EBS スナップショットと共に InterSystems External Freeze および Thaw API の機能を使って、実質的に 24 時間 365 日の運用レジリエンシーとクリーンな定期バックアップを実現できます。 Amazon CloudWatch Events などの AWS が提供するサービスか、Cloud Ranger や N2W Software Cloud Protection Manager などの市場で入手可能なサードパーティ製ソリューションを使用してプロセスを自動化する方法は多数存在します。

    また、AWS ダイレクト API を呼び出し、独自にカスタマイズしたバックアップソリューションをプログラムで作成することができます。API の活用方法の詳細については、こちらこちらをご覧ください。

    注意: InterSystems はこれらのサードパーティ製品を推奨または明示的に検証していません。 テストと検証はお客様の責任で実施してください

    論理ボリュームマネージャのスナップショット

    別の方法として、市場に出回っている多くのサードパーティ製バックアップツールを使用する場合は、VM そのものにバックアップエージェントを展開し、Linux の論理ボリュームマネージャ(LVM)のスナップショットか Windows のボリュームシャドウコピーサービス(VSS)と組み合わせてファイルレベルのバックアップを活用することができます。

    このモデルには、Linux および Windows ベースのインスタンスをファイルレベルで復元できるというメリットがあります。 このソリューションで注意すべき点は、AWS やほとんどの IaaS クラウドプロバイダはテープメディアを提供しないため、すべてのバックアップリポジトリは短期アーカイブ用のディスクベースになっており、長期保管(LTR)を行うには Amazon S3 の低コストストレージ、そして最終的には Amazon Glacier を活用できるということです。 このモデルを使用する場合は、ディスクベースのバックアップリポジトリを最も効率的に使用できるように、重複除去テクノロジーをサポートするバックアップ製品を使用することを強くお勧めします。

    こういったクラウド対応のバックアップ製品には、Commvault、EMC Networker、HPE Data Protector、Veritas Netbackup などさまざまな製品があります。 

    注意: InterSystems はこれらのサードパーティ製品を推奨または明示的に検証していません。 テストと検証はお客様の責任で実施してください

    Caché Online Backup

    小規模なデプロイでは、組み込みの Caché Online Backup ファシリティもオプションとして考えられます。 InterSystems のデータベースオンラインバックアップユーティリティは、データベース内のすべてのブロックをキャプチャしてデータベースファイルにデータをバックアップし、出力をシーケンシャルファイルに書き込みます。 この、InterSystems独自のバックアップメカニズムは、本番システムのユーザーにダウンタイムを引き起こさないように設計されています。 

    AWS ではオンラインバックアップが完了した後、バックアップ出力ファイルとシステムが使用中のその他すべてのファイルをファイル共有(CIFS/NFS)として機能する EC2 にコピーする必要があります。 このプロセスは、仮想マシン内でスクリプト化して実行しなければなりません。

    オンラインバックアップは、バックアップに低コストのソリューションを実装したい小規模サイト向けのエントリーレベルのアプローチですが、 データベースのサイズが大きくなるにつれ、スナップショットテクノロジーを使った外部バックアップがベストプラクティスとして推奨されます。外部ファイルのバックアップ、より高速な復元時間、エンタープライズ全体のデータビューと管理ツールなどのメリットがあります。

    災害復旧

    AWS に Caché ベースのアプリケーションをデプロイする場合は、ネットワーク、サーバー、ストレージなどの DR リソースを異なる AWS リージョンか、最小限の独立したアベイラビリティーゾーンに配置することをお勧めします。 指定された DR AWS リージョンに必要な容量は、組織のニーズによって異なります。 ほとんどの場合、DRモードでの運用時には本番容量の100%が必要となりますが、弾性モデルとして必要になるまでは、より少ない容量をプロビジョニングできます。 容量が少ないと Web サーバーとアプリケーションサーバーの数が減り、データベースサーバーに使用できる EC2 インスタンスタイプがさらに小さくなる可能性があります。また、昇格時には EBS ボリュームが大きな EC2インスタンスタイプに接続されます。 

    非同期データベースミラーリングは、DR AWS リージョンの EC2 インスタンスに対する継続的な複製処理を実行するために使用されます。 ミラーリングは、データベースのトランザクションジャーナルを使用して、プライマリシステムのパフォーマンスへの影響を最小限に抑えながら、TCP/IPネットワーク経由で更新を複製します。 これらの DR 非同期ミラーメンバーには、ジャーナルファイルの圧縮と暗号化を構成することを強くお勧めします。

    アプリケーションにアクセスする公開インターネット上のすべての外部クライアントは、追加の DNS サービスである Amazon Route53 経由でルーティングされます。 Amazon Route53 は、トラフィックを現在アクティブなデータセンターに転送するスイッチとして使用されます。Amazon Route53 は、主に次の 3 つの機能を実行します。

    • ドメイン登録 – Amazon Route53では、example.com などのドメイン名を登録できます。
    • ドメインネームシステム(DNS)サービス – Amazon Route53 は、www.example.com などのわかりやすいドメイン名を 192.0.2.1 などの IP アドレスに変換します。 Amazon Route53 は世界中のネットワークに展開された権威 DNS サーバーを使用して DNS クエリに応答し、レイテンシを削減します。
    • ヘルスチェック – Amazon Route53 はインターネット経由でアプリケーションに自動的にリクエストを送信し、到達可能であり、利用可能であり、機能していることを確認しています。

    これらの機能に関する詳細は、こちらを参照してください。

    このドキュメントでは、DNS フェイルオーバーと Route53 ヘルスチェックについて説明します。ヘルスチェックの監視と DNS フェイルオーバーの詳細は、こちらこちらを参照してください。

    Route53 は、各エンドポイントに通常のリクエストを送信してその応答を検証することで機能します。 エンドポイントが有効なレスポンスを提供できない場合、 DNSレスポンスには含まれなくなり、代わりに利用可能な代替エンドポイントを返します。 このようにして、ユーザートラフィックは障害のあるエンドポイントから離れ、利用可能なエンドポイントに向けられます。

    上記の方法を使用すると、特定のリージョンと特定のミラーメンバーへのトラフィックのみが許可されます。 これは、この記事で前述した InterSystems CSP Gateway から提示される mirror_status.cxw ページであるエンドポイント定義によって制御されます。 プライマリミラーメンバーのみが、ヘルスチェックからの「SUCCESS」を HTTP 200 として報告します。

    次の図は、フェイルオーバールーティングポリシーの概要を表しています。 この方法やその他の詳細については、こちらを参照してください。

    図 11: Amazon Route53 のフェイルオーバールーティングポリシー

    常に、エンドポイント監視に基づいて、1つのリージョンのみがオンライン状態を報告します。 これにより、トラフィックは常に1つのリージョンにのみ流れるようになります。 エンドポイント監視は、指定されたプライマリ AWS リージョンのアプリケーションがダウン状態であり、セカンダリ AWS リージョンのアプリケーションがライブになっていることを検出するため、リージョン間のフェイルオーバーにさらに手順を追加する必要はありません。 これは、DR 非同期ミラーメンバーが手動でプライマリに昇格されると、CSP Gateway が Elastic Load Balancer のエンドポイント監視に HTTP 200 を報告できるようになるためです。

    上記のソリューションの代替案は多くあり、組織の運用要件やサービスレベル契約に基づいてカスタマイズすることができます。

    モニタリング

    Amazon CloudWatch は、すべての AWS クラウドリソースとアプリケーションに監視サービスを提供できます。 Amazon CloudWatch を使用し、メトリックの収集と追跡、ログファイルの収集と監視、アラームの設定、AWS リソースの変更への自動対応を行うことができます。 Amazon CloudWatch は、Amazon EC2 インスタンス、アプリケーションとサービスによって生成されたカスタム指標、およびアプリケーションが生成したログファイルなどの AWS リソースを監視できます。 Amazon CloudWatch を使用し、システム全体のリソース使用率、アプリケーションパフォーマンス、運用状態を可視化できます。   詳細については、こちらを参照してください。

    自動プロビジョニング

    現在、Terraform、Cloud Forms、Open Stack、Amazon 独自の CloudFormation など、数多くのツールが市場に出回っています。 これらのツールを使用し、Chef / Puppet / Ansible などのその他のツールと組み合わせることで、DevOps に対応した完全な Infrastructure-as-Code を提供したり、アプリケーションの立ち上げを完全に自動化したりできます。 Amazon CloudFormation の詳細については、こちらを参照してください。

    ネットワーク接続

    アプリケーションの接続要件に応じて、インターネット、VPN、または Amazon Direct Connect を使用した専用リンクのいずれかを使用して複数の接続モデルを利用することができます。 選択方法は、アプリケーションとユーザーのニーズによって異なります。 これら 3 つの方法の帯域幅使用率はそれぞれ異なるため、AWS 担当者に相談するか Amazon マネジメントコンソールで特定のリージョンで使用可能な接続オプションを確認することをお勧めします。

    セキュリティ

    パブリック IaaS クラウドプロバイダーにアプリケーションをデプロイするかどうかを決定するには注意が必要です。 組織のセキュリティコンプライアンスを維持するには、組織の標準セキュリティポリシーまたはクラウド専用に作成された新しいポリシーに従う必要があります。 また、組織のデータが国外に保存され、データが存在する国の法律に準拠している場合には関連するデータの主権を把握しておく必要があります。 クラウドデプロイメントには、クライアントデータセンターと物理的なセキュリティ管理の外にデータが置かれるため、付加リスクが伴います。 使用中でないデータ(データベースとジャーナル)と使用中のデータ(ネットワーク通信)には、InterSystemsのデータベースとジャーナル暗号化と合わせて、前者にはAESを、後者にはSSL/TLS暗号化を使用することを強くお勧めします。

    すべての暗号化キー管理と同様に、データの安全を確保し、不要なデータアクセスやセキュリティ違反を防止するには、組織のポリシーに基づいて、適切な手順を文書化し、それに従う必要があります。

    Amazonは、Caché ベースのアプリケーションに非常に安全な運用環境を提供するための広範なドキュメントと事例を提供しています。こちらで参照できる Identity Access Management(IAM)に関するさまざまなディスカッションのトピックを確認してください。

    アーキテクチャ図の例

    下の図は、データベースミラーリング(同期フェイルオーバーと DR 非同期)、ECP を使用したアプリケーションサーバー、負荷分散された複数の Web サーバーの構成で高可用性を提供する典型的な Caché のインストール環境を表しています。

    TrakCareの例

    次の図は、負荷分散された複数の Web サーバー、ECP クライアントとしての 2 台のプリントサーバー、データベースミラーで構成される典型的な TrakCare のデプロイを表しています。 仮想IPアドレスは、ECPまたはCSP Gatewayに関連付けられていない接続にのみ使用されます。 ECPクライアントとCSP Gatewayはミラー対応であり、VIPを必要としません。

    Direct Connect を使用している場合、災害復旧シナリオで有効にできる複数の回線やリージョンアクセスなどのオプションがあります。 電気通信事業者に相談し、事業者がサポートする高可用性と災害復旧シナリオを理解することが重要です。

    下のサンプルリファレンスアーキテクチャ図には、アクティブまたはプライマリリージョンにおける高可用性と、プライマリ AWS リージョンが利用不可である場合の別の AWS リージョンへの災害復旧が含まれます。 また、この例では、データベースミラーには、1つのミラーセット内にTrakCare DB、TrakCare Analytics、およびIntegrationネームスペースが含まれています。

    図 12: TrakCare AWS リファレンスアーキテクチャ図 – 物理アーキテクチャ

    さらに、次の図は、関連するインストールされたエンドユーザ向けソフトウェア製品と機能的な目的で、より論理的なアーキテクチャを示しています。

    図 13: TrakCare AWS リファレンスアーキテクチャ図 – 論理アーキテクチャ

    HealthShare の例

    次の図は、負荷分散される複数のWebサーバーと、Information Exchange、Patient Index、Personal Community、Health Insight、Health Connectといった複数のHealthShare製品による典型的なHealthSharaeデプロイメントを示しています。 それぞれの製品は、複数のアベイラビリティーゾーン内に 1 組のデータベースミラーを含めて高可用性を実現しています。 仮想IPアドレスは、ECPまたはCSP Gatewayに関連付けられていない接続にのみ使用されます。 HealthShare製品間のWebサービス通信に使用されるCSP Gatewayはミラー対応であり、VIPを必要としません。

    下のサンプルリファレンスアーキテクチャ図には、アクティブまたはプライマリリージョンにおける高可用性と、プライマリリージョンが利用不可である場合の別の AWS リージョンへの災害復旧が含まれます。 

    図 14: HealthShare AWS リファレンスアーキテクチャ図 – 物理アーキテクチャ

    さらに、次の図は、関連するインストール済みのエンドユーザ向けのソフトウェア製品、接続要件と手法、およびそれぞれの機能的な目的で、より論理的なアーキテクチャを示しています。

    図 15: HealthShare AWS リファレンスアーキテクチャ図 – 論理アーキテクチャ

    0
    0 1008
    記事 Toshihiko Minamoto · 8月 17, 2020 25m read

    この記事では、スナップショットを使用したソリューションとの統合の例を使って、_外部バックアップ_による Caché のバックアップ方法を紹介します。 このところ私が目にするソリューションの大半は、Linux の VMware にデプロイされているため、この記事の大半では、例として、ソリューションが VMware スナップショットテクノロジーをどのように統合しているかを説明しています。

    Caché バックアップ - すぐ使えますか?

    Caché をインストールすると、Caché データベースを中断せずにバックアップできる Caché オンラインバックアップが含まれています。 しかし、システムがスケールアップするにつれ、より効率的なバックアップソリューションを検討する必要があります。 Caché データベースを含み、システムをバックアップするには、スナップショットテクノロジーに統合された_外部バックアップ_をお勧めします。

    外部バックアップに関して特別な考慮事項はありますか?

    詳しい内容は外部バックアップのオンラインドキュメンテーションに説明されていますが、 主な考慮事項は次のとおりです。

    「スナップショットの整合性を確保するために、スナップショットが作成される間、Caché はデータベースへの書き込みをfreezeする方法を提供しています。 スナップショットの作成中は、データベースファイルへの物理的な書き込みのみがfreezeされるため、ユーザーは中断されることなくメモリ内で更新を実行し続けることができます。」

    また、仮想化されたシステム上でのスナップショットプロセスの一部によって、バックアップされている VM にスタンタイムと呼ばれる短い無応答状態が発生することにも注意してください。 通常は 1 秒未満であるため、ユーザーが気付いたり、システムの動作に影響を与えたりすることはありませんが、状況によってはこの無応答状態が長引くことがあります。 無応答状態が Caché データベースミラーリングの QoS タイムアウトより長引く場合、バックアップノードはプライマリに障害が発生したとみなし、フェイルオーバーします。 この記事の後の方で、ミラーリング QoS タイムアウトを変更する必要がある場合に、スタンタイムをどのように確認できるかについて説明します。


    [InterSystems データプラットフォームとパフォーマンスに関する他の連載記事のリストはこちらにあります。](https://jp.community.intersystems.com/node/477596/)

    この記事では、Caché オンラインドキュメンテーション『Backup and Restore Guide(バックアップと復元ガイド)』も確認する必要があります。


    バックアップの選択肢

    最小限のバックアップソリューション - Caché Online Backup

    ほかのソリューションがない場合は、ダウンタイム無しでバックアップを行えるこのソリューションが InterSystems データプラットフォームに同梱されています。 _Caché オンラインバックアップ_は、Caché データベースファイルのみをバックアップするもので、データに割り当てられたデータベースのすべてのブロックをキャプチャし、出力をシーケンシャルファイルに書き込みます。 Caché Online Backup は累積バックアップと増分バックアップをサポートしています。

    VMware の文脈では、Caché Online Backup はゲスト内で発生するバックアップソリューションです。 ほかのゲスト内ソリューションと同様に、Caché Online Backup の動作は、アプリケーションが仮想化されていようが、ホストで直接実行していようが、基本的に変わりません。 Caché Online Backup は、システムバックアップと連携しながら Caché のオンラインバックアップ出力ファイルを、アプリケーションが使用しているその他すべてのファイルシステムとともに、バックアップメディアにコピーします。 最小限のシステムバックアップには、インストールディレクトリ、ジャーナルおよび代替ジャーナルディレクトリ、アプリケーションファイル、およびアプリケーションが使用する外部ファイルを含むすべてのディレクトリを含める必要があります。

    Caché Online Backup は、Caché データベースやアドホックバックアップのみをバックアップする低コストのソリューションを実装したいと考えている小規模サイト向けのエントリレベルのアプローチとして捉えてください。ミラーリングをセットアップする際のバックアップなどに役立てられます。 しかし、データベースのサイズが増加したり、Caché が顧客のデータランドスケープの一部でしかない場合は、_外部バックアップ_にスナップショットテクノロジーとサードパーティ製ユーティリティを合わせたソリューションがベストプラクティスとして推奨されます。非データベースファイルのバックアップ、より高速な復旧時間、エンタープライズ全体のデータビュー、より優れたカタログと管理用ツールなど、さまざまなメリットが得られます。


    推奨されるバックアップソリューション - 外部バックアップ

    VMware を例として使用します。VMware で仮想化すると、VM 全体を保護するための追加機能と選択肢が追加されます。 ソリューションの仮想化が完了した時点で、オペレーティングシステム、アプリケーション、データを含むシステムを .vmdk(とその他の)ファイル内に効果的にカプセル化したことになります。 これらのファイルの管理は非常に簡単で、必要となった場合にはシステム全体の復旧に使用できるため、オペレーティングシステム、ドライバ、サードパーティ製アプリケーション、データベースとデータベースファイルなどのコンポーネントを個別に復旧して構成する必要のある物理システムで同じような状況が発生した場合とは大きく異なります。


    # VMware のスナップショット

    VMware の vSphere Data Protection(VDP)や、Veeam や Commvault などのサードパーティ製バックアップソリューションでは、VMware 仮想マシンスナップショットを使用してバックアップを作成しています。 VMware スナップショットの概要を説明しますが、詳細については、VMware ドキュメンテーションを参照してください。

    スナップショットは VM 全体に適用されるものであり、オペレーティングシステムとすべてのアプリケーションまたはデータベースエンジンはスナップショットが発生していることを認識しないということに注意してください。 また、次のことにも注意してください。

    VMware スナップショット自体はバックアップではありません!

    スナップショットは、バックアップソフトウェアによるバックアップの作成を_可能にします_が、スナップショット自体はバックアップではありません。

    VDP とサードパーティ製バックアップソリューションは、バックアップアプリケーションとともに VMware スナップショットプロセスを使用して、スナップショットの作成と、非常に重要となるその削除を管理します。 おおまかに見ると、VMware スナップショットを使用した外部バックアップのイベントのプロセスと順序は次のとおりです。

    • サードパーティ製バックアップソフトウェアは ESXi ホストに対し、VMware スナップショットをトリガーするように要求します。
    • VM の .vmdk ファイルは読み取り専用状態となり、各 VM の .vmdk ファイルに子 vmdk 差分ファイルが作成されます。
    • 書き込み時コピーを使用して、VM へのすべての変更が差分ファイルに書き込まれます。 すべての読み取りは、最初に差分ファイルから行われます。
    • バックアップソフトウェアは、読み取り専用の親 .vmdk ファイルからバックアップターゲットへのコピーを管理します。
    • バックアップが完了すると、スナップショットがコミットされます(VM ディスクは、親に書き込まれた差分ファイルのブロックの書き込みと更新を再開します)。
    • VMware スナップショットが削除されます。

    バックアップソリューションは、変更ブロック追跡(CBT)などのほかの機能も使用し、増分または累積バックアップを可能にして速度と効率性(容量節約において特に重要)を実現します。また、一般的に、データの重複解除や圧縮、スケジューリング、整合性チェックなどで IP アドレスが更新された VM のマウント、VM とファイルレベルの完全復元、およびカタログ管理などの重要な機能性も追加します。

    適切に管理されていない、または長期間実行されたままの VMware スナップショットは、ストレージを過剰に消費し(データの変更量が増えるにつれ、差分ファイルが増加し続けるため)、VM の速度を低下させてしまう可能性があります。

    本番インスタンスで手動スナップショットを実行する前に、十分に検討する必要があります。 なぜ実行しようとしているのか、 スナップショットが作成された時間に戻すとどうなるか、 作成とロールバック間のすべてのアプリケーショントランザクションはどうなるか、といったことを検討してください。

    バックアップソフトウェアがスナップショットを作成し、削除しても問題ありません。 スナップショットの存続期間は、短期間であるものなのです。 また、バックアップ戦略においては、ユーザーやパフォーマンスへの影響をさらに最小限に抑えられるように、システムの使用率が低い時間を選ぶことも重要です。

    スナップショットに関する Caché データベースの考慮事項

    スナップショットを作成する前に、保留中のすべての書き込みがコミットされ、データベースが一貫した状態になるように データベースを静止させる必要があります。 Caché は、スナップショットが作成される間、データベースへの書き込みをコミットして短時間フリーズ(停止)するメソッドと API を提供しています。 こうすることで、スナップショットの作成中は、データベースファイルへの物理的な書き込みのみがフリーズされるため、ユーザーは中断されることなくメモリ内で更新を実行し続けることができます。 スナップショットがトリガーされると、データベースの書き込みが再開し、バックアップはバックアップメディアへのデータのコピーを続行します。 フリーズからの復旧は、非常に短時間(数秒)で発生します。

    書き込みを一時停止するのに加え、Caché Freeze は、ジャーナルファイルの切り替えとジャーナルへのバックアップマーカーの書き込みも処理します。 ジャーナルファイルは、物理データベースの書き込みがフリーズしている間、通常通りに書き込みを続けます。 物理データベースの書き込みがフリーズしている間にシステムがクラッシュした場合、データは、起動時に、通常通りジャーナルから復元されます。

    以下の図は、整合性のあるデータベースイメージを使用してバックアップを作成するための、VMware スナップショットを使用した Freeze と Thaw の手順を示しています。


    ![](https://community.intersystems.com/sites/default/files/inline/images/snapshot-timeline.png "スナップショットのタイムライン")

    Freeze から Thaw の時間が短いところに注目してください。読み取り専用の親をバックアップターゲットにコピーする時間でなく、スナップショットを作成する時間のみです。


    Caché の Freeze と Thaw の統合

    vSphere では、スナップショット作成のいずれか側で自動的にスクリプトを呼び出すことができ、この時に、Caché Freeze と Thaw が呼び出されます。 注意: この機能が正しく機能するために、ESXi ホストは _VMware ツール_を介してゲストオペレーティングシステムにディスクを静止するように要求します。

    VMware ツールは、ゲストオペレーティングシステムにインストールされている必要があります。

    スクリプトは、厳密な命名規則と場所のルールに準じる必要があります。 ファイルの権限も設定されていなければなりません。 以下は、Linux の VMware の場合のスクリプト名です。

    # /usr/sbin/pre-freeze-script
    # /usr/sbin/post-thaw-script
    

    以下は、InterSystems のチームが内部テストラボインスタンスに対して、Veeam バックアップで使用する Freeze と Thaw のスクリプト例ですが、ほかのソリューションでも動作するはずです。 これらの例は、vSphere 6 と Red Hat 7 で検証され、使用されています。

    これらのスクリプトは例として使用でき、方法を示すものではありますが、各自の環境で必ず検証してください!

    Freeze 前スクリプトの例:

    #!/bin/sh
    #
    # Script called by VMWare immediately prior to snapshot for backup.
    # Tested on Red Hat 7.2
    #
    
    LOGDIR=/var/log
    SNAPLOG=$LOGDIR/snapshot.log
    
    echo >> $SNAPLOG
    echo "`date`: Pre freeze script started" >> $SNAPLOG
    exit_code=0
    
    # Only for running instances
    for INST in `ccontrol qall 2>/dev/null | tail -n +3 | grep '^up' | cut -c5-  | awk '{print $1}'`; do
    
        echo "`date`: Attempting to freeze $INST" >> $SNAPLOG
    
        # Detailed instances specific log    
        LOGFILE=$LOGDIR/$INST-pre_post.log
    
        # Freeze
        csession $INST -U '%SYS' "##Class(Backup.General).ExternalFreeze(\"$LOGFILE\",,,,,,1800)" >> $SNAPLOG $
        status=$?
    
        case $status in
            5) echo "`date`:   $INST IS FROZEN" >> $SNAPLOG
               ;;
            3) echo "`date`:   $INST FREEZE FAILED" >> $SNAPLOG
               logger -p user.err "freeze of $INST failed"
               exit_code=1
               ;;
            *) echo "`date`:   ERROR: Unknown status code: $status" >> $SNAPLOG
               logger -p user.err "ERROR when freezing $INST"
               exit_code=1
               ;;
        esac
        echo "`date`:   Completed freeze of $INST" >> $SNAPLOG
    done
    
    echo "`date`: Pre freeze script finished" >> $SNAPLOG
    exit $exit_code
    

    Thaw スクリプトの例:

    #!/bin/sh
    #
    # Script called by VMWare immediately after backup snapshot has been created
    # Tested on Red Hat 7.2
    #
    
    LOGDIR=/var/log
    SNAPLOG=$LOGDIR/snapshot.log
    
    echo >> $SNAPLOG
    echo "`date`: Post thaw script started" >> $SNAPLOG
    exit_code=0
    
    if [ -d "$LOGDIR" ]; then
    
        # Only for running instances    
        for INST in `ccontrol qall 2>/dev/null | tail -n +3 | grep '^up' | cut -c5-  | awk '{print $1}'`; do
    
            echo "`date`: Attempting to thaw $INST" >> $SNAPLOG
    
            # Detailed instances specific log
            LOGFILE=$LOGDIR/$INST-pre_post.log
    
            # Thaw
            csession $INST -U%SYS "##Class(Backup.General).ExternalThaw(\"$LOGFILE\")" >> $SNAPLOG 2>&1
            status=$?
    
            case $status in
                5) echo "`date`:   $INST IS THAWED" >> $SNAPLOG
                   csession $INST -U%SYS "##Class(Backup.General).ExternalSetHistory(\"$LOGFILE\")" >> $SNAPLOG$
                   ;;
                3) echo "`date`:   $INST THAW FAILED" >> $SNAPLOG
                   logger -p user.err "thaw of $INST failed"
                   exit_code=1
                   ;;
                *) echo "`date`:   ERROR: Unknown status code: $status" >> $SNAPLOG
                   logger -p user.err "ERROR when thawing $INST"
                   exit_code=1
                   ;;
            esac
            echo "`date`:   Completed thaw of $INST" >> $SNAPLOG
        done
    fi
    
    echo "`date`: Post thaw script finished" >> $SNAPLOG
    exit $exit_code
    

    権限の設定を必ず行ってください:

    # sudo chown root.root /usr/sbin/pre-freeze-script /usr/sbin/post-thaw-script
    # sudo chmod 0700 /usr/sbin/pre-freeze-script /usr/sbin/post-thaw-script
    

    Freeze と Thaw のテスト

    スクリプトが正しく動作することをテストするには、VM でスナップショットを手動で実行し、スクリプトの出力を確認することができます。 以下のスクリーンショットは、[Take VM Snapshot(VM スナップショットの作成)]ダイアログとオプションを示します。

    選択解除- [Snapshot the virtual machine's memory(仮想マシンのメモリをスナップショットする)]

    選択 - [Quiesce guest file system (Needs VMware Tools installed)(ゲストファイルシステムを静止する: VMware ツールのインストールが必要)]チェックボックス。スナップショットを作成する際にゲストオペレーティングシステムで実行中のプロセスを一時停止し、ファイルシステムのコンテンツが既知の整合性のある状態を保つようにします。

    重要! テストの後、スナップショットを必ず削除してください!!!!

    スナップショットが作成される際に、静止フラグが真であり、仮想マシンがオンである場合、VMware ツールによって仮想マシンのファイルシステムが静止されます。 ファイルシステムの静止は、ディスク上のデータをバックアップに適した状態にするプロセスです。 このプロセスには、オペレーティングシステムのメモリ内キャッシュからディスクへのダーティバッファのフラッシュといった操作が含まれる場合があります。

    以下の出力は、操作の一環としてスナップショットを含むバックアップを実行した後に、上記の Freeze/Thaw スクリプトの例で設定された $SNAPSHOT ログファイルのコンテンツを示しています。

    Wed Jan  4 16:30:35 EST 2017: Pre freeze script started
    Wed Jan  4 16:30:35 EST 2017: Attempting to freeze H20152
    Wed Jan  4 16:30:36 EST 2017:   H20152 IS FROZEN
    Wed Jan  4 16:30:36 EST 2017:   Completed freeze of H20152
    Wed Jan  4 16:30:36 EST 2017: Pre freeze script finished
    
    Wed Jan  4 16:30:41 EST 2017: Post thaw script started
    Wed Jan  4 16:30:41 EST 2017: Attempting to thaw H20152
    Wed Jan  4 16:30:42 EST 2017:   H20152 IS THAWED
    Wed Jan  4 16:30:42 EST 2017:   Completed thaw of H20152
    Wed Jan  4 16:30:42 EST 2017: Post thaw script finished
    

    この例では、Freeze から Thaw までに 6 秒経過していることがわかります(16:30:36~16:30:42)。 この間、ユーザー操作は中断されていません。 _独自のシステムからメトリックを収集する必要があります_が、背景としては、この例は、IO ボトルネックがなく、平均 200 万 Glorefs/秒、17 万 Gloupds/秒、および毎秒あたり平均 1,100 個の物理読み取りと書き込みデーモン 1 サイクル当たりの書き込み 3,000 個の BM でアプリケーションベンチマークを実行しているシステムから得たものです。

    メモリはスナップショットの一部ではないため、再起動すると、VM は再起動して復元されることに注意してください。 データベースファイルは整合性のある状態です。 バックアップを「再開」するのではなく、ファイルを既知の時点の状態にする必要があります。 その後で、ファイルが復元されたら、ジャーナルと、アプリケーションとトランザクションの整合性に必要なその他の復元手順をロールフォワードできます。

    その他のデータ保護を追加するには、ジャーナルの切り替えを単独で実行することもでき、ジャーナルは、たとえば 1 時間ごとに別の場所にバックアップまたは複製されます。

    以下は、上記の Freeze と Thaw スクリプトの $LOGFILE の出力で、スナップショットのジャーナルの詳細を示しています。

    01/04/2017 16:30:35: Backup.General.ExternalFreeze: Suspending system
    
    Journal file switched to:
    /trak/jnl/jrnpri/h20152/H20152_20170104.011
    01/04/2017 16:30:35: Backup.General.ExternalFreeze: Start a journal restore for this backup with journal file: /trak/jnl/jrnpri/h20152/H20152_20170104.011
    
    Journal marker set at
    offset 197192 of /trak/jnl/jrnpri/h20152/H20152_20170104.011
    01/04/2017 16:30:36: Backup.General.ExternalFreeze: System suspended
    01/04/2017 16:30:41: Backup.General.ExternalThaw: Resuming system
    01/04/2017 16:30:42: Backup.General.ExternalThaw: System resumed
    

    VM スタンタイム

    VM スナップショットの作成時、バックアップが完了してスナップショットがコミットされた後、VM を短時間フリーズする必要があります。 この短時間のフリーズは、VM のスタンと呼ばれることがよくあります。 スタンタイムについてよく説明されたブログ記事は、こちらをご覧ください。 以下に要約した内容を示し、Caché データベースの考慮事項に照らして説明します。

    スタンタイムに関する記事より: 「VM スナップショットを作成するには、(i)デバイスの状態をディスクにシリアル化し、(ii)現在実行中のディスクを閉じてスナップショットポイントを作成するために、VM は「スタン」されます(無応答状態になります)。… 統合時、VM は、ディスクを閉じて統合に最適な状態にするために、「スタン」されます。」

    スタンタイムは、通常数百ミリ秒です。ただし、コミットフェーズ中にディスクの書き込みアクティビティが非常に高い場合には、スタンタイムが数秒に長引くことがあります。

    VM が、Caché データベースミラーリングに参加するプライマリまたはバックアップメンバーであり、スタンタイムがミラーのサービス品質(QoS)タイムアウトより長引く場合、ミラーはプライマリ VM に失敗としてレポートし、ミラーのテイクオーバーを開始します。

    2018 年 3 月更新: 同僚の Pter Greskoff から指摘されました。バックアップミラーメンバーは、VM スタン中またはプライマリミラーメンバーが利用不可である場合には、QoS タイムアウトの半分超という短時間でフェイルオーバーを開始することがあります。

    QoS の考慮事項とフェイルオーバーのシナリオの詳細については、「Quality of Service Timeout Guide for Mirroring(ミラーリングのサービス品質タイムアウトに関するガイド)」という素晴らしい記事を参照できますが、以下に、VM スタンタイムと QoS に関する要約を示します。

    バックアップミラーが、QoS タイムアウトの半分の時間内にプライマリミラーからメッセージを受信しない場合、ミラーはプライマリが動作しているかどうかを確認するメッセージを送信します。 それからバックアップはさらに QoS タイムアウトの半分の時間、プライマリマシンからの応答を待機します。 プライマリからの応答がない場合、プライマリは停止しているとみなされ、バックアップがテイクオーバーします。

    ビジー状態のシステムでは、プライマリからバックアップミラーにジャーナルが継続的に送信されるため、バックアップはプライマリが動作しているかどうかを確認する必要はありません。 ただし、バックアップが発生している可能性が高い静止時間中、アプリケーションがアイドル状態である場合、QoS タイムアウトの半分以上の時間、プライマリとバックアップミラーの間でメッセージのやり取りがない可能性があります。

    これは Peter が提示した例ですが、このタイムフレームを、QoS タイムアウトが :08 秒で VM スタンタイムが :07 秒のアイドル状態にあるシステムで考えてみましょう。

    • :00 プライマリは キープライブでアービターに ping し、アービターは即座に応答
    • :01 バックアップメンバーはプライマリにキープアライブを送信し、プライマリは即座に応答
    • :02
    • :03 VM スタンの開始
    • :04 プライマリはアービターにキープアライブを送信しようとするが、スタンが完了するまで到達しない
    • :05 QoS の半分の時間が経過したため、バックアップメンバーはプライマリに ping を送信
    • :06
    • :07
    • :08 QoS タイムアウトが過ぎてもアービターはプライマリからの応答を受信しないため、接続を閉じる
    • :09 バックアップはプライマリからの応答を受信していないため、接続が失われたことをアービターに確認し、テイクオーバーを開始
    • :10 VM スタンが終了するが、間に合わない!!

    上記のリンク先の記事にある「Pitfalls and Concerns when Configuring your Quality of Service Timeout(サービス品質タイムアウトを構成する際の落とし穴と考慮事項)」のセクションもお読みください。QoS を必要な期間だけ確保する際のバランスが説明されています。 QoS が長すぎる場合、特に 30 秒を超える場合も問題を引き起こす可能性があります。

    2018 年 3 月更新の終了:

    ミラーリングの QoS の詳細については、ドキュメンテーションを参照してください。

    スタンタイムを最小限に抑える戦略には、データベースアクティビティが低い場合にバックアップを実行することと、ストレージを十分にセットアップすることが挙げられます。

    上記で述べたように、スナップショットの作成時に指定できるオプションがいくつかあります。その 1 つは、スナップショットにメモリ状態を含めることです。_Caché データベースのバックアップにはメモリ状態は不要である_ことに注意してください。 メモリフラグが設定されている場合、仮想マシンの内部状態のダンプがスナップショットに含められます。 メモリスナップショットの作成には、もっと長い時間がかかります。 メモリスナップショットは、実行中の仮想マシンの状態を、スナップショットが作成された時の状態に戻すために使用されます。 これは、データベースファイルのバックアップには必要ありません。

    メモリスナップショットを作成する場合、仮想マシンの状態全体が停止しますが、スタンタイムはさまざまです。

    前述のとおり、バックアップでは、整合性のある使用可能なバックアップを保証するために、手動スナップショットで、またはバックアップソフトウェアによって、静止フラグを true に設定する必要があります。

    VMware ログでスタンタイムを確認

    ESXi 5.0 より、スナップショットのスタンタイムは、以下のようなメッセージで仮想マシンのログファイル(vmware.log)に記録されます。

    2017-01-04T22:15:58.846Z| vcpu-0| I125: Checkpoint_Unstun: vm stopped for 38123 us

    スタンタイムはミリ秒単位であるため、上記の例にある 38123 us は 38123/1,000,000 秒または 0.038 秒となります。

    スタンタイムが許容範囲内であることを確認するため、またはスタンタイムが長引くせいで問題が発生していると思われる場合にトラブルシューティングを実施するため、関心のある VM のフォルダから vmware.log ファイルをダウンロードして確認することができます。 ダウンロードしたら、以下の Linux コマンドの例を使うなどして、ログを抽出しソートできます。

    vmware.log ファイルのダウンロード例

    vSphere 管理コンソールまたは ESXi ホストコマンドラインから VMware サポートバンドルを作成するなど、サポートログのダウンロードにはいくつかの方法があります。 全詳細については VMware ドキュメンテーションを参照できますが、以下は、スタンタイムを確認できるように、vmware.log ファイルを含む非常に小さなサポートバンドルを作成して収集する簡単な方法です。

    VM ファイルが配置されているディレクトリの正式な名称が必要となります。 ssh を使用してデータベース VM が実行している ESXi ホストにログオンし、コマンド vim-cmd vmsvc/getallvms を使用して vmx ファイルとそれに関連付けられた一意の正式名称を一覧表示します。

    たとえば、この記事で使用されているデータベース VM の正式な名称は次のように出力されます。 26 vsan-tc2016-db1 [vsanDatastore] e2fe4e58-dbd1-5e79-e3e2-246e9613a6f0/vsan-tc2016-db1.vmx rhel7_64Guest vmx-11

    次に、ログファイルのみを収集してバンドルするコマンドを実行します。
    vm-support -a VirtualMachines:logs

    コマンドによって、以下の例のように、サポートバンドルの場所が表示されます。 To see the files collected, check '/vmfs/volumes/datastore1 (3)/esx-esxvsan4.iscinternal.com-2016-12-30--07.19-9235879.tgz'.

    これで、sftp を使用してファイルをホストから転送し、さらに処理して確認できるようになりました。

    この例では、サポートバンドルを解凍した後に、データベース VM の正式名称に対応するパスに移動します。 この場合は、 <bundle name>/vmfs/volumes/<host long name>/e2fe4e58-dbd1-5e79-e3e2-246e9613a6f0 というパスになります。

    そこで番号付きの複数のログファイルが表示されます。最新のログファイルには番号は付きません。つまり、vmware.log と示されます。 ログはわずか数百 KB ですが、たくさんの情報が記載されています。ただし、注目するのは stun/unstun の時間のみで、grep を使うと簡単に見つけ出すことができます。 次は、その記載例です。

    $ grep Unstun vmware.log
    2017-01-04T21:30:19.662Z| vcpu-0| I125: Checkpoint_Unstun: vm stopped for 1091706 us
    --- 
    2017-01-04T22:15:58.846Z| vcpu-0| I125: Checkpoint_Unstun: vm stopped for 38123 us
    2017-01-04T22:15:59.573Z| vcpu-0| I125: Checkpoint_Unstun: vm stopped for 298346 us
    2017-01-04T22:16:03.672Z| vcpu-0| I125: Checkpoint_Unstun: vm stopped for 301099 us
    2017-01-04T22:16:06.471Z| vcpu-0| I125: Checkpoint_Unstun: vm stopped for 341616 us
    2017-01-04T22:16:24.813Z| vcpu-0| I125: Checkpoint_Unstun: vm stopped for 264392 us
    2017-01-04T22:16:30.921Z| vcpu-0| I125: Checkpoint_Unstun: vm stopped for 221633 us
    

    この例では、2つのグループのスタンタイムを確認できます。1 つはスナップショップ作成時、そしてもう 1 つは、各ディスクのスナップショットが削除/統合された 45 分後(バックアップソフトウェアが読み取り専用 vmx ファイルのコピーを完了したとき)のものです。 上記の例では、最初のスタンタイムは 1 秒をわずかに上回っていますが、ほとんどのスタンタイムは 1 秒未満であることがわかります。

    短時間のスタンタイムは、エンドユーザーが気付くものではありませんが、 Caché データベースミラーリングなどのシステムプロセスは、インスタンスが「アライブ」であるかどうかを継続的に監視しています。 スタンタイムがミラーリング QoS タイムアウトを超える場合、ノードは接続不可能であり「停止」状態とみなされ、フェイルオーバーがトリガーされます。

    ヒント: すべてのログを確認するか、トラブルシューティングを実行する場合には、grep コマンドが役立ちます。すべての vmware*.log ファイルに対して grep を使用し、異常値、またはスタンタイムが QoS タイムアウトに達しているインスタンスを探してください。 以下のコマンドは、出力をパイプ処理し、awk で書式設定しています。

    grep Unstun vmware* | awk '{ printf ("%'"'"'d", $8)} {print " ---" $0}' | sort -nr


    最後に

    通常稼働時に定期的にシステムを監視し、スタンタイムと、ミラーリングなどの HA 向けの QoS タイムアウトへの影響を理解しておく必要があります。 前述のとおり、スタンタイムまたはスタン解除タイムを最小限に抑える戦略には、データベースとストレージのアクティビティが低い場合にバックアップを実行することと、ストレージを十分にセットアップすることが挙げられます。 常時監視の場合、ログは、VMware ログのインサイトなどのツールを使用して処理できるかもしれません。

    InterSystems データプラットフォームのバックアップと復元操作について、今後の記事で再度取り上げる予定です。 それまでは、システムのワークフローに基づいたコメントや提案がある場合は、以下のコメントセクションに投稿してください。

    0
    0 714
    記事 Toshihiko Minamoto · 8月 11, 2020 44m read

    Google Cloud Platform(GCP)は、IaaS(サービスとしてのインフラストラクチャ)向けの機能性豊かな環境をクラウドとして提供しています。最新の InterSystems IRIS データプラットフォームなど、InterSystems の全製品に完全に対応していますが、 あらゆるプラットフォームやデプロイメントモデルと同様に、パフォーマンス、可用性、運用、管理手順などの環境に関わるすべての側面が正しく機能するように注意を払う必要があります。 この記事では、こういった各分野の詳細について説明しています。

    以下の概要と詳細は Google が提供しているものであり、こちらから参照できます。

    概要

    GCP リソース

    GCP は、コンピュータやハードドライブといった一連の物理アセットと、仮想マシン(VM)といった仮想リソースから構成されており、世界中の Google データセンターに保管されています。 それぞれのデータセンターの場所は 1 つのグローバルリージョンにあります。 そして、それぞれのリージョンはゾーンのコレクションであり、これらのコレクションはリージョン内で互いに分離されています。 各ゾーンには、文字識別子とリージョン名を合わせた名前が付けられています。

    このようなリソースの分散には、障害発生に備えて冗長性を得たり、リソースをクライアントに近い場所に配置することでレイテンシを軽減できたりなど、さまざまなメリットがあります。 また、このような分散によって、リソースをどのように合わせて使用できるかに関するルールも導入することができます。

    GCP リソースへのアクセス

    クラウドコンピューティングでは、物理的なハードウェアとソフトウェアがサービスとなります。 これらは基盤リソースへのアクセスを提供するサービスです。 InterSystems IRIS ベースのアプリケーションを GCP で開発する場合、必要としているインフラストラクチャを得られるようにこれらのサービスを組み合わせ、コードを追加することで、構成しようとしているシナリオを実現することができます。 利用可能なサービスの詳細は、こちらを参照してください。

    プロジェクト

    割り当てて使用する GCP は、プロジェクトに属するものである必要があります。 プロジェクトは、設定、権限、およびアプリケーションを説明するその他のメタデータで構成されます。 単一のプロジェクト内のリソースは、リージョンとゾーンのルールに従って、内部ネットワークを介した通信などによって簡単に連携することができます。 各プロジェクトに含まれるリソースは、プロジェクトの境界で分離されたままであるため、外部ネットワーク接続を介してしか相互接続することはできません。

    サービスとの対話

    GCP でサービスとリソースを操作するには、基本的に 3 つの方法があります。

    コンソール

    Google Cloud Platform Console は、Web ベースのグラフィカルユーザーインターフェースを提供しており、ユーザーは、それを使用して GCP のプロジェクトとリソースを管理することができます。 GCP Console を使用する場合、新規プロジェクトを作成するか既存のプロジェクトを選択すると、作成するリソースをプロジェクトの文脈で使用できます。 複数のプロジェクトを作成できるため、ユーザーに意味のある方法で、プロジェクトを使用して分類することができます。 たとえば、リソースにアクセスできるユーザーを特定のチームメンバーに限定する場合は新しいプロジェクトを開始し、すべてのチームメンバーは引き続き別のプロジェクトのリソースにアクセスすることができます。

    コマンドラインインターフェース

    ターミナルウィンドウで作業する場合、Google Cloud SDK の gcloud コマンドラインツールを使用して、必要なコマンドにアクセスすることができます。 gcloud ツールでは、開発ワークフローと GCP リソースの両方の管理を行えます。 gcloud のリファレンスについては、こちらをご覧ください。

    GCP には、Cloud Shell という、ブラウザで使用する GCP 向けのインタラクティブシェル環境も用意されています。 Cloud Shell には、GCP Console からアクセスできます。 以下に、Cloud Shell の特徴を示します。

  • 一時的な Compute Engine 仮想マシンインスタンス
  • Web ブラウザからインスタンスへのコマンドラインアクセス
  • ビルトインのコードエディタ
  • 5 GB の永続ディスクストレージ
  • プレインストールされた Google Cloud SDK およびその他のツール
  • Java、Go、Python、Node.js、PHP、Ruby、および .NET 言語のサポート
  • Web プレビュー機能
  • GCP Console プロジェクトとリソースへのアクセスの組み込み認証
  • クライアントライブラリ

    Cloud SDK には、リソースを簡単に作成して管理できるクライアントライブラリが含まれています。 GCP クライアントライブラリは、主に 2 つの目的で API を公開しています。

    • アプリ API はサービスへのアクセスを提供します。 アプリ API は、Node.js や Python といったサポート対象の言語用に最適化されています。 ライブラリは、サービスのメタファーを軸に設計されているため、ユーザーはサービスをより自然に操作し、より少ないボイラープレートコードを記述することができます。 ライブラリは、認証と承認のヘルパーも提供しています。 詳細は、こちらを参照してください。
    • 管理 API は、リソース管理機能を提供します。 たとえば、独自の自動化ツールを構築する場合、管理 API を使用できます。

    また、Google API クライアントライブラリを使用して、Google マップ、Google ドライブ、および YouTube といった製品用の API にアクセスすることもできます。 GCP クライアントライブラリの詳細は、こちらを参照してください。

    InterSystems IRIS サンプルアーキテクチャ

    この記事の一部として、アプリケーション固有のデプロイメントの出発点として、GCP 向けの InterSystems IRIS サンプルデプロイメントを提供しています。 デプロイメントの可能性には多数ありますが、これらのサンプルをガイドラインとしてご利用ください。 このリファレンスアーキテクチャでは、規模の小さなデプロイメントから非常にスケーラブルなワークロードまで、コンピューティングとデータの両方の要件に対応する非常に堅牢なデプロイメントオプションを紹介しています。

    このドキュメントでは、高可用性と災害復旧に関するオプション、そしてその他の推奨システム運用について説明しています。 組織の標準的なやり方やセキュリティポリシーに応じて変更してください。

    InterSystems では、ユーザー固有のアプリケーションについて、GCP ベースの InterSystems IRIS デプロイメントに関するご相談またはご質問をお受けしています。


    サンプルリファレンスアーキテクチャ

    以下のサンプルアーキテクチャでは、キャパシティと機能を高めるさまざまな構成を提供します。 小規模な開発、本番、大規模な本番、およびシャードクラスタを使用した本番を検討してください。開発作業用の規模の小さな構成から、ゾーン全体に適した高可用性とマルチリージョン災害復旧を備えた非常にスケーラブルなソリューションへと構成が増大していく様子を確認できます。 さらに、SQL クエリの超並列処理によるハイブリッドワークロードに対する InterSystems IRIS データプラットフォームの新しいシャーディング機能を使用するサンプルアーキテクチャも用意されています。

     

    小規模開発の構成

    この例では、最小構成を使用して、開発者数最大10 人と 100 GB のデータに対応できる小規模な開発環境を示します。 仮想マシンのインスタンスの種類を変更し、永続ディスクのストレージを適切に増加するだけで、より多くの開発者とデータ量を簡単にサポートできるようになります。

    これは、開発作業をサポートし、InterSystems IRIS の機能性と、必要であれば Docker コンテナの構築とオーケストレーションに慣れる上で十分な構成です。 小規模な構成では通常、データベースミラーリングによる高可用性を使用することはありませんが、高可用性が必要な場合にはいつでも追加することができます。

    小規模な構成のサンプル図

    以下の図 2.1.1-a のサンプル図は、図 2.1.1-b のリソーステーブルを示します。 含まれているゲートウェイは単なる例であり、組織の標準的なネットワークに合わせて調整できます。

    以下の GCP VPC プロジェクト内のリソースは、最低限の小規模構成としてプロビジョニングされています。 GCP リソースは必要に応じて追加または削除することができます。

    小規模構成の GCP リソース

    以下のテーブルは、小規模構成 GCP リソースのサンプルを示しています。

    VPC への不要なアクセスを防止するには、適切なネットワークセキュリティとファイアウォールのルールを検討する必要があります。 Google は、これに取り掛かるためのネットワークセキュリティに関するベストプラクティスをこちらで提供しています。

    注意: VM インスタンスが GCP サービスにアクセスするには、パブリック IP アドレスが必要です。 このやり方では懸念を生じてしまう可能性がありますが、Google は、ファイアウォールのルールを使用して、これらの VM インスタンスへの受信トラフィックを制限することを推奨しています。

    セキュリティポリシーで VM インスタンスが完全に内部化されていることが要求されている場合、ネットワークと対応するルートに手動で NAT プロキシを設定し、内部インスタンスがインターネットにアクセスできるようにする必要があります。 SSH を使用して、完全に内部化された VM インスタンスを直接接続することはできないことに注意しておくことが重要です。 そのような内部マシンに接続するには、外部 IP アドレスを持つ踏み台インスタンスをセットアップしてから、それを通過するトンネルをセットアップする必要があります。 外部に面する VPC へのエントリポイントを提供する踏み台ホストをプロビジョニングすることができます。

    踏み台ホストの詳細は、こちらを参照してください。

    本番構成

    この例では、InterSystems IRIS データベースミラーリング機能を組み込んで高可用性と災害復旧をサポートする本番構成の例として、より大規模な構成を示しています。

    この構成には、自動フェイルオーバーを行うための、region-1 内で 2 つのゾーンに分割された InterSystems IRIS データベースサービスの同期ミラーペアと、GCP リージョン全体がオフラインになるという稀なイベントにおいて災害復旧を行うための、region-2 の 3 番目の DR 非同期ミラーメンバーが含まれます。

    InterSystems Arbiter と ICM サーバーは、回復力を得るために、別の 3 番目のゾーンにデプロイされています。 サンプルアーキテクチャには、Web 対応アプリケーションをサポートするためのオプションとして、一連の負荷分散された Web サーバーも含まれています。 InterSystems Gateway を備えたこれらの Web サーバーは、必要に応じて個別に拡張することができます。

    本番構成のサンプル図

    以下の図 2.2.1-a のサンプル図は、図 2.2.1-b のリソーステーブルを示します。 含まれているゲートウェイは単なる例であり、組織の標準的なネットワークに合わせて調整できます。

    以下の GCP VPC プロジェクト内のリソースは、シャードクラスタをサポートするための最低推奨事項として推奨されています。 GCP リソースは必要に応じて追加または削除することができます。

    本番構成の GCP リソース

    以下のテーブルは、本番構成 GCP リソースのサンプルを示しています。

    大規模な本番の構成

    この例では、InterSystems IRIS の機能を拡張することで、InterSystems Cache プロトコル(ECP)を使用したアプリケーションを導入してユーザーの大規模な水平スケーリングも提供できる、大規模な構成を示しています。 この例にはさらに高レベルの高可用性が含まれており、データベースインスタントのフェイルオーバーが発生した場合でも ECP クライアントがセッション情報を保持できるようになっています。 複数のリージョンにデプロイされた ECP ベースのアプリケーションサーバーとデータベースメンバーには、複数の GCP ゾーンが使用されています。 この構成では、毎秒数千万件のデータベースアクセスと数テラバイトのデータをサポートできます。

    大規模な本番構成のサンプル図

    図 2.3.1-a のサンプル図は、図 2.3.1-b のリソーステーブルを示します。 含まれているゲートウェイは単なる例であり、組織の標準的なネットワークに合わせて調整できます。

    この構成には、フェイルオーバーミラーペア、4 つ以上の ECP クライアント(アプリケーションサーバー)、およびアプリケーションサーバー当たり 1 つ以上の Web サーバーが含まれます。 フェイルオーバーデータベースミラーのペアは、同一のリージョン内で 2 つの異なる GCP ゾーンで分割されており、3 番目のゾーンに個別にデプロイされた InterSystems Arbiter と ICM サーバーでフォールトドメインの保護を確立し、さらなる回復力を備えています。

    災害復旧は、前の例と同様に、2 番目の GCP リージョンとゾーンに拡張されています。 複数の DR リージョンは、必要に応じて複数の DR 非同期ミラーメンバーターゲットと使用できます。

    以下の GCP VPC プロジェクト内のリソースは、大規模な本番デプロイメントをサポートするための最低推奨事項として推奨されています。 GCP リソースは必要に応じて追加または削除することができます。

    大規模な本番構成の GCP リソース

    以下のテーブルは、大規模な本番構成 GCP リソースのサンプルを示しています。

    InterSystems IRIS シャードクラスタを使用した本番構成

    この例では、SQL を使用したハイブリッドワークロード向けに水平スケーリングされた構成を示しています。InterSystems IRIS の新しいシャードクラスタ機能が含まれており、複数のシステムをまたぐ SQL クエリとテーブルの大規模な水平スケーリングを提供しています。 InterSystems IRIS のシャードクラスタとその機能の詳細については、この記事の後半で説明します。

    InterSystems IRIS シャードクラスタを使用した本番構成

    図 2.4.1-a のサンプル図は、図 2.4.1-b のリソーステーブルを示します。 含まれているゲートウェイは単なる例であり、組織の標準的なネットワークに合わせて調整できます。

    この構成には、データノードとして 4 つのミラーペアが含まれます。 それぞれのフェイルオーバーデータベースミラーのペアは、同一のリージョン内で 2 つの異なる GCP ゾーンで分割されており、3 番目のゾーンに個別にデプロイされた InterSystems Arbiter と ICM サーバーでフォールトドメインの保護を確立し、さらなる回復力を備えています。

    この構成では、クラスタ内のあらゆるデータノードからすべてのデータベースアクセスメソッドを利用することができます。 大規模な SQL テーブルのデータは、すべてのノード間で物理的に分割されているため、クエリ処理とデータ量の大規模な並列化が実現されます。 これらすべての機能を組み合わせることで、単一の InterSystems IRIS データプラットフォーム内で、新しいデータの取り込みと同時に大規模な分析 SQL クエリを実行するなど、あらゆる複雑なハイブリッドワークロードをサポートできるようになります。

    上の図と、下のテーブルの「リソースタイプ」列にある「Compute [Engine]」とは、このドキュメントのセクション 3.1 で説明されているとおり、GCP(仮想)サーバーインスタンスを表す GCP 用語です。 この記事の後半で説明するクラスタアーキテクチャでの「計算ノード」の使用を表したり暗示するものではありません。

    以下の GCP VPC プロジェクト内のリソースは、シャードクラスタをサポートするための最低推奨事項として推奨されています。 GCP リソースは必要に応じて追加または削除することができます。

    シャードクラスタを使用した本番構成の GCP リソース

    以下のテーブルは、シャードクラスタ構成 GCP リソースのサンプルを示しています。


    クラウドの基礎概念

    Google Cloud Platform(GCP)は、IaaS(サービスとしてのインフラストラクチャ)向けの機能性豊かなクラウド環境を提供しています。新しい InterSystems IRIS データプラットフォームによるコンテナベースの開発運用など、InterSystems の全製品に完全に対応していますが、 あらゆるプラットフォームやデプロイメントモデルと同様に、パフォーマンス、可用性、システム運用、高可用性、災害復旧、セキュリティ制御、およびその他の管理手順などの環境に関わるすべての側面が正しく機能するように注意を払う必要があります。 このドキュメントでは、Compute、Storage、および Networking という、すべてのクラウドデプロイメントの 3 つの主要コンポーネントについて説明します。

    Compute Engine(仮想マシン)

    GCP 内には、仮想 CPU とメモリの仕様と関連するストレージオプションを数多く備えた Compute Engine リソースで利用できるオプションがいくつかあります。 GCP 内で注意する項目の 1 つとして、あるマシンタイプの vCPU 数は、1 つの vCPU に相当することです。これはハイパーバイザー層にある物理ホスト上の 1 つのハイパースレッドということになります。

    このドキュメントでは、n1-standard* と n1-highmem* インスタンスタイプが使用されており、ほとんどの GCP デプロイメントリージョンで最も広く利用できるインスタンスです。 ただし、大量のデータをメモリにキャッシュする非常に大型の作業データセットにおいては、n1-ultramem* インスタンスタイプを使用することが優れたオプションと言えます。 特記されている場合を除き、インスタンス可用性ポリシーなどのデフォルトのインスタンス設定やその他の高度な機能が使用されています。 さまざまなマシンタイプの詳細は、こちらを参照してください。

    ディスクストレージ

    InterSystems 製品に最も直接関係しているストレージタイプは、永続ディスクタイプですが、データ可用性の制限を理解して対応できる場合には、ローカルストレージを使用して高度なパフォーマンスを実現することができます。 Cloud Storage(バケット)といったその他のオプションもいくつかありますが、それらは InterSystems IRIS データプラットフォームの運用をサポートするというよりも、個別のアプリケーションの要件に特化したオプションです。

    ほかのほとんどのクラウドプロバイダと同様に、GCP でも、各 Compute Engine に関連付けられる永続ストレージの容量に制限があります。 これらの制限には、各ディスクの最大サイズ、各 Compute Engine に接続される永続ディスクの数量、永続ディスク当たりの IOPS 量と各 Compute Engine インスタンスの総合的な IOPS 限界などがあります。 さらに、ディスク容量 1 GB あたりの IOPS 制限もあるため、希望する IOPS レートを得るには、より多くのディスク容量をプロビジョニングする必要があります。

    これらの制限は、時間の経過とともに変化する可能性があるため、適宜、Google に確認する必要があります。

    ディスクボリュームの永続ストレージタイプには、標準永続ディスクと SSD 永続ディスクの 2 種類があります。 予測可能な低レイテンシ IOPS とより高いスループットを必要とする本番ワークロードには、SSD 永続ディスクがより適しています。 標準永続ディスクは、非本番環境の開発とテストやアーカイブタイプのワークロード向けのより経済的なオプションです。

    さまざまなディスクタイプと制限の詳細については、こちらを参照してください。

    VPC ネットワーキング

    InterSystems IRIS データプラットフォームの多様なコンポーネントのサポートとともに、適切なネットワークセキュリティコントロール、各種ゲートウェイ、ルーティング、内部 IP アドレス割り当て、ネットワークインターフェース分離、およびアクセス制御を提供するには、仮想プライベートクラウド(VPC)ネットワークの使用が強く推奨されます。 VPC の例は、このドキュメントに含まれる例で詳しく説明します。

    VPC ネットワーキングとファイアウォールの詳細については、こちらを参照してください。


    仮想プライベートクラウド(VPC)の概要

    GCP VPC はほかのクラウドプロバイダとは少し異なり、簡素化とより優れた柔軟性を実現しています。 概念の比較は、こちらを参照してください。

    GCP プロジェクト内では、プロジェクトごとに複数の VPC を使用でき(現在、プロジェクトあたり最大 5 個)、自動モードとカスタムモードの 2 つのオプションで VPC ネットワークを作成できます。

    それぞれの詳細は、こちらを参照してください。

    ほとんどの大規模なクラウドデプロイメントでは、複数の VPC をプロビジョニングして、さまざまなゲートウェイタイプをアプリケーション中心の VPC から分離し、インバウンドとアウトバウンドの通信に VPC ピアリングを活用しています。 会社で使用されているサブネットと組織のファイアウォールルールの詳細について、ネットワーク管理者に相談することを強くお勧めします。 VPC ピアリングについては、このドキュメントで説明していません。

    このドキュメントに含まれる例では、3 つのサブネットを持つ単一の VPC を使用して、予測可能なレイテンシと帯域幅、およびさまざまな InterSystems IRIS コンポーネントのセキュリティ分離を得るために、コンポーネントのネットワーク分離を行っています。

    ネットワークゲートウェイとサブネットの定義

    このドキュメントでは、インターネットとセキュア VPN 接続をサポートするために、2 つのゲートウェイを使用した例を示しています。 アプリケーションに適度なセキュリティを提供するために、各侵入アクセスには、適切なファイアウォールとルーティングのルールが必要です。 ルートの使用方法に関する詳細については、こちらを参照してください。

    InterSystems IRIS データプラットフォーム専用のアーキテクチャ例では、3 つのサブネットが使用されています。 これらの個別のネットワークサブネットとネットワークインターフェースを使用することで、セキュリティコントロールと帯域幅の保護に柔軟性を持たせ、上記の 3 つの主要コンポーネントをそれぞれ監視することができます。 さまざまな使用事例に関する詳細は、こちらを参照してください。

    複数のネットワークインターフェースを備えた仮想マシンインスタンスの作成に関する詳細は、こちらを参照してください。

    これらの例には、次のサブネットが含まれます。

  • インバウンド接続ユーザーとクエリ用のユーザースペースネットワーク
  • シャードノード間通信用のシャードネットワーク
  • 各データノードの同期レプリケーションと自動フェイルオーバーを使用して高可用性を実現するミラーリングネットワーク
  • 注意: フェイルオーバー同期データベースミラーリングは、単一の GCP リージョン内で相互接続のレイテンシが低い複数のゾーンでのみ推奨されます。 リージョン間のレイテンシは非常に高いことが通例であるため、特に更新が頻繁に行われるデプロイメントにおいては、良好なユーザーエクスペリエンスを提供することができません。

    内部ロードバランサー

    ほとんどの IaaS クラウドプロバイダーには、自動データベースフェイルオーバー設計で一般的に使用される仮想 IP(VIP)アドレスに対応できる能力が欠けています。 これを解決するために、ミラー対応かつ自動化する VIP 機能に依存しないように、最も一般的に使用されるいくつかの接続方法(特に ECP クライアントや Web ゲートウェイ)が InterSystems IRIS 内で強化されています。

    xDBC、ダイレクト TCP/IP ソケット、またはその他のダイレクトコネクトプロトコルなどの接続方法には VIP のようなアドレスを使用する必要があります。 そういったインバウンドプロトコルをサポートするために、InterSystems のデータベースミラーリング技術では、<span class="Characteritalic" style="font-style:italic">mirror_status.cxw</span> というヘルスチェックステータスページを使って、それらの接続方法の自動フェイルオーバーを GCP 内で提供できるようになっています。VIP のようなロードバランサーの機能性を達成するためにロードバランサーと対話し、アクティブなプライマリメンバーにのみトラフィックをダイレクトすることで、完全かつ堅牢な高可用性設計を GCP 内で作り上げています。

    ロードバランサーを使用して VIP のような機能を提供する方法の詳細については、こちらを参照してください。

    VPC トポロジの例

    以下の図 4.3-a では、すべてのコンポーネントを組み合わせて、次の特性を持つ VPC のレイアウトを示しています。

  • 高可用性を得るために、リージョン内の複数のゾーンを活用する
  • 災害復旧を可能にするために、2 つのリージョンを提供する
  • ネットワーク分離を実施するために、複数のサブネットを使用する
  • インターネットと VPN の両方の接続を得るために、個別のゲートウェイを含める
  • ミラーメンバーが IP フェイルオーバーを行えるように、クラウドロードバランサーを使用する

  • 永続ストレージの概要

    はじめに説明したとおり、GCP 永続ディスク、特に SSD 永続ディスクタイプの使用をお勧めしています。 読み取りと書き込みの IOPS レートがより高く、トランザクションと分析用のデータベースワークロードに必要なレイテンシが低いため、SSD 永続ディスクが推奨されています。 特定の状況で ローカル SSD を使用できることもありますが、ローカル SSD のパフォーマンス向上には、可用性、耐久性、および柔軟性のトレードオフが伴うことに注意してください。

    ローカル SSD データ永続性の詳細については、こちらを参照してください。ローカル SSD データが保持される場合とされない場合を理解することができます。

    LVM ストライピング

    ほかのクラウドプロバイダと同様に、GCP においても、IOPS、容量、および仮想マシンインスタンス当たりのデバイス数に関してストレージに対する制限を課しています。 GCP ドキュメンテーションで現在の制限を確認してください。こちらから参照できます。

    これらの制限により、データベースインスタンスの単一ディスクデバイスの IOPS 以上に最大化するために、LVM ストライピングが必要となります。 提供されている仮想マシンインスタンスの例では、以下のディスクレイアウトが推奨されています。 SSD 永続ディスクに関連するパフォーマンス制限については、こちらを参照してください。

    注意: 現在の仮想マシンインスタンス当たりの最大永続ディスク数は 16 個ですが、GCP では「ベータ版」として 128 個への増加を記載しています。喜ばしい拡張です。

    LVM ストライピングのメリットによって、ランダムな IO ワークロードをより多くのデバイスに分散し、ディスクキューを継承することができます。 以下は、データベースボリュームグループに対して、Linux で LVM ストライピングを使用する方法の例を示しています。 この例では、物理エクステント(PE)サイズが 4 MB の LVM PE ストライプで 4 つのディスクを使用します。 または、必要に応じて、より大きな PE サイズを使用することもできます。

    • 手順 1: 必要に応じて、標準または SSD 永続ディスクを作成します
    • 手順 2: “lsblk -do NAME,SCHED” を使用して、各ディスクデバイスの IO スケジューラが NOOP であることを確認します
    • 手順 3: “lsblk -do KNAME,TYPE,SIZE,MODEL” を使用して、ディスクデバイスを識別します
    • 手順 4: 新しいディスクデバイスでボリュームグループを作成します
      • vgcreate s 4M  
      • : vgcreate -s 4M vg_iris_db /dev/sd[h-k]
    • 手順 4: 論理ボリュームを作成します
      • lvcreate n -L -i -I 4MB
      • : lvcreate -n lv_irisdb01 -L 1000G -i 4 -I 4M vg_iris_db
    • 手順 5: ファイルシステムを作成します
      • mkfs.xfs K
      • : mkfs.xfs -K /dev/vg_iris_db/lv_irisdb01
    • 手順 6: ファイルシステムをマウントします
      • 次のマウントエントリで /etc/fstab を編集します
        • /dev/mapper/vg_iris_db-lv_irisdb01    /vol-iris/db    xfs  defaults 0 0
        • mount /vol-iris/db

    上記の表を使用すると、各 InterSystems IRIS サーバーに、SYS 用ディスク 2 個、DB 用ディスク 4 個、プライマリジャーナル用ディスク 2 個、および代替ジャーナル用ディスク 2 個を備えた以下の構成が作られます。

    成長に関しては、LVM では中断することなく、必要に応じてデバイスと論理ボリュームを拡張できます。 LVM ボリュームの継続的な管理と拡張のベストプラクティスについては、Linux のドキュメンテーションを参照してください。

    注意: データベースと書き込みイメージジャーナルファイルの両方で非同期 IO を有効にすることを強くお勧めします。 Linux での有効化に関する詳細については、次のコミュニティ記事を参照してください: https://community.intersystems.com/post/lvm-pe-striping-maximize-hyper-converged-storage-throughput

    プロビジョニング

    InterSystem IRIS に InterSystems Cloud Manager(ICM)という新しいツールがあります。 ICM は、多くのタスクを実行し、InterSystems IRIS データプラットフォームをプロビジョニングするためのオプションを多数提供しています。 ICM は Docker イメージとして提供され、堅牢な GCP クラウドベースのソリューションをプロビジョニングするために必要なすべての機能を含んでいます。

    ICM は現在、以下のプラットフォームでのプロビジョニングをサポートしています。

    • Google Cloud Platform(GCP)
    • GovCloud を含む Amazon Web Services(AWS / GovCloud)
    • 政府を含む Microsoft Azure Resource Manager(ARM / MAG)
    • VMware vSphere(ESXi)

    ICM と Docker は、デスクトップ/ノートブックワークステーションから実行することも、小規模な専用の集中型「プロビジョニング」サーバーと集中型レポジトリを持つことも可能です。  

    アプリケーションのライフサイクルにおける ICM の役割は、 定義 -> プロビジョン -> デプロイ -> 管理です。

    ICM のインストールと Docker との使用に関する詳細は、こちらを参照してください。

    注意: クラウドデプロイメントでは、ICM を使用する必要はありません。 tar-ball ディストリビューションを使用した従来のインストールとデプロイメントは完全にサポートされており、提供されていますが、 クラウドデプロイメントでのプロビジョニングと管理を簡単化できる ICM の使用をお勧めします。

    コンテナの監視

    ICM には、コンテナベースのデプロイメント向けに Weave Scope を使用した基本的な監視機能が含まれています。 デフォルトではデプロイされないため、defaults ファイルの Monitor フィールドを使用して指定する必要があります。

    ICM を使用した監視、オーケストレーション、およびスケジューリングに関する詳細は、こちらを参照してください。

    Weave Scope の概要とドキュメンテーションは、こちらをご覧ください。


    高可用性

    InterSystems のデータベースミラーリングは、あらゆるクラウド環境で最も高度な可用性を提供します。 直接インスタンスレベルである程度の仮想マシンの回復力を提供するオプションがあります。 GCP で利用できる各種ポリシーに関する詳細は、こちらを参照してください。

    前の方のセクションでは、クラウドロードバランサーがデータベースミラーリングを使用して仮想 IP(VIP のような)機能に自動 IP アドレスフェイルオーバーを提供する方法について説明しました。 クラウドロードバランサーは、前の「内部ロードバランサー」セクションで述べた mirror_status.cxw というヘルスチェックステータスページを使用します。 データベースミラーリングには、自動フェイルオーバー付きの同期ミラーリングと非同期ミラーリングとうい 2 つのモードがありますが、 この例では、同期フェイルオーバーミラーリングについて説明しています。 ミラーリングの詳細については、こちらを参照してください。

    最も基本的なミラーリング構成は、アービター制御構成で一組のフェイルオーバーミラーメンバーを使用する構成です。 アービターは同一リージョン内の 3 番目のゾーンに配置されており、アービターと片方のミラーメンバーに影響を与える可能性のあるゾーンの停止から保護します。

    ネットワーク構成でミラーリングをセットアップする方法はたくさんありますが、 この例では、このドキュメントの「ネットワークゲートウェイとサブネットの定義」セクションで定義したネットワークサブネットを使用します。 IP アドレススキームの例は以下のセクションで提供しています。このセクションでは、ネットワークインターフェースと指定されたサブネットについてのみ示しています。


    災害復旧

    InterSystems のデータベースミラーリングは、高可用性機能を拡張することで、別の GCP 地理リージョンへの災害復旧もサポートし、GCP の全リージョンがオフラインになるという万が一の事態に備え、運営の弾力性をサポートします。 アプリケーションがそのような停止にどのようにして耐えるかは、目標復旧時間(RTO)と目標復旧ポイント(RPO)によって異なります。 これらは、適切な災害復旧計画を作成するために必要な分析の初期フレームを提供するものです。 以下のリンクでは、アプリケーションの災害復旧計画を作成する際に検討すべき項目のガイドが提供されています。 https://cloud.google.com/solutions/designing-a-disaster-recovery-plan および https://cloud.google.com/solutions/disaster-recovery-cookbook

    非同期データベースミラーリング

    InterSystems IRIS データプラットフォームのデータベースミラーリングは、GCP ゾーンとリージョン間のデータレプリケーションを非同期に実行する堅牢な機能を提供しているため、災害復旧計画の RTO と RPO の目標をサポートする上で役立ちます。 非同期ミラーメンバーの詳細については、こちらを参照してください。

    前の高可用性のセクションと同様に、クラウドロードバランサーは、自動 IP アドレスフェイルオーバーを仮想 IP(VIP のような)機能に提供して、前の「 内部ロードバランサー 」セクションで述べたのと同じ mirror_status.cxw ヘルスチェックステータスページを使用してDR 非同期ミラーリングも提供することができます。

    この例では、DR 非同期フェイルオーバーミラーリングは、InterSystems IRIS デプロイメントが稼働しているゾーンやリージョンに関係なく、上流システムとクライアントワークステーションに単一のエニーキャスト IP アドレスを提供する GCP Global Load Balancing サービスの導入とともにカバーされるようになります。

    GCP のメリットの 1 つは、ロードバランサーがソフトウェアによって定義されたグローバルリソースであり、特定のリージョンにバインドされないことです。 このため、そしてインスタンスやデバイスベースのソリューションでないため、リージョン全体で単一のサービスを活用できる特有の機能が可能になります。 単一のエニーキャスト IP を使用した GCP Global Load Balancing の詳細については、こちらを参照してください。

    上の例では、3 つすべての InterSystems IRIS インスタンスは GCP Global Load Balancer に渡され、ゾーンやリージョンに関係なく、プライマリミラーとして動作しているミラーメンバーにのみトラフィックが転送されるようになります。


    シャードクラスタ

    InterSystems IRIS には包括的な機能セットが含まれており、ワークロードの性質とワークロードが直面している特定のパフォーマンスの課題に応じて、単独または組み合わせて適用できます。 機能セットの 1 つであるシャーディングは、データとその関連するキャッシュの両方を複数のサーバーに分割することで、クエリとデータの取り込みを行うための柔軟で安価なパフォーマンスの拡張を行いながら、リソースを非常に効率的に利用することで、インフラストラクチャの価値を最大化することができます。 InterSystems IRIS のシャードクラスタは、広範なアプリケーション、特に以下の 1 つ以上の項目を含むワークロードを使用するアプリケーションに、大きなパフォーマンスのメリットを提供できます。

    • 大量または高速データ取り込み、またはその両方。
    • 比較的大規模なデータセット、大量のデータを返すクエリ、またはその両方。
    • ディスク上の大量のデータをスキャンしたり、重要な計算作業を伴ったりなど、大量のデータ処理を行う複雑なクエリ。

    こういった要因は、それ自体でシャーディングから得られる可能性のある利益に変化をもたらしますが、これらが組み合わさった場合はそのメリットがさらに高まる可能性があります。 たとえば、大量データの迅速な取り込み、大規模なデータセット、および大量のデータを取得して処理する複雑なクエリという 3 つのすべての要因が組み合わさった場合、今日の分析ワークロードの多くでシャーディングを利用する価値が非常に高くなります。

    これらの特性はすべてデータに関係しています。InterSystems IRIS のシャーディングの主な機能は、データボリュームに対して拡張することだからです。 ただし、シャードクラスタには、一部またはすべてのデータ関連の要因が伴うワークロードで、多数のユーザーから非常に高いクエリ量が発生する場合に、ユーザーのボリュームに合わせて拡張する機能も含められます。 シャーディングは、垂直スケーリングと組み合わせることもできます。

    運用の概要

    シャードアーキテクチャの目的は、データとそれに関連するキャッシュを複数のシステム間で分割することにあります。 シャードクラスタは、データノードと呼ばれる複数の InterSystems IRIS インスタンス間で、大量のデータベーステーブルを物理的に水平に(行ごとに)分割します。その一方で、アプリケーションが任意のノードを介してこれらのテーブルに透過的にアクセスし、1 つの論理的な結合としてデータセット全体を捉えられるようにします。 このアーキテクチャには、次の 3 つのメリットがあります。

    • 並列処理: クエリは、データノードで並列に実行され、結果は、アプリケーションが接続されたノードによってマージ、結合され、完全なクエリ結果としてアプリケーションに返されます。多くの場合、実行速度が大幅に改善されます。
    • 分割されたキャッシュ:単一のインスタンスのキャッシュをデータセット全体で使用するのではなく、各ノードにそれが格納するシャーディングされたテーブルのデータ分割専用の独自キャッシュがあります。そのため、キャッシュのオーバーフローやパフォーマンスを低下するディスク読み取りのリスクが大幅に軽減されます。
    • 並列読み込み:データをデータノードに並列に読み込めるため、取り込みワークロードとクエリワークロード間のキャッシュとディスクの競合が緩和され、両者のパフォーマンスが改善されます。

    InterSystems IRIS のシャードクラスタの詳細については、こちらを参照してください。

    シャーディングの要素とインスタンスタイプ

    シャードクラスタは、少なくとも 1 つのデータノードと、特定のパフォーマンスやワークロード要件に必要な場合は、オプションの数の計算ノードで構成されます。 これら 2 つのノードタイプは単純なビルディングブロックで、シンプルで透過的かつ効果的なスケーリングモデルを提供しています。

    データノード

    データノードはデータを格納します。 物理レベルでは、シャーディングされたテーブル [1] のデータはクラスタ内のすべてのデータノードに分散され、シャーディングされていないテーブルのデータは、最初のデータノードのみに物理的に格納されます。 この区別は、ユーザーに透過的です。最初のノードのストレージ消費量はほかのノードに比べてわずかに高いことがあるという唯一の例外がありますが、シャーディングされたテーブルデータは通常、シャーディングされていないテーブルデータをわずかに上回る程度であるめ、この差は無視することができます。

    シャーディングされたテーブルデータは、必要に応じて、通常は新しいデータノードを追加した後で、クラスタ全体で再調整できます。 この調整により、分散するデータが均等になるようにノード間でデータの「バケツ」が移動されます。

    論理レベルでは、シャーディングされていないテーブルデータとシャーディングされたテーブルのすべてのデータの結合はあらゆるノードから可視状態であるため、クライアントは接続しているノードに関係なく、データセット全体を見ることができます。 メタデータとコードも、すべてのデータノードで共有されます。

    シャードクラスタの基本的なアーキテクチャ図は、クラスタ全体で均一に見えるデータノードで構成されています。 クライアントアプリケーションは、任意のノードに接続でき、データがローカルであるかのように処理されます。


    [1] 便宜上、ドキュメントを通して「シャーディングされたテーブルデータ」という用語によって、シャーディングとしてマークされる、シャーディングをサポートするデータモデルの「エクステント」データを表しています。 「シャーディングされていないテーブルデータ」と「シャーディングされていないデータ」は、シャーディング可能なエクステントにあり、そのようにマークされていないデータ、またはシャーディングをまだサポートしていないデータモデルのデータを指します。

    データノード

    低レイテンシが必要となる高度なシナリオでは、潜在的にデータの一定した流入が発生する可能性があるため、クエリを処理するための透過的なキャッシング層を提供するために計算ノードを追加することができます。

    計算ノードはデータをキャッシュします。 各計算ノードは、対応するシャーディングされたテーブルデータをキャッシュするデータノードに関連付けられています。さらに、そのデータに加え、クエリを満たすために必要に応じてシャーディングされていないテーブルデータもキャッシュします。

    計算ノードは物理的にデータを格納せず、クエリ実行をサポートすることを目的としているため、メモリと CPU に重点を置いてストレージを最小限に抑えるなどによって、そのハードウェアプロファイルをニーズに合わせて調整することができます。 取り込みは、ドライバー(xDBC、Spark)で直接、または計算ノードで「ベア」アプリケーションコードが実行されるときにシャーディングマネージャーコードによって暗黙的にデータノードに転送されます。


    シャードクラスタの図説

    シャードクラスタのデプロイにはさまざまな組み合わせがあります。 以下の概要図は、最も一般的なデプロイメントモデルを説明しています。 これらの図には、ネットワークゲートウェイと詳細は含まれておらず、シャードクラスタコンポーネントのみに焦点が当てられています。

    基本的なシャードクラスタ

    以下の図は、単一のリージョンと単一のゾーンにデプロイされた 4 つのデータノードを持つ最も単純なシャードクラスタです。 クライアント接続をシャードクラスタノードに分散するために、GCP Cloud Load Balancer が使用されています。

    この基本モデルでは、単一の仮想マシンとそれに接続された SSD 永続ストレージに GCP が提供するものを超える回復力や高可用性は提供されていません。 インバウンドクライアント接続のネットワークセキュリティ分離と、クライアントトラフィックとシャードクラスタ通信間の帯域幅分離の両方を提供するには、2 つのネットワークインターフェイスアダプターを個別に用意することをお勧めします。

    高可用性を備えた基本的なシャードクラスタ

    以下の図は、単一のリージョンにデプロイされた 4 つのミラーデータノードとゾーン間で分岐した各ノードのミラーを持つ最も単純なシャードクラスタです。 クライアント接続をシャードクラスタノードに分散するために、GCP Cloud Load Balancer が使用されています。

    高可用性は、リージョン内のセカンダリゾーンで同期的に複製されたミラーを維持する InterSystems のデータベースミラーリングを使用して提供されています。

    インバウンドクライアント接続のネットワークセキュリティ分離と、クライアントトラフィック、シャードクラスタ通信、およびノードペア間の同期ミラートラフィック間の帯域幅分離を提供するには、3 つのネットワークインターフェイスアダプターを個別に用意することをお勧めします。

    このデプロイメントモデルでは、このドキュメントの前のセクションで説明したミラーアービターも導入されています。

    個別の計算ノードを持つシャードクラスタ

    以下の図は、大規模なユーザー/クエリ同時実行向けに、個別の計算ノードと 4 つのデータノードを持つシャードクラスタを拡張しています。 Cloud Load Balancer サーバープールには、計算ノードのアドレスのみが含まれます。 更新とデータの取り込みは、以前と同様にデータノードに直接更新され続け、超低レイテンシパフォーマンスを維持し、リアルタイムデータ取り込みによるクエリ/分析ワークロード間のリソースの干渉と輻輳を回避します。

    このモデルでは、計算/クエリと取り込みを個別にスケーリングできるようにリソースの割り当てを微調整することで、計算またはデータをスケーリングするためだけにリソースを不要に無駄にする代わりに、必要なときに「ジャストインタイム」でリソースを最適化し、経済的でありながらも単純なソリューションを維持することができます。

    計算ノードは GCP 自動スケールグループ(自動スケーリング)を非常に簡単に使用できるため、負荷の増減に基づいて、管理されたインスタンスグループへのインスタンスの追加または削除を自動的に実行することができます。 自動スケーリングは、負荷が高まるとインスタンスグループにインスタンスを追加し(アップスケーリング)、インスタンスのニーズが低下するとインスタンスを削除(ダウンスケーリング)します。

    GCP 自動スケーリングの詳細については、こちらを参照してください。

    自動スケーリングを使用すると、クラウドベースのアプリケーションは、トラフィックの増加を適切に処理し、リソースのニーズが低下するとコストを削減するのに役立ちます。 自動スケーリングポリシーを定義するだけで、オートスケーラーは、測定された負荷に基づいて、自動的にスケーリングを実行します。


    バックアップ操作

    バックアップ操作には、いくつかのオプションがあります。 InterSystems IRIS を使用した GCP デプロイメントでは、次の 3 つのオプションを使用できます。

    最初の 2 つのオプションは、以下で説明するとおり、スナップショットを作成する前にデータベースによるディスクへの書き込みを一時停止し、スナップショットに成功したら更新を再開するというスナップショットタイプの手順を使用しています。

    いずれかのスナップショット方式を使用してクリーンなバックアップを作成するには、次のおおまかな手順を実行します。

    • データベースの External Freeze API 呼び出しにより、データベースへの書き込みを一時停止する。
    • OSとデータディスクのスナップショットを作成する。
    • External Thaw API 呼び出しにより、データベースの書き込みを再開する。
    • バックアップファシリティはバックアップ場所にアーカイブする。

    External Freeze/Thaw API に関する詳細は、こちらを参照してください。

    注意: このドキュメントにはバックアップのサンプルスクリプトは含まれていませんが、InterSystems 開発者コミュニティに掲載される例を定期的に確認してください。 www.community.intersystems.com

    3 つ目のオプションは、InterSystems Online のバックアップです。 これは、非常にシンプルな使用事例とインターフェイスを備えたより小規模なデプロイメント向けのエントリーレベルのアプローチです。 ただし、データベースのサイズが大きくなるにつれ、スナップショットテクノロジーを使った外部バックアップがベストプラクティスとして推奨されます。外部ファイルのバックアップ、より高速な復元時間、エンタープライズ全体のデータビューと管理ツールなどのメリットがあります。

    クリーンで一貫したバックアップを確保するために、整合性チェックなどの追加手順を定期的に追加することができます。

    どのオプションを使用するかという決定ポイントは、組織の運用要件とポリシーによって異なります。 さまざまなオプションをさらに詳しく検討するには、InterSystems にご相談ください。

    GCP 永続ディスクスナップショットのバックアップ

    バックアップ操作は、GCP gcloud コマンドライン API と InterSystems External Freeze/Thaw API 機能を使用して実行できます。 これにより、本来の 24 時間 365 日の運用弾力性とクリーンな定期バックアップの保証が可能になります。 GCP 永続ディスクスナップショットの管理と作成および自動化の詳細については、こちらを参照してください。

    論理ボリュームマネージャー(LVM)のスナップショット

    別の方法として、市場に出回っている多くのサードパーティ製バックアップツールを使用する場合は、VM そのものにバックアップエージェントを展開し、論理ボリュームマネージャ(LVM)のスナップショットと組み合わせてファイルレベルのバックアップを活用することができます。

    このモデルには、Windows または Linux ベースの VM をファイルレベルで復元できるというメリットがあります。 このソリューションで注意すべき点は、GCP やほとんどの IaaS クラウドプロバイダはテープメディアを提供しないため、すべてのバックアップリポジトリは、短期アーカイブ用のディスクベースであり、長期保管(LTR)には BLOB またはバケットタイプの低コストストレージを活用できるということです。 このモデルを使用する場合は、ディスクベースのバックアップリポジトリを最も効率的に使用できるように、重複除去テクノロジーをサポートするバックアップ製品を使用することを強くお勧めします。

    こういったクラウド対応のバックアップ製品には、Commvault、EMC Networker、HPE Data Protector、Veritas Netbackup などさまざまな製品があります。

    注意: InterSystems では、これらの製品の比較検証や推奨は行っておりません。 個々のお客様の責任の下、バックアップ管理ソフトウェアをお選びください。

    Online Backup

    小さなデプロイメントでは、組み込みの Online Backup ファシリティもオプションとして考えられます。 InterSystems のデータベースオンラインバックアップユーティリティは、データベース内のすべてのブロックをキャプチャしてデータベースファイルにデータをバックアップし、出力をシーケンシャルファイルに書き込みます。 この、InterSystems 独自のバックアップメカニズムは、本番システムのユーザーにダウンタイムを引き起こさないように設計されています。 Online Backup の詳細については、こちらを参照してください。

    GCP では、オンラインバックアップが完了した後、バックアップ出力ファイルとシステムで使用中のほかのすべてのファイルを、その仮想マシンインスタンスの外部にあるほかのストレージの場所にコピーする必要があります。 これには、バックアップ/オブジェクトストレージが適しています。

    GCP Storatge バケットを使用するには、2 つのオプションがあります。

    • gcloud スクリプト API を直接使用して、新しく作成したオンラインバックアップ(とほかの非データベース)ファイルをコピーして操作する。詳細は、こちらを参照してください。
    • Cloud Storage バケットはオブジェクトストレージですが、ストレージバケットをファイルシステムとしてマウントし、永続ディスクと同様に使用する。

    Cloud Storage FUSE を使って Cloud Storage バケットをマウントする詳細については、こちらを参照してください。

    0
    0 1662
    記事 Toshihiko Minamoto · 7月 8, 2020 5m read

    ** 2018年2月12日改訂 

    この記事はInterSystems IRISに関するものですが、Caché、Ensemble、およびHealthShareのディストリビューションにも適用されます。 

    概要

    メモリはページ単位で管理されます。 Linuxシステムでは、デフォルトのページサイズは4KBです。 Red Hat Enterprise Linux 6、SUSE Linux Enterprise Server 11、およびOracle Linux 6では、HugePageと呼ばれるシステム構成に応じて、ページサイズを2MBまたは1GBに増やす方法が導入されました。 

    第一に、HugePagesは起動時に割り当てる必要があり、適切に管理や計算が行われていない場合はリソースが浪費される可能性があります。 結果的に、さまざまなLinuxディストリビューションでTransparent HugePagesがデフォルトで有効になっているカーネル2.6.38が導入されました。 これは、HugePagesの作成、管理、使用を自動化することを意図したものでした。 旧バージョンのカーネルもこの機能を備えている可能性がありますが、[always] に指定されておらず、 [madvise] に設定されている可能性があります。   

    0
    0 1686
    記事 Tomohiro Iwamoto · 6月 5, 2020 14m read

    前回の記事では、pButtonsを使って履歴パフォーマンスメトリックを収集する方法を説明しました。 すべてのデータプラットフォームインスタンス(Ensemble、Cachéなど)にはpButtonsがインストールされていることがわかっているため、私はpButtonsを使用する傾向にありますが、 Cachéパフォーマンスメトリックをリアルタイムで収集、処理、表示する方法はほかにもあり、単純な監視や、それよりもさらに重要な、より高度な運用分析とキャパシティプランニングに使用することができます。 データ収集の最も一般的な方法の1つは、SNMP(簡易ネットワーク管理プロトコル)を使用することです。 

    SNMPは、Cachéが管理・監視情報をさまざまな管理ツールに提供するための標準的な方法です。 Cachéのオンラインドキュメンテーションには、CachéとSNMP間のインターフェースに関する詳細が説明されています。 SNMPはCachéと「単純に連携」するはずですが、構成にはいくつかの技と罠があります。 私自身、はじめに何度も過ちを繰り返し、InterSystemsの同僚から助けを得ながらCachéをオペレーティングシステムのSNMPマスターエージェントにやっと接続できた経験から、皆さんが同じような困難を避けられるようにこの記事を書くことにしました。 

    0
    0 352