21
OSS モデルカリキュラムの学習ガイダンス 独立行政法人 情報処理推進機構 1-4-. システムアーキテクチャに関する知識 1. 科目の概要 情報システムが複雑化するなかで、システムのアーキテクチャは分散化に向かっている。 分散システムの構成、特徴について説明し、分散システムの重要な要素である負荷分散と 冗長化等の技術を解説する。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。 習得ポイント 説明 シラバスの対応コマ 1-4-基-1. システムアーキテクチャの意義と 目的 現代的なシステムは、「CPU、メモリ、二次記憶装置、入出力装置」といった 単純なシステムではなく、クライアント/サーバのようなネットワークシステムが 主流である。さらにサーバ自体も、負荷分散や高信頼化、高可用性の確保 を目的として分散システムとしての構築が主流となっている。ここではまず、 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2. 分散情報システムの歴史と特徴 分散情報システムの登場した背景とその歴史、基本的な概念と、耐故障性 やスケーラビリティといった分散情報システムの特徴について説明する。また 計算の分散化、ストレージの分散化、UI の分散化、インターネットのアーキ テクチャなど、様々な分散アーキテクチャを紹介する。 1,2,3 1-4-基-3. システムの故障対策と冗長化 数多くのハードウェアから構成される分散システムにおいて、それぞれの ノードが故障したとしても分散システム全体が停止しないように対策を講じる ことの重要性を示し、そのための主要な手段として冗長性を持たせた機器構 成が採用されることを説明する。 4 1-4-基-4. 負荷分散(ロードバランサー)の種 類と構成 HA クラスタの基本技術である負荷分散技術について、その基本的な概念、 種類と構成および構成要素を解説する。負荷分散を実現するロードバラン サーの様々な実装を紹介し、それぞれの構成、特徴について説明する。 5 1-4-基-A5. 負荷分散アルゴリズムと死活問 負荷分散を実現する代表的なアルゴリズムを紹介し、その具体的な手順を 説明する。またリアルサーバの死活監視技術について触れ、HA クラスタ運 用時に発生する作業について説明する。 6,7 1-4-基-6. LVSによるロードバランサーの実 現方法 LVS (Linux Virtual Server)を利用してHA クラスタを構築する方法について 解説する。その構成要素を説明し、IPVS カーネルの構築、ipvsadm および keepalived のビルド、テスト環境の構築、DSR(Direct Server Return)の構築 といった具体的な手順を示す。 5 1-4-基-7. ミドルウェアによる負荷分散 TomcatやJBossなどのミドルウェアレベルで負荷分散クラスタを構築する方 法について解説する。ここではApacheとTomcatの組み合わせた場合を例に して、具体的な構築手順を示す。 11 1-4-基-8. VRRPによる冗長化 VRRP (Virtual Router Redundancy Protocol)とは何かについて解説し、ネッ トワークの構成方法からkeepalived の設定といった冗長化の実現方法を示 す。さらにkeepalived 運用時の留意点など実践的なポイントを紹介する。 10 1-4-基-9. 安全な通信路による分散システム インターネットのようにセキュリティが保たれていないネットワークの上に安全 な通信路を構成し、その通信路を介して分散システムを構成することも多 い。暗号化により安全な通信路を確立するための技術として、SSL/TLS の 基本的な仕組みを紹介する。 12 【学習ガイダンスの使い方】 1. 「習得ポイント」により、当該科目で習得することが期待される概念・知識の全体像を把握する。 2. 「シラバス」、「IT 知識体系との対応関係」、「OSS モデルカリキュラム固有知識」をもとに、必要に応じて、 従来の IT 教育プログラム等との相違を把握した上で、具体的な講義計画を考案する。 3. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

OSS モデルカリキュラムの学習ガイダンス

独立行政法人 情報処理推進機構

1-4-基. システムアーキテクチャに関する知識※

1. 科目の概要

情報システムが複雑化するなかで、システムのアーキテクチャは分散化に向かっている。

分散システムの構成、特徴について説明し、分散システムの重要な要素である負荷分散と

冗長化等の技術を解説する。

2. 習得ポイント

本科目の学習により習得することが期待されるポイントは以下の通り。習得ポイント 説 明 シラバスの対応コマ

1-4-基-1. システムアーキテクチャの意義と目的

現代的なシステムは、「CPU、メモリ、二次記憶装置、入出力装置」といった単純なシステムではなく、クライアント/サーバのようなネットワークシステムが主流である。さらにサーバ自体も、負荷分散や高信頼化、高可用性の確保を目的として分散システムとしての構築が主流となっている。ここではまず、様々なシステムアーキテクチャの概要を解説する

1

1-4-基-2. 分散情報システムの歴史と特徴

分散情報システムの登場した背景とその歴史、基本的な概念と、耐故障性やスケーラビリティといった分散情報システムの特徴について説明する。また計算の分散化、ストレージの分散化、UI の分散化、インターネットのアーキテクチャなど、様々な分散アーキテクチャを紹介する。

1,2,3

1-4-基-3. システムの故障対策と冗長化

数多くのハードウェアから構成される分散システムにおいて、それぞれのノードが故障したとしても分散システム全体が停止しないように対策を講じることの重要性を示し、そのための主要な手段として冗長性を持たせた機器構成が採用されることを説明する。

4

1-4-基-4. 負荷分散(ロードバランサー)の種類と構成

HA クラスタの基本技術である負荷分散技術について、その基本的な概念、種類と構成および構成要素を解説する。負荷分散を実現するロードバランサーの様々な実装を紹介し、それぞれの構成、特徴について説明する。

5

1-4-基-A5. 負荷分散アルゴリズムと死活問題

負荷分散を実現する代表的なアルゴリズムを紹介し、その具体的な手順を説明する。またリアルサーバの死活監視技術について触れ、HA クラスタ運用時に発生する作業について説明する。

6,7

1-4-基-6. LVSによるロードバランサーの実現方法

LVS (Linux Virtual Server)を利用してHA クラスタを構築する方法について解説する。その構成要素を説明し、IPVS カーネルの構築、ipvsadm およびkeepalived のビルド、テスト環境の構築、DSR(Direct Server Return)の構築といった具体的な手順を示す。

5

1-4-基-7. ミドルウェアによる負荷分散TomcatやJBossなどのミドルウェアレベルで負荷分散クラスタを構築する方法について解説する。ここではApacheとTomcatの組み合わせた場合を例にして、具体的な構築手順を示す。

