More Related Content Similar to IaaSクラウドを支える基礎技術 v1_0
Similar to IaaSクラウドを支える基礎技術 v1_0 (20) More from Etsuji Nakai (20) IaaSクラウドを支える基礎技術 v1_01. オープンクラウド・キャンパス
Eucalyptusに学ぶ
IaaSクラウドを支えるインフラ技術
中井悦司
Twitter @enakai00
2. IaaSクラウドを支えるインフラ技術
自己紹介
中井悦司(なかいえつじ)
– Twitter @enakai00
日々の仕事
– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K.
好評発売中
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。
昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
2 Open Cloud Campus
5. IaaSクラウドを支えるインフラ技術
企業向けのクラウドに求められる5つの鍵
5つの鍵 内容 Linux/OSSの優位性
柔軟なサービス お客様の必要に応じて自由にリソースの Linux/OSSは、ライセンスの制約に縛られずに
追加、変更ができる環境を提供 リソースの追加が可能
適切なサービスレベル お客様が必要とするサービスレベルとそ Linux/OSSベースのソリューションでサービス
れに見合った価格のサービスを提供 管理機能の実装が可能
可搬性のある環境 お客様のビジネス要件に応じて、様々な Linux/OSSにより、特定ベンダに依存しない
クラウドサービスの選択・移行が可能な オープンスタンダード技術が活用可能
環境を実現
セキュリティと 社内データセンターと同等の安全で管理 企業システムに求められるセキュリティ品質を
コンプライアンス された環境を実現 満たすOSとしての実績を持つLinux
パートナーエコシステム 複数の企業が連携してクラウドサービス Linux/OSSは、クラウドサービス提供企業の共
を提供する環境を確立 通基盤技術としてのデファクト・スタンダード
さまざまな技術やサービスが連携するクラウド環境では、
標準技術としてのLinux/OSSの価値が発揮されます。
(出典)Linux and Commercial Software: Combining to Support the Cloud Environment
http://www.dbta.com/downloads/Hurwitz-IBM_Linux_Cloud.pdf
5 Open Cloud Campus
6. IaaSクラウドを支えるインフラ技術
利用者とサービス内容でクラウドを分類
企業内のユーザーのみが利用 複数企業のユーザーが共同利用
Privateクラウド Publicクラウド
アプリケーション環境を提供 = SaaS
(エンドユーザーがすぐに使えるアプリケーション・サービス)
OS + Middleware 環境を提供 = PaaS
(プログラマがアプリケーションを開発できる環境)
Eucalyptus OS 環境を提供 = IaaS Amazon
(管理者がシステムを構築・運用できる環境) EC2/S3
6 Open Cloud Campus
7. IaaSクラウドを支えるインフラ技術
Eucalyptusを実現するインフラ技術
クラウドコントローラ
認証技術
クライアント SSH 鍵認証 Warlus
X.509 証明書
パブリック
ネットワーク 仮想マシン
イメージ
API プログラミング iptables(NAT/ ディスクイメージ
パケットフィルタリング) クラスタコントローラ
自動化技術 VLAN / ストレージ技術
仮想ブリッジ
ストレージコントローラ
ネットワーク技術
プライベート
仮想化技術 OS 基礎技術 ネットワーク EBS
イメージ
iSCSI
サーバ仮想化 カーネル
さまざまなインフラ技術の
(KVM/Xen) 起動プロセス
集大成がクラウドなのです。
・・・・
ノードコントローラ ノードコントローラ
7 Open Cloud Campus
9. IaaSクラウドを支えるインフラ技術
Eucalyptusを実現するインフラ技術
クラウドコントローラ
認証技術
クライアント SSH 鍵認証 Warlus
X.509 証明書
パブリック
ネットワーク 仮想マシン
イメージ
API プログラミング iptables(NAT/ ディスクイメージ
パケットフィルタリング) クラスタコントローラ
自動化技術 VLAN / ストレージ技術
仮想ブリッジ
ストレージコントローラ
ネットワーク技術
プライベート
仮想化技術 OS 基礎技術 ネットワーク EBS
イメージ
iSCSI
サーバ仮想化 カーネル
さまざまなインフラ技術の
(KVM/Xen) 起動プロセス
集大成がクラウドなのです。
・・・・
ノードコントローラ ノードコントローラ
9 Open Cloud Campus
11. IaaSクラウドを支えるインフラ技術
Linuxカーネルの起動プロセス
物理サーバ環境や通常のサーバ仮想化環境では、Linuxカーネル(vmlinuz-*)と初期ラムディ
スク(initrd-*、initramfs-*)は、/bootファイルシステムに保存されています。
ブートローダ(GRUB)はこれらをメモリに読み込んだ後に、Linuxカーネルを起動します。
– ブートローダはBIOSの機能で/bootファイルシステムにアクセスします。BIOSの機能制限によ
り、/bootファイルシステムのディスク上の配置に制限が出たりします。(いわゆる「XXGBの壁」)
Linuxカーネルは、メモリを利用したラムディスク領域をマウントして、初期ラムディスクの
内容を展開した後に、そこに含まれる「initスクリプト」を実行します。
– initスクリプトは、ディスクアクセスに必要なデバイスドライバをロードして、OS領域
(ルートファイルシステム)をマウント後、最初のプロセス/sbin/initを実行します。
物理メモリ
起動ディスク
ブートローダが
Linuxカーネル 読み込み
ブートローダ (GRUB)
初期ラムディスク
/bootファイルシステム
ラムディスク領域 ラムディスク領域
に展開 Linuxカーネル
・デバイスドライバ
・initスクリプト 初期ラムディスク
※参考資料
プロのためのLinuxシステム構築・運用技術「6.4.1 Linuxのブートプロセス」
11 Open Cloud Campus
12. IaaSクラウドを支えるインフラ技術
Eucalyptusにおけるイメージ管理
カーネルイメージと初期ラムディスクは、原理的にはOS領域(ルートファイルシステム)と
は独立して提供されるものです。
– 例えばPXEブート環境では、tftpでカーネルと初期ラムディスクをメモリに読み込んで起動します。
– その昔、BIOSからアクセスできないディスクにLinuxをインストールした環境では、フロッピーディ
スクにカーネルイメージと初期ラムディスクを入れて起動していた事も・・・。
Eucalyptusでは、マシンイメージ(ルートファイルシステム)とカーネルイメージ、ラム
ディスクイメージを明示的に分離することで、不適切なカーネルの使用に伴う問題の発生を
防止しています。
カーネルイメージ、ラムディスクイメージは管理者のみが新規登録可能。
– 管理者は使用する仮想化ハイパーバイザに適合したイメージを事前に用意する。
一般ユーザはマシンイメージのみを編集、新規登録可能。
– 一般ユーザには、ルートファイルシステムに導入されたアプリケーションが重要。
12 Open Cloud Campus
13. IaaSクラウドを支えるインフラ技術
仮想ディスクイメージの構成
ノードコントローラは、次の手順でVMインスタンスを起動します。
– 必要なマシンイメージ、カーネルイメージ、ラムディスクイメージをWalrusからダウンロード
– 指定サイズの仮想ディスクイメージ・ファイルを新規作成して、3つのパーティションを構成
• 第1パーティションは、マシンイメージの内容をコピーしてルートファイルシステムにする
• 第2パーティションは空のファイルシステムを作成して、エフェメラル領域にする
• 第3パーティションはSwap領域としてフォーマットする
• 第1パーティションをループマウントして、/root/.ssh/authorized_keysにユーザの公開鍵を登録する
– 仮想ディスクイメージ・ファイルをVMインスタンスの仮想ディスクとして接続
– カーネルイメージとラムディスクイメージを使用してVMインスタンスを起動
マシンイメージ 空のファイルシステムを作成
Swap領域としてフォーマット
マシンイメージをコピー
VMインスタンスに接続
新規仮想ディスクイメージ
OS領域 エフェメラル領域 Swap領域
13 Open Cloud Campus
14. IaaSクラウドを支えるインフラ技術
(参考)ループマウントの利用方法
仮想ディスクイメージは、ループバックデバイス/dev/loopXに紐付けることで、通常のブ
ロックデバイス(/dev/sdX)と同様にマウントすることが可能です。
– 例:isoイメージファイルをループマウント
• loopオプションを指定すると自動的にループバックデバイスに紐付けられます。
# mount -o loop hoge.iso /mnt/hoge
# df | grep loop
/dev/loop0 3351190 3351190 0 100% /mnt/hoge
– 例:パーティションを含むディスクイメージをマウント
• losetupコマンドで紐付けた後に、kpartxコマンドで各パーティションを/dev/mapper/loopXpYにマッピングし
ます。
物理ディスク
# losetup -fv volume01.img
Loopデバイス は /dev/loop0 です
# kpartx -av /dev/loop0
add map loop0p1 (253:0): 0 208782 linear /dev/loop0 63
/dev/sdX
add map loop0p2 (253:1): 0 8193150 linear /dev/loop0 208845
add map loop0p3 (253:2): 0 1044225 linear /dev/loop0 8401995
# mount /dev/mapper/loop0p2 /mnt/image
# ls -l /mnt/image/ 仮想ディスクイメージ
合計 184
drwxr-xr-x. 2 root root 4096 2月 14 11:56 2011 bin
drwxr-xr-x. 2 root root 4096 2月 14 09:57 2011 boot
drwxr-xr-x. 2 root root 4096 2月 14 09:57 2011 dev /dev/loopX
drwxr-xr-x. 74 root root 4096 3月 4 08:56 2011 etc
(以下略)
volume01.img
# umount /mnt/image
# kpartx -d /dev/loop0 ループバック・デバイス
# losetup -d /dev/loop0
14 Open Cloud Campus
16. IaaSクラウドを支えるインフラ技術
Eucalyptusを実現するインフラ技術
クラウドコントローラ
認証技術
クライアント SSH 鍵認証 Warlus
X.509 証明書
パブリック
ネットワーク 仮想マシン
イメージ
API プログラミング iptables(NAT/ ディスクイメージ
パケットフィルタリング) クラスタコントローラ
自動化技術 VLAN / ストレージ技術
仮想ブリッジ
ストレージコントローラ
ネットワーク技術
プライベート
仮想化技術 OS 基礎技術 ネットワーク EBS
イメージ
iSCSI
サーバ仮想化 カーネル
さまざまなインフラ技術の
(KVM/Xen) 起動プロセス
集大成がクラウドなのです。
・・・・
ノードコントローラ ノードコントローラ
16 Open Cloud Campus
17. IaaSクラウドを支えるインフラ技術
Eucalyptusのネットワーク構成
Managedモードネットワークでは、各VMインスタ
クライアント
ンスはプライベートIPとパブリックIPがアサインさ
れます。 パブリック
– プライベートIPはVMインスタンス間の通信に使用 ネットワーク
– パブリックIPは外部からの接続に使用
• パブリックIPをアサインしないことで、外部から接続でき
ないVMインスタンスを作成することも可能
クラスタコントローラ
VMインスタンスは、どれか1つのセキュリティグ
ループに属します。
プライベートネットワーク用
ネットワークスイッチ
– 同一のセキュリティグループのVMインスタンスのみ
プライベートネットワーク通信が可能
→ LinuxのVLAN機能でネットワークを分離
– セキュリティグループごとに、パブリックネットワー ・・・・
クからのアクセスを制限(指定のアドレスから、指定
のポートに対してのみ接続を許可) ノードコントローラ ノードコントローラ
→ Linuxのパケットフィルタリング機能(iptables)
を利用
17 Open Cloud Campus
18. IaaSクラウドを支えるインフラ技術
基本的なVLANの仕組み
VLANとは、L2スイッチ内部に複数のネットワークセグメントを作成する機能です。
– ポートごとに、内部でどのVLANに接続するかを指定するのが「ポートVLAN」です。
– 「ポートVLAN」に設定されたポートに接続する機器は、VLAN用の特別な設定は不要です。
スイッチ間をカスケード接続する際は、接続するポートを「タグVLAN」に設定します。
– このポートを出入りするパケットには、どのVLANに行くのかを示す「VLANタグ」が付けられます。
スイッチ#1 スイッチ#2
VLAN100 VLAN200 VLAN100 VLAN200
1 2 3 4 5 1 2 3 4 5
ポートVLAN100 ポートVLAN200 ポートVLAN100 ポートVLAN200
タグVLAN タグVLAN
※参考資料 この部分には、VLANタグ(VLAN100、もしくはVLAN200)
プロのためのLinuxシステム構築・運用技術 付きのパケットが流れる
「4.1.1 IPネットワークの基礎」
18 Open Cloud Campus
19. IaaSクラウドを支えるインフラ技術
サーバ仮想化環境でのVLANの利用
スイッチ#1
サーバ仮想化環境では、VLANを利用す
ることで、仮想マシンごとに異なるサ
VLAN100 VLAN200
ブネットに接続することができます。
– ホストLinux上でVLANタグの処理を行う
ので、仮想マシン内部(ゲストOS)では
1 2 3 4 5
VLANの存在を意識する必要がありませ
ん。
タグVLAN
ポートVLAN100 ポートVLAN200
eth0
ホストLinux
タグ付きパケット eth0.100 eth0.200
VLANデバイス
タグ無しパケット
br100 br200
仮想ブリッジ
仮想マシン#1 仮想マシン#2
※参考資料
プロのためのLinuxシステム・ネットワーク管理技術
「5.3.3 VLANデバイスのブリッジ接続」 物理サーバ
19 Open Cloud Campus
20. IaaSクラウドを支えるインフラ技術
VLANによるプライベートネットワークの構成
プライベート・ネットワーク用
Eucalyptusでは、セキュリティグループごと ネットワーク・スイッチ
に異なるVLANを用意することで、プライ VLAN10
ベートネットワークを分離します。
VLAN11
– プライベートネットワーク用スイッチのポート
は「タグVLAN」に設定する必要があります。
1 2 3 4 5
タグVLAN タグVLAN
eth0 eth0
eth0.10 eth0.11 eth0.10 eth0.11
eucabr10 eucabr11 eucabr10 eucabr11
VMインスタンス#1 VMインスタンス#3 VMインスタンス#5 VMインスタンス#7
VMインスタンス#2 VMインスタンス#4 VMインスタンス#6 VMインスタンス#8
20 ノードコントローラ#1 ノードコントローラ#2 Open Cloud Campus
21. IaaSクラウドを支えるインフラ技術
NATによるパブリックネットワーク接続
VMインスタンスに付与されたパブリックIPは、実際にはクラスタコントローラの物理NICに
アサインされます。
– クラスタコントローラがパブリックネットワークから受信したパケットをDNATでプライベートIPに
変換して、VMインスタンスに転送します。逆に、VMインスタンスからパブリックネットワークに
送信したパケットは、SNATでパブリックIPに変換して送出します。
• VMインスタンスは、クラスタコントローラの仮想ブリッジのIPアドレス(この例では10.1.2.1)をデフォルト
ゲートウェイに指定します。
– セキュリティグループごとのパケットフィルタリングもこの部分で行います。
プライベートネットワーク用
パブリック ネットワークスイッチ
ネットワーク
eth0
192.168.32.20
192.168.32.21
eth0 eth1 eth0.10
パケット eth1.10 eucabr10
フィルタリング
DNAT 10.1.2.2
eucabr10 VMインスタンス#1
SNAT 10.1.2.3
10.1.2.1
VMインスタンス#2
21 クラスタコントローラ ノードコントローラ Open Cloud Campus
22. IaaSクラウドを支えるインフラ技術
パケット転送におけるチェーンとテーブル
iptablesでNATやパケットフィルタリングの設定を行う際は、チェーンとテーブルを指定す
る必要があります。
– パケット転送時のNATとフィルタリングの設定は、次のチェーンとテーブルで行います。
• FORWARDチェーンのfilterテーブル:パケットフィルタリング処理
• PREROUTINGチェーンのnatテーブル:DNAT処理
• POSTROUTINGチェーンのnatテーブル:SNAT処理
ネットワーク#2 ネットワーク#1
パケット送信 パケット受信
POSTROUTINGチェーン PREROUTINGチェーン
natテーブル natテーブル
(SNAT処理) (DNAT処理)
FORWARDチェーン
※参考資料 filterテーブル
プロのためのLinuxシステム・ネットワーク管理技術 (パケットフィルタリング処理)
「2.4.1 チェーンとテーブルの全体像」
22 Open Cloud Campus
23. IaaSクラウドを支えるインフラ技術
Eucalyptusのiptables自動設定例
これらは、クラスタコントローラ上のiptablesで設定されます。
DNATの設定
# iptables -t nat -nL PREROUTING
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 10.1.0.0/16 169.254.169.254 tcp dpt:80 to:169.254.169.254:8773
DNAT all -- 0.0.0.0/0 192.168.32.20 to:10.1.2.2
DNAT all -- 0.0.0.0/0 192.168.32.21 to:10.1.2.3
SNATの設定
# iptables -t nat -nL POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.1.2.2 !10.1.0.0/16 to:192.168.32.20
SNAT all -- 10.1.2.3 !10.1.0.0/16 to:192.168.32.21
MASQUERADE all -- !127.0.0.0/8 !10.1.0.0/16
パケットフィルタリングの設定(adminユーザのdefaultセキュリティグループ)
# iptables -nL FORWARD
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate ESTABLISHED
ACCEPT all -- 0.0.0.0/0 !10.1.0.0/16
ACCEPT all -- 10.1.2.0/27 10.1.2.0/27
admin-default all -- 0.0.0.0/0 0.0.0.0/0
# iptables -nL admin-default
Chain admin-default (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 10.1.2.0/27 tcp dpt:22
23 Open Cloud Campus
25. IaaSクラウドを支えるインフラ技術
Eucalyptusを実現するインフラ技術
クラウドコントローラ
認証技術
クライアント SSH 鍵認証 Warlus
X.509 証明書
パブリック
ネットワーク 仮想マシン
イメージ
API プログラミング iptables(NAT/ ディスクイメージ
パケットフィルタリング) クラスタコントローラ
自動化技術 VLAN / ストレージ技術
仮想ブリッジ
ストレージコントローラ
ネットワーク技術
プライベート
仮想化技術 OS 基礎技術 ネットワーク EBS
イメージ
iSCSI
サーバ仮想化 カーネル
さまざまなインフラ技術の
(KVM/Xen) 起動プロセス
集大成がクラウドなのです。
・・・・
ノードコントローラ ノードコントローラ
25 Open Cloud Campus
26. IaaSクラウドを支えるインフラ技術
Elastic Block Storageの仕組み
Elastic Block Storage(EBS)は、ストレージコントローラ上の仮想ディスクイメージをネッ
トワーク経由でVMインスタンスの仮想ディスクとして割り当てたものです。
– EBSの実体はストレージコントローラ上に存在するので、VMインスタンスを停止してもEBSは削除
されません。新しいVMインスタンスに接続して再利用できます。
– ネットワーク経由で書き込みするので、エフェメラル領域よりIOパフォーマンスは劣ります。
一方、エフェメラル領域を含むデフォルトの仮想ディスクの実体は、ノードコントローラ上
の仮想ディスクイメージで、VMインスタンスを停止すると破棄されます。
デフォルトの Walrus
仮想ディスク 仮想ディスクイメージ マシンイメージ
ダウンロード
仮想ディスクイメージ
iSCSI接続
VM インスタンス
EBS
ストレージコントローラ
ノードコントローラ
26 Open Cloud Campus
27. IaaSクラウドを支えるインフラ技術
EBS接続の詳細
EBSボリュームは次の手順で構成されます。
– ストレージコントローラに新規仮想ディスクイメージを作成した後、これを擬似的な物理ボリュー
ム(PV)として、論理ボリューム(LV)を作成する。これをiSCSI LUNとして公開する。
• 仮想ディスクイメージを直接iSCSI LUNとして公開することも可能ですが、LVMスナップショットを利用するた
めに、あえて、一度、論理ボリュームを作成してから公開しています。
– ノードコントローラの外部接続ディスクとして、iSCSI LUNを接続した後に、ノードコントローラ上
のVMインスタンスに仮想ディスクとして割り当てる。
iSCSI接続には、Linuxが提供するターゲットとイニシエータの機能を利用します。
– 一般に、iSCSI LUNを提供する機器を「ターゲット」、iSCSI LUNを利用する機器を「イニシエー
タ」と呼びます。
仮想ディスクイメージ
EBSスナップショット
ノードコントローラ ストレージコントローラ
イニシエータ ターゲット
iSCSI接続
※参考資料 論理ボリューム LVMスナップショット
プロのためのLinuxシステム構築・運用技術「3.3.2 iSCSI」
27 Open Cloud Campus
28. IaaSクラウドを支えるインフラ技術
(参考)EBSと同等のiSCSI接続を実現する手順
下記は、EBSと同等のiSCSI接続を手動で行う手順の例です。
– ターゲット側では、仮想ディスクイメージ・ファイルをループバック・デバイスに紐付けることに
より物理ボリュームとして扱っています。
ターゲット側の設定
# yum install scsi-target-utils
# dd if=/dev/zero of=/opt/volume02.img bs=1M count=576
# losetup -fv volume02.img
Loopデバイス は /dev/loop0 です
# pvcreate /dev/loop0
Physical volume "/dev/loop0" successfully created
# vgcreate vg01 /dev/loop0
Volume group "vg01" successfully created
# lvcreate -L 512M -n lv01 vg01
Logical volume "lv01" created
# cat <<EOF >> /etc/tgt/targets.conf
<target iqn.2011-06.com.example.server01:tgt01>
backing-store /dev/vg01/lv01
</target>
EOF
# service tgtd start
イニシエータ側の設定
# yum install iscsi-initiator-utils
# service iscsi start
# iscsiadm -m discovery --type sendtargets --portal <ターゲットのIPアドレス>
# service iscsi restart
28 Open Cloud Campus
30. IaaSクラウドを支えるインフラ技術
Eucalyptusを実現するインフラ技術
クラウドコントローラ
認証技術
クライアント SSH 鍵認証 Warlus
X.509 証明書
パブリック
ネットワーク 仮想マシン
イメージ
API プログラミング iptables(NAT/ ディスクイメージ
パケットフィルタリング) クラスタコントローラ
自動化技術 VLAN / ストレージ技術
仮想ブリッジ
ストレージコントローラ
ネットワーク技術
プライベート
仮想化技術 OS 基礎技術 ネットワーク EBS
イメージ
iSCSI
サーバ仮想化 カーネル
さまざまなインフラ技術の
(KVM/Xen) 起動プロセス
集大成がクラウドなのです。
・・・・
ノードコントローラ ノードコントローラ
30 Open Cloud Campus
31. IaaSクラウドを支えるインフラ技術
鍵ペアによる認証の基礎
ネットワーク上の認証には、ユーザ認証とサーバ認証があります。
– ユーザ認証:接続を許可するサーバから見て、本物のユーザであることを確認する。
– サーバ認証:接続するユーザから見て、本物のサーバであることを確認する。
これらの認証には、主に非対称鍵暗号を利用した方法が用いられます。
– 非対称鍵暗号では、暗号化に使う鍵と復号化に使う鍵が異なります。
– 非対称鍵暗号では、鍵の所有者だけが保管するべき秘密鍵と、万人に配布しても構わない公開鍵を
利用します。秘密鍵は誤って他人の手に渡らないように管理する必要があります。
• 下図は、事前に配布した公開鍵で暗号化したメッセージを送ってもらう例です。このメッセージは、秘密鍵を持
つ自分だけが復号化して読むことができます。
公開鍵
僕の秘密鍵がないと誰にも Aさんにもらった公開鍵で
復号化できないから安心だ 暗号化して送るよ
秘密鍵
公開鍵
Aさん
31 Open Cloud Campus
33. IaaSクラウドを支えるインフラ技術
ユーザ証明書の鍵ペアによるSOAP APIユーザ認証の例
クライアントは、リクエストメッセージのハッシュ値を秘密鍵で暗号化して送ります。サー
バは、対応する公開鍵で復号化して正しいハッシュ値であることを確認します。
– ユーザAの公開鍵で復号化できる暗号を生成できるのは、対応する秘密鍵を持ったユーザAだけなの
で、メッセージの送信元が本物のユーザAであることが分かります。
– メッセージの暗号化ハッシュ値を添付することを「メッセージに署名する」と言います。メッセー
ジが改竄されるとハッシュ値が合わなくなるので、メッセージ改竄を防止する効果もあります。
ユーザ情報データベース
ユーザAの証明書
ユーザA秘密鍵
ユーザA公開鍵
復号化 暗号化
ハッシュ値 ハッシュ値
リクエストメッセージと
比較 暗号化ハッシュ値(署名) ハッシュ値計算
を管理サーバに送付
リクエストメッセージ
Eucalyptus管理サーバ ハッシュ値
クライアント
(クラウドコントローラ)
ハッシュ値計算
リクエストメッセージ ※実際の処理内容を簡略化して説明しています。
33 Open Cloud Campus
34. IaaSクラウドを支えるインフラ技術
鍵ペアによるSSHユーザ認証
公開鍵認証でSSH接続する際は、次の流れでユーザ認証が行われます。
– SSH接続を受け付けたサーバ(SSHデーモン)は、乱数を発生してユーザの公開鍵で暗号化したもの
をクライアント(SSHクライアント)に送信します。
– クライアントは対応する秘密鍵で復号化して、そのハッシュ値を返答します。
– サーバは、元の乱数のハッシュ値を計算して、クライアントの返答と一致することを確認します。
VMインスタンス起動時に ユーザA ユーザA
ノードコントローラが保存 SSH 公開鍵 SSH 秘密鍵
暗号化 復号化
乱数 乱数
ハッシュ値計算 ハッシュ値計算
VM インスタンス ハッシュ値 ハッシュ値
SSH クライアント
比較
※参考資料
プロのためのLinuxシステム構築・運用技術「2.3.3 SSHの利用方法」
34 Open Cloud Campus
35. IaaSクラウドを支えるインフラ技術
鍵ペアによるSSHサーバ認証
SSH接続の際は、ユーザから見て接続先のサーバが本物であることを確認する、サーバ認証
も行われます。
– クライアントはサーバからサーバ証明書の公開鍵を受け取って保存します。
– クライアントは乱数をサーバの公開鍵で暗号化してサーバに送り、サーバは対応する秘密鍵で復号
化して、そのハッシュ値を返送します。
– クライアントは元の乱数のハッシュ値を計算して、サーバの返答と一致することを確認します。
サーバ証明書 サーバ証明書 初回接続時にダウンロード
秘密鍵 公開鍵 (known_hostsに保存)
復号化 暗号化
乱数 乱数
ハッシュ値計算 ハッシュ値計算
VM インスタンス ハッシュ値 ハッシュ値
SSH クライアント
比較
※参考資料
プロのためのLinuxシステム構築・運用技術「2.3.3 SSHの利用方法」
35 Open Cloud Campus
36. IaaSクラウドを支えるインフラ技術
SSHサーバ認証に伴う注意点
新しいサーバに初めて接続する際は、サーバ証明書の受け入れ確認メッセージが表示される
場合があります。
# ssh root@server01 新しいサーバ証明書の
The authenticity of host 'server01 (XXX.XXX.XXX.XXX)' can't be established. 受け入れ確認メッセージ
RSA key fingerprint is 7c:e6:a3:78:a6:54:a8:4b:f2:87:0b:d5:5d:66:9c:d9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server01' (RSA) to the list of known hosts.
以前に接続したことのあるサーバで、前回と異なる公開鍵を受け取った場合、偽者のサーバ
の可能性があるためにクライアントは接続を拒否します。
– 何らかの理由で、公開鍵が変更されたことがわかっている場合は、~/.ssh/known_hostsの該当の
エントリを削除して、再度、SSH接続します。
# ssh root@server01 サーバ証明書が前回と異なる
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 場合の警告メッセージ
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
e3:d4:87:e2:5b:34:21:8b:7b:40:7a:41:93:91:06:d0.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:1
RSA host key for server01 has changed and you have requested strict checking.
Host key verification failed.
36 Open Cloud Campus
38. IaaSクラウドを支えるインフラ技術
Eucalyptusを実現するインフラ技術
クラウドコントローラ
認証技術
クライアント SSH 鍵認証 Warlus
X.509 証明書
パブリック
ネットワーク 仮想マシン
イメージ
API プログラミング iptables(NAT/ ディスクイメージ
パケットフィルタリング) クラスタコントローラ
自動化技術 VLAN / ストレージ技術
仮想ブリッジ
ストレージコントローラ
ネットワーク技術
プライベート
仮想化技術 OS 基礎技術 ネットワーク EBS
イメージ
iSCSI
サーバ仮想化 カーネル
さまざまなインフラ技術の
(KVM/Xen) 起動プロセス
集大成がクラウドなのです。
・・・・
ノードコントローラ ノードコントローラ
38 Open Cloud Campus
39. IaaSクラウドを支えるインフラ技術
まとめ
IaaSクラウドインフラは、『単純なものを組み合わせて
複雑なものを創り上げていく』と言うUnix/Linuxの思想に
とてもよく適合する仕組みです。
まずは個々の基礎技術を根本から理解して、その上で、
『これらをどのように組み合わせれば最適なクラウドイン
フラが実現できるのか』というクラウドアーキテクチャの
追求を行うことが大切です。
39 Open Cloud Campus
41. IaaSクラウドを支えるインフラ技術
GlusterFSとは
コモディティ・ハードウェアを利用して、スケールアウト型の分散ファイルシス
テムを構築するソフトウェア
元々は、Lawrence Livermore National LabsのHPC(High Performance
Computing)クラスタで使用するために開発された分散ファイルシステム
石油・ガスなどの資源開発企業からの要望で、大規模ストレージ・ソリューショ
ンとしてGluster社が製品化、オープンソースとして開発を継続
Red Hatは、クラウド向けのストレージ・ソリューションに戦略的に投資を行うと
いう判断の下、2011年にGluster社を買収
今後は、Amazon S3互換API、Hadoop MapReduce API(HDFSの代替)、
OpenStack SWIFT互換APIなどのAPIを実装予定
※ Red Hatによる買収前のGluster社による開発意向表明であり、Red Hatとしての計画は未定です。
41 Open Cloud Campus
43. IaaSクラウドを支えるインフラ技術
GlusterFSの利用手順
GlusterFSが提供する、クライアントからマウント可能な仮想ファイルシステムを「ボ
リューム」と呼びます。次の手順でボリュームを作成して利用します。
– GlusterFSクラスタの各ノードに「ブリック」と呼ばれるディレクトリを用意します。
– 各ノードが使用するブリックを指定して、ボリュームを作成します。
– GlusterFSクライアントは、任意の1つのノードとボリューム名を指定して、ボリュームをマウント
して使用します。
• どのノードを指定してもその後の動作に変わりはありません。実際のデータのやり取りは、ハッシュ計算に基づ
いて、該当ファイルを保存するノードと行われます。
• マウントに使用するプロトコルは、GlusterFS独自プロトコル、もしくはNFSプロトコルが利用可能です。
• GlusterFSクラスタを構成するノード自身の上でマウントして使用することもできます。
各ノードに複数のブリックを用意して、複数のボリュームを作成することもできます。
各ノードの複数のブリックを使用するボリュームを構成することもできます。
– 各ノードが複数のローカルディスクを持つ場合、ディスクごとにブリックを分けること
で、ディスクI/Oの負荷分散が実現できます。
同じファイルを複数のブリックに保存する「レプリケーション構成」、1つのファイルを一
定サイズで分割して複数のブリックに保存する「ストライピング構成」なども可能です。
43 Open Cloud Campus
44. IaaSクラウドを支えるインフラ技術
ボリュームの構成例
node01 node02 node03 node04
GlusterFSクラスタ
ファイル単位で各ブリックに分散保存
/brick01 /brick01 /brick01 /brick01 (1つのファイルはどれか1つのブリックに存在)
ストライピング
/brick02 /brick02 /brick02 /brick02 1つのファイルを各ブリックに分散保存
レプリケーション レプリケーション
node01-node02、node03-node04で
/brick03 /brick03 /brick03 /brick03 それぞれレプリケーション
ストライピング
レプリケーション レプリケーション
レプリケーションとストライピングの
/brick04 /brick04 /brick04 /brick04 組み合わせ
44 Open Cloud Campus