IaaSクラウドを支える基礎技術 v1_0

5,462 views

Published on

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,462
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
42
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

IaaSクラウドを支える基礎技術 v1_0

  1. 1. オープンクラウド・キャンパス Eucalyptusに学ぶIaaSクラウドを支えるインフラ技術 中井悦司 Twitter @enakai00
  2. 2. IaaSクラウドを支えるインフラ技術自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 好評発売中 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門)2 Open Cloud Campus
  3. 3. IaaSクラウドを支えるインフラ技術目次 クラウドの概要とEucalyptus マシンイメージとVMインスタンス起動プロセス クラウドネットワークとLinuxのネットワーク機能 Elasitic Block Storage(EBS)とLinuxのiSCSI機能 クラウドセキュリティと公開鍵認証 まとめ (付録)GlusterFSについて3 Open Cloud Campus
  4. 4. IaaSクラウドを支えるインフラ技術 クラウドの概要とEucalyptus4 Open Cloud Campus
  5. 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.pdf5 Open Cloud Campus
  6. 6. IaaSクラウドを支えるインフラ技術利用者とサービス内容でクラウドを分類 企業内のユーザーのみが利用 複数企業のユーザーが共同利用 Privateクラウド Publicクラウド アプリケーション環境を提供 = SaaS (エンドユーザーがすぐに使えるアプリケーション・サービス) OS + Middleware 環境を提供 = PaaS (プログラマがアプリケーションを開発できる環境) Eucalyptus OS 環境を提供 = IaaS Amazon (管理者がシステムを構築・運用できる環境) EC2/S36 Open Cloud Campus
  7. 7. IaaSクラウドを支えるインフラ技術Eucalyptusを実現するインフラ技術 クラウドコントローラ 認証技術 クライアント  SSH 鍵認証 Warlus X.509 証明書 パブリック ネットワーク 仮想マシン イメージ API プログラミング iptables(NAT/ ディスクイメージ パケットフィルタリング) クラスタコントローラ 自動化技術 VLAN / ストレージ技術 仮想ブリッジ ストレージコントローラ ネットワーク技術 プライベート 仮想化技術 OS 基礎技術 ネットワーク EBS イメージ iSCSI サーバ仮想化 カーネル さまざまなインフラ技術の  (KVM/Xen) 起動プロセス 集大成がクラウドなのです。 ・・・・ ノードコントローラ ノードコントローラ7 Open Cloud Campus
  8. 8. IaaSクラウドを支えるインフラ技術 マシンイメージと VMインスタンス起動プロセス8 Open Cloud Campus
  9. 9. IaaSクラウドを支えるインフラ技術Eucalyptusを実現するインフラ技術 クラウドコントローラ 認証技術 クライアント  SSH 鍵認証 Warlus X.509 証明書 パブリック ネットワーク 仮想マシン イメージ API プログラミング iptables(NAT/ ディスクイメージ パケットフィルタリング) クラスタコントローラ 自動化技術 VLAN / ストレージ技術 仮想ブリッジ ストレージコントローラ ネットワーク技術 プライベート 仮想化技術 OS 基礎技術 ネットワーク EBS イメージ iSCSI サーバ仮想化 カーネル さまざまなインフラ技術の  (KVM/Xen) 起動プロセス 集大成がクラウドなのです。 ・・・・ ノードコントローラ ノードコントローラ9 Open Cloud Campus
  10. 10. IaaSクラウドを支えるインフラ技術VMインスタンスの起動に必要な3種類のイメージ EucalyptusがVMインスタンスを起動する際は、マシンイメージ(OS領域のディスクイメー ジ)とは別に、カーネルイメージとラムディスクイメージをWalrusからダウンロードしま す。 – マシンイメージは、VMインスタンスに接続される仮想ディスクの中身そのもの。 – カーネルイメージは、メモリ(カーネル空間)に読み込まれるLinuxカーネルのバイナリコード。 – ラムディスクイメージは、カーネルの起動に必要な初期ラムディスクを提供。 Linux起動時に必要な  デバイスドライバを提供 ユーザ空間 ラムディスク ユーザ・プロセス イメージ リソース割り当て システムコール カーネル空間 カーネル デバイスドライバ (Linuxカーネル) イメージ ディスクアクセス (仮想)ハードウェア マシンイメージ (仮想)ディスク 10 Open Cloud Campus
  11. 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. 12. IaaSクラウドを支えるインフラ技術Eucalyptusにおけるイメージ管理 カーネルイメージと初期ラムディスクは、原理的にはOS領域(ルートファイルシステム)と は独立して提供されるものです。 – 例えばPXEブート環境では、tftpでカーネルと初期ラムディスクをメモリに読み込んで起動します。 – その昔、BIOSからアクセスできないディスクにLinuxをインストールした環境では、フロッピーディ スクにカーネルイメージと初期ラムディスクを入れて起動していた事も・・・。 Eucalyptusでは、マシンイメージ(ルートファイルシステム)とカーネルイメージ、ラム ディスクイメージを明示的に分離することで、不適切なカーネルの使用に伴う問題の発生を 防止しています。 カーネルイメージ、ラムディスクイメージは管理者のみが新規登録可能。 – 管理者は使用する仮想化ハイパーバイザに適合したイメージを事前に用意する。 一般ユーザはマシンイメージのみを編集、新規登録可能。 – 一般ユーザには、ルートファイルシステムに導入されたアプリケーションが重要。12 Open Cloud Campus
  13. 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. 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/loop014 Open Cloud Campus
  15. 15. IaaSクラウドを支えるインフラ技術 クラウドネットワークと Linuxのネットワーク機能15 Open Cloud Campus
  16. 16. IaaSクラウドを支えるインフラ技術Eucalyptusを実現するインフラ技術 クラウドコントローラ 認証技術 クライアント  SSH 鍵認証 Warlus X.509 証明書 パブリック ネットワーク 仮想マシン イメージ API プログラミング iptables(NAT/ ディスクイメージ パケットフィルタリング) クラスタコントローラ 自動化技術 VLAN / ストレージ技術 仮想ブリッジ ストレージコントローラ ネットワーク技術 プライベート 仮想化技術 OS 基礎技術 ネットワーク EBS イメージ iSCSI サーバ仮想化 カーネル さまざまなインフラ技術の  (KVM/Xen) 起動プロセス 集大成がクラウドなのです。 ・・・・ ノードコントローラ ノードコントローラ16 Open Cloud Campus
  17. 17. IaaSクラウドを支えるインフラ技術Eucalyptusのネットワーク構成 Managedモードネットワークでは、各VMインスタ クライアント  ンスはプライベートIPとパブリックIPがアサインさ れます。 パブリック – プライベートIPはVMインスタンス間の通信に使用 ネットワーク – パブリックIPは外部からの接続に使用 • パブリックIPをアサインしないことで、外部から接続でき ないVMインスタンスを作成することも可能 クラスタコントローラ VMインスタンスは、どれか1つのセキュリティグ ループに属します。 プライベートネットワーク用 ネットワークスイッチ – 同一のセキュリティグループのVMインスタンスのみ プライベートネットワーク通信が可能 → LinuxのVLAN機能でネットワークを分離 – セキュリティグループごとに、パブリックネットワー ・・・・ クからのアクセスを制限(指定のアドレスから、指定 のポートに対してのみ接続を許可) ノードコントローラ ノードコントローラ → Linuxのパケットフィルタリング機能(iptables) を利用17 Open Cloud Campus
  18. 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. 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. 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インスタンス#820 ノードコントローラ#1 ノードコントローラ#2 Open Cloud Campus
  21. 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インスタンス#221 クラスタコントローラ ノードコントローラ Open Cloud Campus
  22. 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. 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:2223 Open Cloud Campus
  24. 24. IaaSクラウドを支えるインフラ技術  Elasitic Block Storage(EBS)と  LinuxのiSCSI機能24 Open Cloud Campus
  25. 25. IaaSクラウドを支えるインフラ技術Eucalyptusを実現するインフラ技術 クラウドコントローラ 認証技術 クライアント  SSH 鍵認証 Warlus X.509 証明書 パブリック ネットワーク 仮想マシン イメージ API プログラミング iptables(NAT/ ディスクイメージ パケットフィルタリング) クラスタコントローラ 自動化技術 VLAN / ストレージ技術 仮想ブリッジ ストレージコントローラ ネットワーク技術 プライベート 仮想化技術 OS 基礎技術 ネットワーク EBS イメージ iSCSI サーバ仮想化 カーネル さまざまなインフラ技術の  (KVM/Xen) 起動プロセス 集大成がクラウドなのです。 ・・・・ ノードコントローラ ノードコントローラ25 Open Cloud Campus
  26. 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. 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. 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 restart28 Open Cloud Campus
  29. 29. IaaSクラウドを支えるインフラ技術  クラウドセキュリティと 公開鍵認証29 Open Cloud Campus
  30. 30. IaaSクラウドを支えるインフラ技術Eucalyptusを実現するインフラ技術 クラウドコントローラ 認証技術 クライアント  SSH 鍵認証 Warlus X.509 証明書 パブリック ネットワーク 仮想マシン イメージ API プログラミング iptables(NAT/ ディスクイメージ パケットフィルタリング) クラスタコントローラ 自動化技術 VLAN / ストレージ技術 仮想ブリッジ ストレージコントローラ ネットワーク技術 プライベート 仮想化技術 OS 基礎技術 ネットワーク EBS イメージ iSCSI サーバ仮想化 カーネル さまざまなインフラ技術の  (KVM/Xen) 起動プロセス 集大成がクラウドなのです。 ・・・・ ノードコントローラ ノードコントローラ30 Open Cloud Campus
  31. 31. IaaSクラウドを支えるインフラ技術鍵ペアによる認証の基礎 ネットワーク上の認証には、ユーザ認証とサーバ認証があります。 – ユーザ認証:接続を許可するサーバから見て、本物のユーザであることを確認する。 – サーバ認証:接続するユーザから見て、本物のサーバであることを確認する。 これらの認証には、主に非対称鍵暗号を利用した方法が用いられます。 – 非対称鍵暗号では、暗号化に使う鍵と復号化に使う鍵が異なります。 – 非対称鍵暗号では、鍵の所有者だけが保管するべき秘密鍵と、万人に配布しても構わない公開鍵を 利用します。秘密鍵は誤って他人の手に渡らないように管理する必要があります。 • 下図は、事前に配布した公開鍵で暗号化したメッセージを送ってもらう例です。このメッセージは、秘密鍵を持 つ自分だけが復号化して読むことができます。 公開鍵 僕の秘密鍵がないと誰にも Aさんにもらった公開鍵で 復号化できないから安心だ 暗号化して送るよ 秘密鍵 公開鍵 Aさん31 Open Cloud Campus
  32. 32. IaaSクラウドを支えるインフラ技術Eucalyptus環境で使用する鍵ペアの例 Eucalyptusの利用者は、次のような場面で自分だけの秘密鍵を入手します。これらの秘密 鍵に対応する公開鍵はクラウドコントローラに保存されます。 – Eucalyptusユーザを作成した際に、Web管理画面からユーザ証明書をダウンロード(ユーザ証明書 の中に秘密鍵が含まれる。) – SSH接続用の鍵ペアを作成した際に、秘密鍵ファイルをクライアントに保存 ユーザがEucalptusのSOAP APIを使用する際、ユーザ証明書に含まれる秘密鍵を利用して、 ユーザ認証が行われます。 – 詳細は次ページを参照 ユーザがVMインスタンスにSSH接続する際、事前に作成した秘密鍵を利用して、ユーザ認 証が行われます。 – 対応する公開鍵は、ノードコントローラがクラウドコントローラから入手して起動するVMインスタ ンス内に保存します。32 Open Cloud Campus
  33. 33. IaaSクラウドを支えるインフラ技術ユーザ証明書の鍵ペアによるSOAP APIユーザ認証の例 クライアントは、リクエストメッセージのハッシュ値を秘密鍵で暗号化して送ります。サー バは、対応する公開鍵で復号化して正しいハッシュ値であることを確認します。 – ユーザAの公開鍵で復号化できる暗号を生成できるのは、対応する秘密鍵を持ったユーザAだけなの で、メッセージの送信元が本物のユーザAであることが分かります。 – メッセージの暗号化ハッシュ値を添付することを「メッセージに署名する」と言います。メッセー ジが改竄されるとハッシュ値が合わなくなるので、メッセージ改竄を防止する効果もあります。 ユーザ情報データベース ユーザAの証明書 ユーザA秘密鍵 ユーザA公開鍵 復号化 暗号化 ハッシュ値 ハッシュ値 リクエストメッセージと 比較 暗号化ハッシュ値(署名) ハッシュ値計算 を管理サーバに送付 リクエストメッセージ Eucalyptus管理サーバ ハッシュ値 クライアント (クラウドコントローラ) ハッシュ値計算 リクエストメッセージ ※実際の処理内容を簡略化して説明しています。33 Open Cloud Campus
  34. 34. IaaSクラウドを支えるインフラ技術鍵ペアによるSSHユーザ認証 公開鍵認証でSSH接続する際は、次の流れでユーザ認証が行われます。 – SSH接続を受け付けたサーバ(SSHデーモン)は、乱数を発生してユーザの公開鍵で暗号化したもの をクライアント(SSHクライアント)に送信します。 – クライアントは対応する秘密鍵で復号化して、そのハッシュ値を返答します。 – サーバは、元の乱数のハッシュ値を計算して、クライアントの返答と一致することを確認します。VMインスタンス起動時に ユーザA ユーザAノードコントローラが保存 SSH 公開鍵 SSH 秘密鍵 暗号化 復号化 乱数 乱数 ハッシュ値計算 ハッシュ値計算 VM インスタンス ハッシュ値 ハッシュ値 SSH クライアント 比較※参考資料プロのためのLinuxシステム構築・運用技術「2.3.3 SSHの利用方法」34 Open Cloud Campus
  35. 35. IaaSクラウドを支えるインフラ技術鍵ペアによるSSHサーバ認証 SSH接続の際は、ユーザから見て接続先のサーバが本物であることを確認する、サーバ認証 も行われます。 – クライアントはサーバからサーバ証明書の公開鍵を受け取って保存します。 – クライアントは乱数をサーバの公開鍵で暗号化してサーバに送り、サーバは対応する秘密鍵で復号 化して、そのハッシュ値を返送します。 – クライアントは元の乱数のハッシュ値を計算して、サーバの返答と一致することを確認します。 サーバ証明書 サーバ証明書 初回接続時にダウンロード 秘密鍵 公開鍵 (known_hostsに保存) 復号化 暗号化 乱数 乱数 ハッシュ値計算 ハッシュ値計算 VM インスタンス ハッシュ値 ハッシュ値 SSH クライアント 比較※参考資料プロのためのLinuxシステム構築・運用技術「2.3.3 SSHの利用方法」35 Open Cloud Campus
  36. 36. IaaSクラウドを支えるインフラ技術SSHサーバ認証に伴う注意点 新しいサーバに初めて接続する際は、サーバ証明書の受け入れ確認メッセージが表示される 場合があります。 # ssh root@server01 新しいサーバ証明書の  The authenticity of host server01 (XXX.XXX.XXX.XXX) cant 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
  37. 37. IaaSクラウドを支えるインフラ技術 まとめ37 Open Cloud Campus
  38. 38. IaaSクラウドを支えるインフラ技術Eucalyptusを実現するインフラ技術 クラウドコントローラ 認証技術 クライアント  SSH 鍵認証 Warlus X.509 証明書 パブリック ネットワーク 仮想マシン イメージ API プログラミング iptables(NAT/ ディスクイメージ パケットフィルタリング) クラスタコントローラ 自動化技術 VLAN / ストレージ技術 仮想ブリッジ ストレージコントローラ ネットワーク技術 プライベート 仮想化技術 OS 基礎技術 ネットワーク EBS イメージ iSCSI サーバ仮想化 カーネル さまざまなインフラ技術の  (KVM/Xen) 起動プロセス 集大成がクラウドなのです。 ・・・・ ノードコントローラ ノードコントローラ38 Open Cloud Campus
  39. 39. IaaSクラウドを支えるインフラ技術まとめ IaaSクラウドインフラは、『単純なものを組み合わせて  複雑なものを創り上げていく』と言うUnix/Linuxの思想に とてもよく適合する仕組みです。 まずは個々の基礎技術を根本から理解して、その上で、 『これらをどのように組み合わせれば最適なクラウドイン フラが実現できるのか』というクラウドアーキテクチャの 追求を行うことが大切です。39 Open Cloud Campus
  40. 40. IaaSクラウドを支えるインフラ技術 (付録)GlusterFSについて40 Open Cloud Campus
  41. 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
  42. 42. IaaSクラウドを支えるインフラ技術GlusterFSのアーキテクチャ 分散ストレージを構成する各ノードの通常のファイルシステムをバックエンドデバイスとし て使用します。 – GlusterFSに保存したファイルの実体は、どこかのノードのファイルシステムに保存されます。 ファイル名のハッシュ計算で保存するノードを決定します。 – 各ファイルの保存ノードの情報を別途、どこかにメタデータとして保存しておく必要がありません。 GlusterFSクライアント クライアントからは 1つのファイルシステムに見える実際には各ノードのファイルシステムに 分散して保存されている file01, file02, file03 ボリューム ・・・ GlusterFSクラスタ file01 file02 file0342 Open Cloud Campus
  43. 43. IaaSクラウドを支えるインフラ技術GlusterFSの利用手順 GlusterFSが提供する、クライアントからマウント可能な仮想ファイルシステムを「ボ リューム」と呼びます。次の手順でボリュームを作成して利用します。 – GlusterFSクラスタの各ノードに「ブリック」と呼ばれるディレクトリを用意します。 – 各ノードが使用するブリックを指定して、ボリュームを作成します。 – GlusterFSクライアントは、任意の1つのノードとボリューム名を指定して、ボリュームをマウント して使用します。 • どのノードを指定してもその後の動作に変わりはありません。実際のデータのやり取りは、ハッシュ計算に基づ いて、該当ファイルを保存するノードと行われます。 • マウントに使用するプロトコルは、GlusterFS独自プロトコル、もしくはNFSプロトコルが利用可能です。 • GlusterFSクラスタを構成するノード自身の上でマウントして使用することもできます。 各ノードに複数のブリックを用意して、複数のボリュームを作成することもできます。 各ノードの複数のブリックを使用するボリュームを構成することもできます。 – 各ノードが複数のローカルディスクを持つ場合、ディスクごとにブリックを分けること で、ディスクI/Oの負荷分散が実現できます。 同じファイルを複数のブリックに保存する「レプリケーション構成」、1つのファイルを一 定サイズで分割して複数のブリックに保存する「ストライピング構成」なども可能です。43 Open Cloud Campus
  44. 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
  45. 45. オープンクラウド・キャンパスこれからもクラウドを支えるインフラ技術を学びましょう 中井悦司 Twitter @enakai00

×