11

1-4-基-8. VRRPによる冗長化VRRP (Virtual Router Redundancy Protocol)とは何かについて解説し、ネットワークの構成方法からkeepalived の設定といった冗長化の実現方法を示す。さらにkeepalived 運用時の留意点など実践的なポイントを紹介する。

10

1-4-基-9. 安全な通信路による分散システム

インターネットのようにセキュリティが保たれていないネットワークの上に安全な通信路を構成し、その通信路を介して分散システムを構成することも多い。暗号化により安全な通信路を確立するための技術として、SSL/TLS の基本的な仕組みを紹介する。

12

※ 【学習ガイダンスの使い方】1. 「習得ポイント」により、当該科目で習得することが期待される概念・知識の全体像を把握する。2. 「シラバス」、「IT 知識体系との対応関係」、「OSS モデルカリキュラム固有知識」をもとに、必要に応じて、

従来の IT 教育プログラム等との相違を把握した上で、具体的な講義計画を考案する。3. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

Page 2: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

OSS モデルカリキュラムの学習ガイダンス

独立行政法人 情報処理推進機構

3. IT 知識体系との対応関係

「1-4-基. システムアーキテクチャに関する知識」と IT 知識体系との対応関係は以下の通

り。科目名 1 2 3 4 5 6 7 8 9 10 11 12

1-4-基. システムアーキテクチャに関する知識

システムアーキテクチャの基本 名前管理 複製管理

サービス提供を維持する仕組み

負荷分散機構の導入

負荷分散のアルゴリズム 死活監視の導入 仮想マシンの導入

仮想マシンによる分散システム

ハードウェアレベルにおける負荷分散

ミドルウェア~アプリケーションにおける負荷分散

セキュアチャネル

科目名 1 2 3 4 5 6 7 8 9 10 11 12 13

1

IT-IAS1.基礎的な問題

IT-IAS2.情報セキュリティの仕組み(対策)

IT-IAS3.運用上の問題

IT-IAS4.ポリシー

IT-IAS5.攻撃 IT-IAS6.情報セキュリティ分野

IT-IAS7.フォレンジック(情報証拠)

IT-IAS8.情報の状態

IT-IAS9.情報セキュリティサービス

IT-IAS10.脅威分析モデル

IT-IAS11.脆弱性

2

IT-SP1.プロフェッショナルとしてのコミュニケーション

IT-SP2.コンピュータの歴史

IT-SP3.コンピュータを取り巻く社会環境

IT-SP4.チームワーク

IT-SP5.知的財産権

IT-SP6.コンピュータの法的問題

IT-SP7.組織の中のIT

IT-SP8.プロフェッショナルとしての倫理的な問題と責任

IT-SP9.プライバシーと個人の自由

3

IT-IM1.情報管理の概念と基礎

IT-IM2.データベース問合わせ言語

IT-IM3.データアーキテクチャ

IT-IM4.データモデリングとデータベース設計

IT-IM5.データと情報の管理

IT-IM6.データベースの応用分野

4

IT-WS1.Web技術 IT-WS2.情報アーキテクチャ

IT-WS3.デジタルメディア

IT-WS4.Web開発 IT-WS5.脆弱性 IT-WS6.ソーシャルソフトウェア

5

IT-PF1.基本データ構造

IT-PF2.プログラミングの基本的構成要素

IT-PF3.オブジェクト指向プログラミング

IT-PF4.アルゴリズムと問題解決

IT-PF5.イベント駆動プログラミング

IT-PF6.再帰

6

IT-IPT1.システム間通信

IT-IPT2.データ割り当てと交換

IT-IPT3.統合的コーディング

IT-IPT4.スクリプティング手法

IT-IPT5.ソフトウェアセキュリティの実現

IT-IPT6.種々の問題

IT-IPT7.プログラミング言語の概要

7

CE-SWE0.歴史と概要

CE-SWE1.ソフトウェアプロセス

CE-SWE2.ソフトウェアの要求と仕様

CE-SWE3.ソフトウェアの設計

CE-SWE4.ソフトウェアのテストと検証

CE-SWE5.ソフトウェアの保守

CE-SWE6.ソフトウェア開発・保守ツールと環境

CE-SWE7.ソフトウェアプロジェクト管理

CE-SWE8.言語翻訳

CE-SWE9.ソフトウェアのフォールトトレランス

CE-SWE10.ソフトウェアの構成管理

CE-SWE11.ソフトェアの標準化

8

IT-SIA1.要求仕様

IT-SIA2.調達/手配

IT-SIA3.インテグレーション

IT-SIA4.プロジェクト管理

IT-SIA5.テストと品質保証

IT-SIA6.組織の特性

IT-SIA7.アーキテクチャ

9

IT-NET1.ネットワークの基礎

IT-NET2.ルーティングとスイッチング

IT-NET3.物理層 IT-NET4.セキュリティ

IT-NET5.アプリケーション分野

IT-NET6.ネットワーク管理

CE-NWK0.歴史と概要

CE-NWK1. 通信ネットワークのアーキテクチャ

CE-NWK2.通信ネットワークのプロトコル

CE-NWK3.LANとWAN

CE-NWK4.クライアントサーバコンピューティング

CE-NWK5.データのセキュリティと整合性

CE-NWK6.ワイヤレスコンピューティングとモバイルコンピューティング

CE-NWK7.データ通信

CE-NWK8.組込み機器向けネットワーク

CE-NWK9.通信技術とネットワーク概要

CE-NWK10.性能評価

CE-NWK11.ネットワーク管理

CE-NWK12.圧縮と伸張

CE-NWK13.クラスタシステム

CE-NWK14.インターネットアプリケーション

CE-NWK15.次世代インターネット

CE-NWK16.放送

11

IT-PT1.オペレーティングシステム

IT-PT2.アーキテクチャと機構

IT-PT3.コンピュータインフラストラクチャ

IT-PT4.デプロイメントソフトウェア

IT-PT5.ファームウェア

IT-PT6.ハードウェア

12

CE-OPS0.歴史と概要

CE-OPS1.並行性 CE-OPS2.スケジューリングとディスパッチ

CE-OPS3.メモリ管理

CE-OPS4.セキュリティと保護

CE-OPS5.ファイル管理

CE-OPS6.リアルタイムOS

