はじめに
IBM Cloud VPCを使ったシンプルなウェブサイト構築を題材に、やってみたことを入門レベルのチュートリアル記事としてまとめました。
構成図
この記事での前提となる構成図は以下の通りです。構成図の赤点線内を構築します。
- bastionは踏み台サーバーです。インターネットからSSHログインできる箇所を最小にしておきます。また、鍵認証でSSHログインできるよう設定します。
- ウェブサーバーが直接インターネットに接続されるのではなくロード・バランサーを経由することは、以下の観点で望ましいです。
- ウェブサイトのスケールアウトが容易になること
- ウェブサーバーとして必要なポート以外へのアクセスや攻撃を防げること
構成図で登場するサービスについて、用語説明があります。
構成図を描く方向けの参考情報:
Editable architecture diagram resources(英文)では、構成図の素材の情報が提供されています。記事執筆時点では、IBM IT Architect Assistant、draw.io、Omnigraffle、PowerPoint、System Architect、Visio向けの情報があります。
用語説明
リソース・グループ
- アクセス制御や請求処理を分かりやすくするため、システムやアプリに必要な一連の複数のリソースを編成して管理する仕組みです。
VPC(Virtual Private Cloud)
- パブリック・クラウドの中にプライベートなコンピューティング環境を作るためのクラウドのサービスです。
- IBM Cloudの場合、VPCは単一のリージョンにデプロイされます。
- VPCは複数のゾーンにまたがることができます。
リージョン
- VPCをデプロイする地理的領域です。「東京リージョン」というような呼ばれ方がされます。
- 3つの複数ゾーンで構成されるマルチゾーン・リージョンと、単一ゾーンで構成されるシングルゾーン・リージョンの2種類があります。IBM Cloudの東京リージョンは、マルチゾーン・リージョンです。
ゾーン
- データー・センターのことです。
- 複数のゾーンを含むVPCを構成することで、耐障害性を高められます。
IBM Cloudでの「リージョン」と「ゾーン」という用語説明が、「VPCのネットワーキングについて」というページにあります。
VPC、リージョン、ゾーンという用語は、定義が異なる場合がありますがAWSやAzureなどのクラウドでも登場します。以下がIBM Cloud特有の用語です。
VSI(Virtual Server Instance)
- 仮想サーバー・インスタンスと呼ばれています。
アプリケーション・ロード・バランサー
- レイヤー7対応のロード・バランサーです。
- 詳細は「VPC のロード・バランサーの概要」で説明されています。
浮動IP
- インターネットからVSIやロード・バランサーへの接続が必要な時にアタッチ可能な、パブリックにアクセス可能なグローバルIPアドレスです。
- 構成図の下部にある緑色の矢印のアイコンが浮動IPを表しています。
- 詳細は「仮想サーバー・インスタンスの外部接続のために浮動 IP アドレスを使用する」で説明されています。
構築にあたっての準備
- パラメーター・シートの内容を確認します。IBM Cloudコンソールでサービス注文に必要な情報です。
- IBM Cloudコンソールにアクセスし、ログインできることを確認します。
- 構築作業するパラメーター・シートと同じことを確認します。IBM Cloudコンソール上部の「管理」の右側にアカウント番号が表示されます。以下の画像で赤枠で示した部分です。複数のアカウントが割り当てられている場合、アカウントを切り替えてパラメーター・シートと同じに設定します。
準備が完了したら、以下の構築ステップに進みます。
前提についての注記:
構築ステップを簡潔に分かりやすく説明するため、以下の前提についての詳細を割愛しています。各自の状況に合わせてセットアップします。
- ドメイン
- ドメイン取得サービスで、ドメイン登録とDNSレコード設定を行います。
- IBM Cloudでもドメイン登録とDNSレコード設定が可能なサービスを提供しています。
- SSL証明書
- 構築ステップ「6.ロード・バランサーの作成と動作確認」で使用するためのSSL証明書をIBM Cloud Certificate Managerで利用できるよう準備します。以下のどちらかの方法を実施します。
- SSL認証局で証明書を取得して、IBM Cloud Certificate Managerへインポート
- IBM Cloud Certificate Managerを利用してLet's Encryptの証明書を取得
- 構築ステップ「6.ロード・バランサーの作成と動作確認」で使用するためのSSL証明書をIBM Cloud Certificate Managerで利用できるよう準備します。以下のどちらかの方法を実施します。
ちなみに、この記事の執筆時にはIBM Cloudのドメイン・ネーム登録サービスを利用し、IBM Cloud Certificate Managerを利用してLet's Encryptの証明書を取得しました。
パラメーター・シート
構築に必要なパラメーターを列挙します。
- 構築してみたときのパラメーターが代入されています。環境に合わせて値を変えて構築します。
- 特に記述の無いパラメーターは、デフォルトを使用しています。
IBM Cloud
リソース | 値 | 説明 |
---|---|---|
アカウント | (利用中のアカウント) | 構築に利用するアカウントであることを確認します |
リソース・グループ | simpleWeb | アカウント管理者が払い出したリソース・グループを利用します |
リージョン | 東京 |
VPC
リソース | 値 | 説明 |
---|---|---|
VPC | 名前: vpc1 | |
webサーバー用サブネット1 | 名前: subnet1 ロケーション: 東京1 |
|
webサーバー用サブネット2 | 名前: subnet2 ロケーション: 東京2 |
|
bastion用サブネット3 | 名前: subnet3 ロケーション: 東京3 |
|
SSHキー | 名前: ssh-key-simpleweb | サーバー作成時に利用するSSHキー |
VSI
リソース | 値 | 説明 |
---|---|---|
webサーバー1 | 名前: web1 サブネット: subnet1 |
|
webサーバー2 | 名前: web2 サブネット: subnet2 |
|
bastion | 名前: bastion サブネット: subnet3 |
VSIのスペック
リソース | 値 | 説明 |
---|---|---|
仮想サーバーのタイプ | パブリック | |
オペレーティング・システム | Ubuntu Linux 20.04 LTS | |
プロファイル | Balanced | bx2-2x8 | |
SSHキー | ssh-key-simpleweb | |
ブート・ボリューム | (デフォルトを使用) | |
データ・ボリューム | (デフォルトを使用) | |
仮想プライベート・クラウド | (作成したVPC) | |
ネットワーク・インタフェース | eth0 |
浮動IP
リソース | 値 | 説明 |
---|---|---|
浮動IP | 名前: fip-bastion | bastion用のIPアドレス |
セキュリティー・グループ
- ロード・バランサー用セキュリティー・グループ
リソース | 値 | 説明 |
---|---|---|
名前 | security-group-lb | |
インバウンド・ルール1 | プロトコル: TCP ポート: ポート範囲 ポート最小値: 443 ポート最大値: 443 ソースタイプ: すべて |
|
アウトバウンド・ルール1 | プロトコル: TCP ポート: すべて ソースタイプ: すべて |
- webサーバー用セキュリティー・グループ
リソース | 値 | 説明 |
---|---|---|
名前 | security-group-web | |
インバウンド・ルール1 | プロトコル: TCP ポート: ポート範囲 ポート最小値: 80 ポート最大値: 80 ソースタイプ: すべて |
|
インターフェース | web1 - eth0 web2 - eth0 |
ロード・バランサー
リソース | 値 | 説明 |
---|---|---|
名前 | lb1 | |
ロード・バランサー | アプリケーション・ロード・バランサー | |
タイプ | パブリック | |
サブネット | subnet1 subnet2 |
2つともチェックを入れます |
プール | 名前: pool1 | webサーバー1とwebサーバー2をメンバーとして追加します |
フロントエンド・リスナー | プロトコル: HTTPS Proxy Protocol: チェックしない ポート: 443 バックエンド・プール: pool1 最大接続数: (入力しない) SSL Region:(事前準備したリージョン) SSL証明書: (事前準備したSSL証明書) |
SSL証明書がIBM CloudのCertificate Managerに入っていることが前提 |
ホスト名 | www | |
ドメイン名 | (事前準備したドメイン名) |
構築ステップ
以下に構築のステップを示します。各ステップが個別のQiitaの記事として書かれています。
UI変更について補足(2022/6/20)
IBM CloudコンソールUIが変更されています。2022/6/20時点でのUIに対応したステップを補足記事として掲載しました。以下に構築ステップを示します。
-
VPC作成(2022年版)
- 従来の1.VPC作成と2.仮想サーバー・インスタンス作成に相当するステップが含まれています。
- (上記ステップに統合されたため、ステップ2を欠番とします)
- 仮想サーバー・インスタンス作成(2022年版)
- 浮動IP取得とバインド
- セキュリティー・グループ作成
- ロード・バランサー作成と動作確認(2022年版)