CE-OPS7.OSの概要

CE-OPS8.設計の原則

CE-OPS9.デバイス管理

CE-OPS10.システム性能評価

13

CE-CAO0.歴史と概要

CE-CAO1.コンピュータアーキテクチャの基礎

CE-CAO2.メモリシステムの構成とアーキテクチャ

CE-CAO3.インタフェースと通信

CE-CAO4.デバイスサブシステム

CE-CAO5.CPUアーキテクチャ

CE-CAO6.性能・コスト評価

CE-CAO7.分散・並列処理

CE-CAO8.コンピュータによる計算

CE-CAO9.性能向上

14

IT-ITF1.ITの一般的なテーマ

IT-ITF2.組織の問題

IT-ITF3.ITの歴史

IT-ITF4.IT分野(学科)とそれに関連のある分野(学科)

IT-ITF5.応用領域

IT-ITF6.IT分野における数学と統計学の活用

CE-ESY0.歴史と概要

CE-ESY1.低電力コンピューティング

CE-ESY2.高信頼性システムの設計

CE-ESY3.組込み用アーキテクチャ

CE-ESY4.開発環境

CE-ESY5.ライフサイクル

CE-ESY6.要件分析

CE-ESY7.仕様定義

CE-ESY8.構造設計

CE-ESY9.テスト CE-ESY10.プロジェクト管理

CE-ESY11.並行設計(ハードウェア、ソフトウェア

CE-ESY12.実装

CE-ESY13.リアルタイムシステム設計

CE-ESY14.組込みマイクロコントローラ

CE-ESY15.組込みプログラム

CE-ESY16.設計手法

CE-ESY17.ツールによるサポート

CE-ESY18.ネットワーク型組込みシステム

CE-ESY19.インタフェースシステムと混合信号システム

CE-ESY20.センサ技術

CE-ESY21.デバイスドライバ

CE-ESY22.メンテナンス

CE-ESY23.専門システム

CE-ESY24.信頼性とフォールトトレランス

分野

組織関連事項と情

報システム

ソフトウェ

アの方法と技術

システム基盤

IT-IAS 情報保証と情報セキュリティ

IT-SP 社会的な観点とプロフェッショナルとしての課題

応用技術

IT-IM 情報管理

IT-WS Webシステムとその技術

CE-ESY 組込みシステム

IT-IPT 技術を統合するためのプログラミング

15

10CE-NWK テレコミュニケーション

IT-PF プログラミング基礎

CE-SWE ソフトウェア工学

IT-SIA システムインテグレーションとアーキテクチャ

IT-NET ネットワーク

複数領域にまたがるもの

IT-PT プラットフォーム技術

CE-OPS オペレーティングシステム

CE-CAO コンピュータのアーキテクチャと構成

IT-ITF IT基礎

コンピュー

タハー

ウェ

アと

アー

キテク

チャ

<IT 知識体系上の関連部分>

Page 3: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

OSS モデルカリキュラムの学習ガイダンス

独立行政法人 情報処理推進機構

4. OSS モデルカリキュラム固有の知識

OSS モデルカリキュラム固有の知識として、OSS のロードバランサや仮想マシンに関す

る知識や、Web・アプリケーション・データベースサーバにおける負荷分散の実現方法に関

する知識などが挙げられる。

科目名 第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回 第10回 第11回 第12回(1) 集中と分散の歴史

(1) 名前を介したアクセス

(1) 複製のメリット

(1) 分散システムと故障

(1) HighAvailability(HA) Cluster とHigh

(1) 負荷分散クラスタを構成する要素の詳細

(1) 死活監視の必要性

(1) 仮想マシンとは

(1) 仮想マシンによる分散システムの利点

(1) ロードバランサの冗長化

(1) Webサーバにおける負荷分散

(1) セキュアチャネルの特徴と実現技術

(2) 分散情報システムの特徴と留意点

(2) 名前と透過性

(2) さまざまな複製技術

(2) コンピュータの冗長化と故障からの回復

(2) HA クラスタ概論

(2) ロードバランサの区分

(2) スプリットブレインの防止

(2) 代表的な仮想マシン

(2) 仮想化の検討要素

(2) VRRP(Virtual RouterRedundancyProtocol)とは

(2) アプリケーションサーバにおける負荷分散

(2) SSL/TLSの仕組み

(3) さまざまな分散アーキテクチャ

(3) 分散名前管理システムの事例

(3) 複製間の一貫性管理

(3) ネットワークの冗長化

(3) LVS で実現するロードバランサー

(3) VRRP の構築

(3) データベースにおける負荷分散

(4) 分散名前管理システムに対する検索(ワークショッ

(4) キャッシュのヒット率のモデル(ワークショップ)

(4) 不安定な通信路上の安定した通信

(5) ソフトウェアの冗長化

(6) 故障の確率モデル(ワークショップ)

1-4-基 システムアーキテクチャに関するスキル

(網掛け部分は IT 知識体系で学習できる知識を示し、それ以外は OSS モデルカリキュラム固有の知識を示している)

Page 4: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-1

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4 システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-1. システムアーキテクチャの意義と目的

対応する

コースウェア

第 1 回 システムアーキテクチャの基本

1-4-基-1. システムアーキテクチャの意義と目的

現代的なシステムは、「CPU、メモリ、二次記憶装置、入出力装置」といった単純なシステムではな

く、クライアント/サーバのようなネットワークシステムが主流である。さらにサーバ自体も、負荷分散

や高信頼化、高可用性の確保を目的として分散システムとしての構築が主流となっている。ここでは

まず、様々なシステムアーキテクチャの概要を解説する。

【学習の要点】

* 現代的なシステムは、外からは単一のアーキテクチャに見えるが、内部では分散情報システムと

して実装されていることが一般的である。

* 分散情報システムとは、ユーザに対して単一のコヒーレントシステムとして見える独立したコンピ

ュータの集合である。

* 分散システムにおいて重要な概念は、ユーザの計算リソースへの透過性であり、これにはアクセ

シビリティ、可搬性、スケーラビリティ等が含まれる。

図 1-4-基-1. コンピュータシステムと分散システム

分析

解析

情報

単一のコンピュータシステム

情報発生

コンピュータ

情報入力

分散システム

情報発生

分析

解析

情報入力

情報出力分析

解析

分析

解析

情報出力

情報

情報

Page 5: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-2

【解説】

1) 分散システムとは

複数のコンピュータが連携して一つ情報処理システムをなすものであり、集中処理システムの対義

語となる。ユーザからはどちらも、分散システムの構成要素を意識することなく、一貫した情報処理

システムとして認識される。

分散システムの構成は目的に応じて設計されるが、大きく以下の二つに分けることができる。

* 水平分散

情報処理システムの機能を分割し、複数のコンピュータに分けたものである。

具体的にはクライアント/サーバシステム、3層アーキテクチャ等がある。

* 垂直分散

同一の機能を持つコンピュータを複数用意し、システムとしての可用性の向上、性能向上を図

ったものである。

2) 分散システムの透過性

ユーザに分散システムの構成を意識させず、あたかも集中処理システムであるかのように見せる性

質を透過性という。透過性は幾つかの観点で分類できる。分散システムはその設計・構成に応じて

満たせる特性が異なるが、実用的なものにするためには、必要な特性を必要な分だけ満たす必要

がある。

以下は特性の分類の例である。

* アクセシビリティ

各コンピュータの実際の物理的位置や接続構成を意識させず、ユーザに同一のアクセス方法

を提供する特性。

* 可搬性

分散システム内の各コンピュータ自身、及びそれを構成するリソースを、物理的・論理的に異な

る位置に移動することができる特性。

* スケーラビリティ

分散システムへのコンピュータの増設・撤去が可能であり、システムとしてのスループットの向上

を図ることが可能な特性。

* 障害透過性

分散システムを構成するコンピュータ等の障害が、ユーザに意識されずに復旧される特性。

* 永続透過性

ユーザデータの記憶装置が、磁気ディスク/揮発メモリ/不揮発メモリなど具体的に何で構成

されているかをユーザに意識させない特性。

* セキュリティ透過性

アクセス制限のあるリソースへのアクセス手段が、対象リソースの種類や位置等によって左右さ

れない特性。

3) 分散システムのメリット・デメリット

分散システムは、低コストでの導入・対障害性の向上・処理の高速化などの目的に応じて柔軟な構

成が実現できる等のメリットがある。しかしその分、運用管理が複雑になること、セキュリティ管理が

おろそかになりがちになるというデメリットがある。

Page 6: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-3

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4. システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-2. 分散情報システムの歴史と特徴

対応する

コースウェア

第 1 回 システムアーキテクチャの基本

1-4-基-2. 分散情報システムの歴史と特徴

分散情報システムの登場した背景とその歴史、基本的な概念と、耐故障性やスケーラビリティといっ

た分散情報システムの特徴について説明する。また計算の分散化、ストレージの分散化、UIの分散

化、インターネットのアーキテクチャなど、様々なシステムアーキテクチャを紹介する。

【学習の要点】

* 情報システムは、メインフレーム時代の集中型から分散型へと変化してきたが、Web システムが

主流となった近年では再びサーバ側に処理の比重が移りつつあり、計算処理に対する需要と

供給の増加により分散情報システムがかつて無いほどに求められている。

* 分散情報システムは、耐故障性を高める、スケーラビリティを確保する、といった目的に応じて

様々な構成をとることが可能である

* 分散情報システムには、機能としてみた場合、また実装の観点から見た場合、それぞれに様々

なアーキテクチャが存在する。

LANと

インターネットLAN専用ネットワークネットワーク

OSベンダ(商用Linux /Windows等)

ハードウェアベンダのUnix

ハードウェアベンダ独自

サーバのOS

1990年代後半~1990年代前半~1950年代~時代

HTTP/HTTPS独自独自アプリケーションの通信プロトコル

大中大サーバ負荷

中大小クライアント負荷

ハードウェアベンダ独自

専用端末

集中

メインフレーム

環境

ハードウェアベンダ独自

PCの専用アプリケーション

分散

分散環境(クライアントサーバ)

分散環境

(Webシステム)

分散アーキテクチャ

PCサーバ(共通の部品中心)

サーバのハードウェア

ブラウザのある各種端末

クライアントの特徴

図 1-4-基-2. 情報システムの歴史と特徴

Page 7: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-4

【解説】

1) 集中から分散へ

* メインフレーム主体のコンピューティングの時代は、ホストコンピュータとしてのサーバがコンピュ

ーティング活動のほとんどを担っていた集中型のアーキテクチャだった。

* その後、マシンのパーソナル化とネットワーク化が進むことで、分散コンピューティングのインフラ

が整備され、Web が隆盛の時代になるとシステムアーキテクチャがコモディティとなってきた。

* インターネット上における多種のサービスの展開、そしてインターネットを利用する人口の爆発

的な拡大にともない、計算リソースの大規模化、セキュリティ化といった面から分散情報システム

の需要が増えている。

* 最近ではオープンソースソフトウェアの隆盛、そしてユーザからはサービスとしてのコンピュータ

リソースがインターネット上に存在するクラウドコンピューティングサービスの隆盛により、分散情

報システムの供給が増えている。

2) システムアーキテクチャの特徴

* システムアーキテクチャの特徴は集中型アーキテクチャの欠点を克服し、計算処理の能力を拡

大するものである。おもな特徴として以下のものがある。

- 耐障害性:システムを分散することで障害に対する耐性を高める。

- スケーラビリティ:需要に応じてシステムリソースの規模を柔軟に対応する。

- 相互運用:オープンな規格を利用することで異なるベンダーの間でも機器やソフトウェアの

相互運用を実現する。

3) 様々なアーキテクチャ

* 機能ごとに分散を考えると、システムアーキテクチャには以下の種類がある。

- 計算の分散: 計算処理を分散させて、高負荷の計算を行う

- ストレージの分散: データストアとしてストレージを分散させて、大容量のストレージ領域を

確保するとともに、フェイルセーフな観点からのレプリケーションを行う。

- サーバシステムの分散: クライアントからの過負荷をロードバランシングするために行う

* 一つの分散システムの中でプロセスをどのように構成するかという実装によって、システムアー

キテクチャは以下の種類に分けることができる。

- ハードウェアの分散: マルチプロセッサ、同種マルチコンピュータ、異種マルチコンピュ

ータ

- ソフトウェアの分散: 分散OS、ネットワーク OS、ミドルウェアによる分散

- クライアントサーバアーキテクチャ

Page 8: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-5

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4. システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-3. システムの故障対策と冗長化

対応する

コースウェア

第 4 回 サービス提供を維持する仕組み

1-4-基-3. システムの故障対策と冗長化

数多くのハードウェアから構成される分散システムにおいて、それぞれのノードが故障したとしても

分散システム全体が停止しないように対策を講じることの重要性を示し、そのための主要な手段とし

て冗長性を持たせた機器構成が採用されることを説明する。

【学習の要点】

* 様々な機器、数多くのハードウェアから構成される分散システムにおいては、故障を想定した構

成を取ることが必要である。

* 分散情報システムにおいて、個々のノードが故障した場合でも全体として動作するための主要

な手段として冗長化がある。

* 分散情報システムを構成するコンピュータ、ネットワーク、ソフトウェアそれぞれに冗長化技術が

存在する。

ファイアウォール

Webサーバ

DBサーバ

アプリケーションサーバ

正常時 ファイアウォール故障時

正常系 冗長系

ファイアウォール

ロードバランサ

DBサーバ

ロードバランサ

Webサーバ

アプリケーションサーバ

×フェールオーバ

図 1-4-基-3. システムの故障対策と冗長化の例

Page 9: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-6

【解説】

1) 高信頼システム

* 分散システムにおいては、様々な機器、数多くのハードウェアから構成される。このことは、故障

が生じる蓋然性が高くなるということである。分散システムが高信頼システムであるのに必要なの

は以下の要件が満たされることである。(タネンバウム&ファン・スティーン「分散システム 原理と

パラダイム」)

- 可用性:サービス予定時間に対する実際のサービス提供時間の割合が高いこと。

- 信頼性:故障までのサービス提供の時間が長いこと。

- 安全性:外部からの揺動に堅牢であること。

- 保守性:故障からサービス再開までの時間が短いこと。

2) 冗長性による障害の隠蔽

* 分散システムが高信頼であるためには、ユーザ側に障害を隠蔽する仕組みが必要である。その

ためのキーテクノロジーは冗長性をもたせることである。

* 分散情報システムにおいては、コンピュータ、ネットワーク、ソフトウェアそれぞれに冗長性が存

在する。

* 冗長性の種類としては以下のものがある。

- 情報的冗長性:ハミングコード、チェックサム

- 時間的冗長性:トランザクション

- 物理的冗長性:ハードウェア冗長、ソフトウェア冗長

3) プロセスグループ

* 冗長性の概念は、プロセスグループという考え方が重要である。キーとなる考えは、「一つある

いは複数のプロセスが障害を起こしても、そのグループが提供するサービスが全体として不具

合になることがない」、ということである。

4) 冗長化技術

* 障害から復元をするための性能を障害からの復元力といい、復元力をもたせるための冗長化技

術に以下のものがある。通信機器やサーバを多重化したり、接続回線を増加させたりすることで

実現する。

- 高信頼クライアントサーバ通信:クライアントサーバ間の通信を冗長化する。

- 高信頼グループ通信:多対多の通信を冗長化する。

- 分散コミット:トランザクションを冗長化する。

Page 10: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-7

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4 システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-4. 負荷分散(ロードバランサー)の種類と構成

対応する

コースウェア

第 5 回 負荷分散機構の導入、第 6 回 負荷分散のアルゴリズム

1-4-基-4. 負荷分散(ロードバランサー)の種類と構成

HA クラスタの基本技術である負荷分散技術について、その基本的な概念、種類と構成および構成

要素を解説する。負荷分散を実現するロードバランサーの様々な実装を紹介し、それぞれの構成、

特徴について説明する。

【学習の要点】

* 負荷分散を実現する方式には、代表的なもので、DNS ラウンドロビン、L4 ロードバランサー、L7

ロードバランサーの3通りがある。

* DNS ラウンドロビンは、DNS 正引き問い合わせの結果として返される IP アドレスとして、クラスタ

内各ノードの IP を順番に返すことにより、結果としてクライアントからのアクセスをクラスタ内の複

数ノードへ分散させる負荷分散方式である。

図 1-4-基-4. DNS ラウンドロビン

www.xxx.xxx 192.168.0.1www.xxx.xxx 192.168.0.2www.xxx.xxx 192.168.0.3

DNS

クライアント

www.xxx.xxx? ① 192.168.0.1② 192.168.0.2③ 192.168.0.3④ 192.168.0.1

...

①④

192.168.0.1 192.168.0.2 192.168.0.3

Page 11: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-8

【解説】

1) 負荷分散方式の種類

負荷分散を実現する方式には、代表的なもので、DNS ラウンドロビン、L4 ロードバランサー、L7

ロードバランサーの3通りが挙げられる。

* DNS ラウンドロビン

DNS ラウンドロビンは、DNS 正引き問い合わせの結果として返される IP アドレスとして、クラス

タ内各ノードの IP を順番に返すことにより、結果としてクライアントからのアクセスをクラスタ内の

複数ノードへ分散させる負荷分散方式である。DNS サーバと、サービスを提供する複数のリア

ルサーバ(ノード)から構成される。DNS サーバの設定のみで実現でき、最も容易であるが、以下

のような問題点がある。

- 分散先ノードの通信継続性

接続ごとに接続先が違うと、接続の継続性が求められるサーバの場合に問題が起きる可

能性がある(Web アプリケーションのセッション管理や暗号化通信など)。

- DNS キャッシングの情報更新の際に生じる時差

レコードの TTL が長い場合、変更前の情報を参照してしまう期間が長くなってしまう。

- トラフィック負荷を分散する際の予期せぬ偏り

均等な負荷分散はできない。ヘビーユーザが一つの通信先に集中してアクセスを行う場

合もある

* L4 ロードバランサー

TCP ヘッダ等のプロトコルヘッダ内のポート番号や、セッションシーケンス番号等の情報を解

析したり、情報を書き換えたりという処理を行うことで、負荷分散を実現する方式である。OSI 参

照モデルにおける第4層、トランスポート層の情報を利用して負荷分散を行うことから、この名前

で呼ばれている。ロードバランサー専用機と、サービスを提供する複数のリアルサーバから構成

される。ロードバランサーが停止すると、システム全体の停止となるため、ロードバランサーを複

数台用意し、冗長化構成を取るのが一般的である。ロードバランサーのソフトウェアを、リアルサ

ーバ上に共存させる場合もある。

* L7 ロードバランサー

HTTPにおけるURLやCookie情報などを元に負荷分散を実現する方式である。OSI参照モ

デルにおける第7層、アプリケーション層の情報を利用して負荷分散を行うことから、この名前で

呼ばれている。構成については、L4 ロードバランサーと同様である。

L7 ロードバランサーの代表的なオープンソース実装を以下に挙げる。

- HA Proxy http://haproxy.1wt.eu/

- mod_proxy_balancer http://httpd.apache.org/docs/2.2/en/mod/mod_proxy_balancer.html

- POUND http://www.apsis.ch/pound/

- Perlbal http://www.danga.com/perlbal/

- LVS http://www.linuxvirtualserver.org/

Page 12: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-9

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4 システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-5. 負荷分散アルゴリズムと死活監視

対応する

コースウェア

第 6 回 負荷分散のアルゴリズム

第 7 回 死活監視の導入

1-4-基-5. 負荷分散アルゴリズムと死活監視

負荷分散を実現する代表的なアルゴリズムを紹介し、その具体的な手順を説明する。またリアルサ

ーバの死活監視技術について触れ、HA クラスタ運用時に発生する作業について説明する。

【学習の要点】

* 死活監視により障害が検出された場合でも、残りのシステムで稼動を続け、高可用性を実現す

ることができる。

* 負荷分散を実現する代表的なアルゴリズムに、ラウンドロビン、リーストコネクション、ハッシュ、フ

ァーストアンサー、L7 分散がある。

* リアルサーバの死活監視方法として、代表的なもので ICMP、TCP、独自プロトコルによるものが

ある。

* 負荷分散と死活監視は別個に動作するため、障害検出時に負荷分散対象の情報を更新する

よう、連携する必要がある。

図 1-4-基-5. ラウンドロビン時の死活監視

監視サーバ

DNS

クライアント

192.168.0.1 192.168.0.2 192.168.0.3

①障害

②障害検知

www.xxx.xxx 192.168.0.1www.xxx.xxx 192.168.0.2www.xxx.xxx 192.168.0.3

③削除

Page 13: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-10

【解説】

1) リアルサーバを選出するアルゴリズム

* ラウンドロビン(round robin)

存在するリアルサーバへ順番に振り分けることで負荷分散を実現する方式。最も単純で無難

な方式であり、負荷も少ないが応用性も低い。

* リーストコネクション(least connections)

処理中のコネクション数の最も少ないリアルサーバに接続する方式。コネクションを開放した

サーバに優先接続されるために、分散効率が良い。ただし、能力差のあるサーバを使って分散

構成を組む場合、能力の大きいサーバの稼動効率が相対的に落ちる。応答が障害レベルまで

に遅くなったサーバに、優先接続されてしまうリスクもある。

* ハッシュ(hash)

ハッシュ関数を用いて、ソース IP アドレスを元にサーバを選択し、なるべく同じユーザは同じ

サーバへ接続するようにする意図がある場合に好んで用いられる方式。しかし、プロキシ経由な

どで NAT越えをして接続するユーザが極端に多いと、うまくバランスされないことになる。

* ファーストアンサー(first answer)

最も応答の早いサーバに接続する方式。数年のスパンで拡張されるシステムであれば、世代

の異なるサーバを使うことにならざるを得ず、サーバ単体能力に差が出て来る。こういった場合

には、ファーストアンサーが有効である。

* L7 分散

HTTP パケットの Cookie 情報などを元に分散する方式。ハッシュ方式と合わせて分散性を高

めるために使われる。また、マルチセッション時に同一サーバへの接続を維持したい場合に有

効である。

2) リアルサーバの死活監視方式

負荷分散を実現するにあたり、障害が発生してサービスを提供できなくなったサーバを検出し、

振り分け対象から除外することが必要である。ここでは、リアルサーバの死活監視を行う方式のうち

代表的なものを説明する。

* ICMP

監視対象のリアルサーバに対し、ICMP Echo Request(ping)を送信し、応答が返ってくるかど

うかにより、対象サーバの死活監視を行う。この方法の場合、対象サーバのネットワークが機能

していることまでは確認できるが、サービスが正常稼働しているかどうかまでは確認できない。

* TCP

監視対象のリアルサーバに対し、TCP コネクションの確立を試み、その正否で対象サーバの

監視を行う。この方法の場合、監視対象サービスが使用するポートへの接続を試みることで、サ

ービスが要求を受信可能な状態(LISTEN 状態)であるかどうかまで確認することができる。

* 独自プロトコル

監視のための通信手順を独自に取り決め、その手順に従って、監視対象のリアルサーバへ

アクセスし、その正否で対象サーバの監視を行う。コネクションレスである UDP を用いたサービ

スで監視を行う場合や、実際にサービスが利用可能であることを確認するように作り込む場合に

この方法を用いる。柔軟な監視が可能である反面、監視コストは最も高い。

Page 14: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-11

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4 システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-6. LVS によるロードバランサーの実現方法

対応する

コースウェア

第 5 回 負荷分散機構の導入

1-4-基-6. LVS によるロードバランサーの実現方法

LVS (Linux Virtual Server)を利用してHA クラスタを構築する方法について解説する。その構成要

素を説明し、IPVS カーネルの構築、ipvsadm および keepalived のビルド、テスト環境の構築、DSR

(Direct Server Return)の構築といった具体的な手順を示す。

【学習の要点】

* LVS(Linux Virtual Server)は、Linux サーバにおいて、HPC、HA、ロードバランサーの機能を動

作させるソフトウェア群である。

* LVS を用いたロードバランサーは、IPVS 対応カーネル、ipvsadm、leepalived、iptables により構

成される。

* LVS による負荷分散には、振り分け時のアドレス変換方式によって主に NAT 方式と DSR 方式

の2通りがある。

* LVS でのロードバランサーは、Linux ディストリビューションによっては、モジュールをロードする

だけで構築することができる。

図 1-4-基-6. LVS の概念

LAN/WAN

ロードバランサLinux Box

リアルサーバ1

リアルサーバ2

........ リアルサーバn

インターネット/イントラネット

ユーザ

Page 15: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-12

【解説】

1) LVS を用いたロードバランサーの構成要素

* IPVS

Linux カーネル内に実装された IP ロードバランサー

* ipvsadm

IPVS の負荷分散ルールを設定するための管理ツール

* keepalived

LVS の分散先リアルサーバの死活監視を行うデーモン

* iptables

Linux カーネルに実装されたパケットフィルタリング機能およびそれを操作するコマンド

* iproute

IP アドレスやルーティングテーブルを操作するための管理ツール

2) NAT 方式と DSR 方式について

LVSによる負荷分散には、振り分け時のアドレス変換方式によって主にNAT方式とDSR方式の

2通りがある。

* NAT (Network Address Translation)

ロードバランサーは、クライアントからのリクエストを受け取り、宛先 IP アドレスをリアルサーバ

のアドレスに書き換えて、リアルサーバへ転送する。また、リアルサーバからクライアントへのレス

ポンスを受け取り、送信元IPアドレスをロードバランサーのアドレスに書き換えてからクライアント

へ返す。このように、ロードバランサーにて、往路では宛先IP、復路では送信元IPの書き換えを

行う。

* DSR(Direct Server Return)

DSR 方式では NAT と異なり、クライアントとリアルサーバの間でデータを中継する際に、IP ア

ドレスの書き換えを行わない。そのため、IP ヘッダに書かれる送信元、あるいは宛先の IP アドレ

スが、実際の IP と異なる局面が生じ、正しく処理するためには、iptables と iproute(ip コマンド)を

用いて特殊な設定をする必要がある。

3) LVS を用いたロードバランサーの構築

* インストール

IPVSは、最近のRedHat系Linuxディストリビューションでは、標準でローダブルモジュールと

して用意されていることが多く、モジュールをロードするだけで使用が可能である。

また ipvsadmおよび keepalived についても、最近のRedHat 系 Linux ディストリビューションで

は標準でRPMパッケージとして用意されていることが多く、このパッケージをインストールするだ

けで使用が可能である。

* テスト環境の構築

DSR 方式により、LVS を用いたロードバランサーのテスト環境を構築する。1台のロードバラン

サー用サーバから、2 台の Web サーバへアクセスを分散させる。ロードバランサー用サーバに

IPVS を設定し、後方にある 2 台のWeb サーバへアクセスを分散させる。

Page 16: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-13

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4. システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-7. ミドルウェアによる負荷分散

対応する

コースウェア

第 11 回 ミドルウェア~アプリケーションにおける負荷分散

1-4-基-7. ミドルウェアによる負荷分散

Tomcat や JBoss などのミドルウェアレベルで負荷分散クラスタを構築する方法について解説する。

ここでは Apache と Tomcat の組み合わせた場合を例にして、具体的な構築手順を示す。

【学習の要点】

* Tomcat や JBoss などのアプリケーションサーバは負荷分散のため機能を標準で備えている。

* Tomcat を負荷分散させるためには、Apacheのmod_proxyモジュールによってTomcat と連携さ

せる。

* クラスタ構成の Tomcat サーバ間でセッションデータを共有するため、セッションレプリケーション

機能を利用する。

図 1-4-基-7. セッションレプリケーションの仕組み

Linux Box

Web #1 Web #2

mod_proxymod_proxy_ajp

mod_proxy_balancer

mod_proxymod_proxy_ajp

mod_proxy_balancer

AP #1

Tomcat

Apache Apache

AP #2

Tomcat

Page 17: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-14

【解説】

1) Web アプリケーションの負荷分散の仕組み

* Web サーバによる負荷分散

ユーザから受け付けたリクエストを、複数の AP サーバに振り分ける機能が必要である。また、正

常なサーバのみに振り分けるようにするため、AP サーバを死活確認する機能が必要である。こ

の仕組みについては、「I-4-5. 負荷分散アルゴリズムと死活監視」にて詳細に解説する。

* AP サーバ間でのセッションレプリケーション

Web サーバでの負荷分散により、同じユーザからの HTTP リクエストが同じ AP サーバに来ると

は限らない。そのため、アプリケーションサーバ間でセッション情報を共有する必要がある。ネッ

トワーク経由でセッション情報を互いにコピーする方式や、共有 DB・共有ストレージに保存する

方式などがある。

2) Apache の負荷分散機能の設定

* 関連モジュールの組み込み

Apache には以下のようなモジュールを組み込み、Proxy 機能・負荷分散機能を実現する。Web

サーバとアプリケーションサーバ間の通信を HTTP にするか、AJP(Tomcat との専用接続プロト

コル)にするかで、モジュールの組み合わせが変わる。

- mod_proxy Proxy 機能を実現するコアモジュール

- mod_proxy_balance 負荷分散機能を実現するモジュール

- mod_proxy_http HTTP の Proxy 機能を実現するモジュール

- mod_proxy_ajp AJP の Proxy 機能を実現するモジュール

- mod_proxy_jk AJPのProxy機能・負荷分散機能を実現するモジュール(非標準)

* httpd.conf の設定

<Proxy>、ProxyPass、BalancerMember 等のディレクティブを適切に設定する。

3) Tomcat のセッションレプリケーションの設定

* レプリケーション方式

Tomcat は Tomcat 間でセッション情報をコピーし合う方法の他、DB への保存、NFS 等のネット

ワークファイルシステムへの保存という方法を取ることができる。

* server.xml の設定

<Cluster/>等のエレメントを適切に設定する。

* 対象Web アプリケーションの web.xml の設定

<distributable/>エレメントを適切な位置に設定する。

4) 起こり得る問題

Web サーバ及びアプリケーションサーバで連携する負荷分散は便利であるが、きちんと設計せず

に利用すると思わぬところで不具合が発生する。以下によくある例を示す。

* セッションオブジェクトにシリアライズ不可能なオブジェクトを含めてしまう

* セッションレプリケーションのための通信で、ネットワーク帯域を使いきってしまう

Page 18: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-15

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4 システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-8. VRRP による冗長化

対応する

コースウェア

第 10 回 ハードウェアレベルにおける負荷分散

1-4-基-8. VRRP による冗長化

ルーターを冗長化するVRRP (Virtual Router Redundancy Protocol)とは何かについて解説し、ネット

ワークの構成方法からkeepalivedの設定といった冗長化の実現方法を示す。さらにkeepalived運用

時の留意点など実践的なポイントを紹介する。

【学習の要点】

* VRRP とは、ルーターの冗長化をサポートする標準プロトコルである。

* keepalived は、VRRP を用いたロードバランサーの冗長化が可能である。

* プリエンプティブモードは、最もプライオリティが高いルーターが故障から復旧した場合の動作

を指定するパラメーターである。

図 1-4-基-8. VRRP 概念図

仮想ルータ

ルータ1 ルータ2

バックアップマスタ

端末A(デフォルトゲートウェイ

=仮想ルータ)

通常時の経路障害時の経路

インターネット

Page 19: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-16

【解説】

1) VRRP(Virtual Router Redundancy Protocol)とは

VRRP とは、RFC3768 で定義された、ルーターの冗長化をサポートする標準プロトコルである。

VRRP を使えば、「マスター・ルーター」と呼ばれる実際に稼動しているルーターに障害が発生した

場合、直ちに「バックアップ・ルーター」と呼ばれる常時スタンバイさせている予備のルーターへ自

動的に切り替えられて処理を引き継げるようになる。このように、マスター機の障害を検知してバック

アップ機へ役割を引き継ぐことを、一般にフェイルオーバーと言う。

VRRP では、マスター・ルーターが、自分自身が正常に稼働中であることを、Advertisement

Message をマルチキャスト送信することで通知する。バックアップ・ルーターは、この Advertisement

Message が受信している限り、マスター・ルーターが正常稼働状態にあると判断する。一定時間こ

の Advertisement Message が受信されなかった時には、バックアップ・ルーターはマスター・ルータ

ーになるべく、Advertisement Message を送信する。自分自身よりもプライオリティの高いバックアッ

プ・ルーターからの Advertisement Message を受信しなければ、マスター・ルーターとして稼働す

る。

2) VRRP によるロードバランサーの冗長化

I-10-4 で構築した Web サーバの負荷分散環境では、ロードバランサーが1台のみであった。こ

の構成では、ロードバランサーが障害等により停止した場合、Web サーバへアクセスできなくなる。

高い信頼性が求められる環境では、サーバ1台の障害でサイト全体が停止することは許されない。

なお、この状態を、ロードバランサーが単一障害点(Single Point of Failure)となっている、と言う。

keepalived は、VRRP を用いて、ロードバランサーの冗長化構成を取ることができる。バックアップ

用のロードバランサー機を増設し、keepalived に VRRP による冗長化設定を行うことで、マスター用

のロードバランサーが停止した場合には、バックアップ用のロードバランサー機がマスターとなる。

こうしてロードバランサーの役割を引き継ぐことで、サイト全体の停止を防ぐことができる。

3) プリエンプティブモードについて

プリエンプティブモードは、最もプライオリティが高いルーターが故障から復旧した場合の動作を指

定するパラメーターである。プリエンプティブモードを有効にすると、復旧したプライオリティが高い

ルーターがマスターとなる。この場合、プライオリティが高いルーターが頻繁に停止と復旧を繰り返

すような動作をした場合、マスター・ルーターの交代が頻繁に発生し、ネットワークが不安定となる。

プリエンプティブモードを無効とすることで、このプライオリティが高いルーターが復旧した時にマス

ターを交代しないようにする。

Page 20: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-17

スキル区分 OSS モデルカリキュラムの科目 レベル

システム分野 1-4 システムアーキテクチャに関する知識 基本

習得ポイント 1-4-基-9. 安全な通信路による分散システム

対応する

コースウェア

第 12 回 セキュアチャンネル

1-4-基-9. 安全な通信路による分散システム

インターネットのようにセキュリティが保たれていないネットワークの上に安全な通信路を構成し、そ

の通信路を介して分散システムを構成することも多い。暗号化により安全な通信路を確立するため

の技術として、SSL/TLS の基本的な仕組みを紹介する。

【学習の要点】

* 分散システムはインターネットのようなセキュアとは限らないネットワーク上に構成される場合が

ある。

* 暗号技術(公開鍵暗号)を利用することで、セキュアでないネットワーク上にセキュアな通信路を

論理的に構成することが可能である。

* セキュアな通信路の代表例として SSL (Secure Socket Layer)/TLS (Transport Layer Security)

がある。

図 1-4-基-9. 安全な通信路による分散システム

サーバー

セキュアチャンネルSSL/TLS

インターネット・公衆回路網

クライアント

・メッセージの保護・ノード間の認証

Page 21: 1-4-基 システムアーキテクチャに関する知識 · 2020-01-10 · 様々なシステムアーキテクチャの概要を解説する 1 1-4-基-2.分散情報システムの歴史と特徴

1-4-基-18

【解説】

1) 分散システムの通信セキュリティ

* 分散システムはしばしばクライアントサーバモデルを用いて構成されることが多い。このモデル

は、それぞれのノードがクライアントでありかつサーバである、という二つの役割を担うことが普

通である。

* 分散システムの構成として、物理的に離れた場所をノードとする計算機同士を通信させる構成

も必要になることがある。その場合、必ずしもセキュリティを確保された通信路を構成することが

できないことが多い。

* こういったクライアントサーバモデルに基づいた分散システムの通信セキュリティを確保する概

念が、セキュアチャンネルと呼ばれる概念である。

2) セキュアチャンネル

* クライアントサーバモデルに基づいた分散システムの通信路を確保するために、通信するクライ

アント-サーバ間に暗号化技術を用いて論理的にセキュアな通信を確立した通信路をセキュア

チャンネルと呼ぶ。

* セキュアチャンネルは、送信者と受信者の間に交わされるメッセージに対する盗聴、改竄、なり

すまし、否認から保護する目的をもつ。

* セキュアチャンネルは、単に通信路の暗号化を実現するだけでなくクライアントとサーバ同士の

認証も同時に行う。

* セキュアチャンネルを実現する技術には、公開鍵暗号が用いられることが多い。

* 物理的に遠隔な計算機間で分散システムを構成する実際の場面では、認証に必要な暗号鍵

の運用が必要である。クライアントとサーバ相互の暗号鍵をどのようにセキュアに受け渡しをす

るかを考慮することが重要となる。

3) 様々なセキュアチャンネルの実装

* 分散ファイルシステムを考えた場合、セキュアチャンネルとしての実装はセキュア RPC や

Coda(http://www.coda.cs.cmu.edu/)などがある。

* Web 分散システムを考えた場合、セキュアチャンネルとしてもっとも多く利用されているプロトコ

ルが SSL(Secure Sockets Layer)/TLS(Transport Layer Security)である。

定評のあるオープンソース SSL/TLS 実装としては、OpenSSL が著名である。