多層アーキテクチャ構成概要¶
多層アーキテクチャ構成とは、アプリケーションを複数の"層"に分け、それらを独立して編成する構成となります。
本ガイドで紹介する"多層アーキテクチャ構成"は、以下の層にて構成されます。
- DMZ(境界ネットワーク)
- プレゼンテーション層(ユーザインターフェイス)
- アプリケーション層(データを処理する層)
- データ層(データを保管・管理する層)
各層は1つ以上のvAppで構成され、vAppは1つ以上の仮想マシンが配置されます。
各層はOvDCネットワーク、およびvAppネットワークにて接続されます。
仮想マシン間で要求を分散させるには、ロードバランシング機能を使用します。
vApp内にロードバランサーを導入することによりロードバランサー・プールにVMを追加することで、層を水平方向にスケールすることが容易になります。
また、ロードバランサーにて各層へのアクセスを制限することで、データ層ではアプリケーション層からのアクセスのみが許可されるように設計ができます。
フロントエンドとインターネットの間にDMZ(境界ネットワーク)を配備することで多層アーキテクチャが構築されたvAppに直接トラフィックが流れる事が無いようにします。
これにより、アプリケーションへの送信トラフィックを監査する必要がある(多くの商用システムで要件となっているプライベートな情報の一般への漏えいを防ぐ措置)ケースに対応することが可能となります。
インターネットからの受信トラフィックを受け入れるには、宛先ネットワークアドレス変換(DNAT)を利用します。
- インターネットからの宛先アドレスは、DMZ内に配備されたファイアウォールインスタンスのパブリックIPアドレスとなります。
- 変換されたアドレスは、OvDCネットワーク内のプライベートIPアドレスとなります。
DMZが境界となりIPV内ネットワークをクローズドにすることが可能となり、送受信トラフィックのログ集積も可能となります。
注釈
多層アーキテクチャは3層に制限されているわけではありません。
複雑なアプリケーションの場合は、さらに層が増えるのが一般的です。
その為、レイヤー7ルーティングを使用して特定の層を構成しているvAppに要求をルートする必要があります。
上記の場合、DMZにてルート制御を行うかルート制御用のvAppを設けるかをご検討下さい。
以下の場合、多層アーキテクチャ構成を推奨します。
- シンプルなWebアプリケーション構成
- オンプレミスアプリケーションのクラウドサービスへの移行
- オンプレミスアプリケーションとクラウドアプリケーションの共通的な開発
多層アーキテクチャは従来のオンプレミス基盤にて非常に多く採用されているため、既存のワークロードを移行するのに適しています。
構築ガイド¶
本ガイドでは、IPVで多層アーキテクチャ構成のWEBアプリケーションサービスを構築する例を記載します。
構築後の構成は以下図を参照下さい。
注釈
本ガイドは、[JP7リージョン申込みチュートリアル] > [新規申込方法] > [疎通確認] 後の環境をもとに記載しています。
構築概要¶
本ガイドで作成する仮想マシン、仮想マシンへ導入するソフトウェアは以下となります。
仮想サーバ名 | 役割 | IPアドレス | ディスクサイズ | OS |
---|---|---|---|---|
t-dev-bfw01 | 境界防御用
仮想ファイアウォール
|
vNIC0:172.16.10.250/24
vNIC1:DHCP
vNIC2:172.16.30.250/24
|
64GB | FreeBSD11(64bit) |
t-mgmt-ad01 | Active Directoryサーバー | vNIC0:172.16.10.1/24
|
80GB | WindowsServer2019 Standard(64bit) |
t-mgmt-mon01 | 監視サーバー | vNIC0:172.16.10.2/24
vNIC1:172.16.30.2/24
|
80GB | Ubuntu 21.04 LTS |
t-dev-flb01 | 仮想ロードバランサー | vNIC0:172.16.10.20/24
vNIC1:192.168.1.253/24
|
10GB | Ubuntu 21.04 LTS |
t-dev-fe01 | WEB/APサーバー | vNIC0:172.16.10.21/24
vNIC1:192.168.1.1/24
vNIC2:192.168.10.2/24
|
10GB | Ubuntu 21.04 LTS |
t-dev-db01 | DBサーバー | vNIC0:172.16.10.22/24
vNIC1:192.168.10.3/24
|
100GB | Ubuntu 21.04 LTS |
注釈
本ガイドでは、ロードバランシング機能を担う「仮想ロードバランサー」の代わりに、仮想マシンへNGINXを導入しDNSラウンドロビンで負荷分散を行います。
名称 | バージョン |
---|---|
OPNsense | 21.7.1-amd64 |
Elasticsearch | 7.14.0 |
LogStash | 7.14.0 |
Kibana | 7.14.0 |
Filebeat | 7.14.0 |
Metricbeat | 7.14.0 |
WinLogbeat | 7.14.0 |
Nginx | 1.18.0 |
注釈
本ガイドでは、FreeBSD11、Ubintuに使用するパッケージ、ライブラリの取得用リポジトリとして、外部公開リポジトリを使用します。
前提条件¶
本ガイドは、[JP7リージョン申込みチュートリアル] > [新規申込方法] > [疎通確認] にて構築した環境をもとに記載します。
使用するユーザーは、"OrgAdmin"です。
IPVご利用開始時に標準で用意されているロール、ロールに紐づいている権限は以下を参照ください。
構築手順¶
1. 事前準備¶
仮想マシンの作成で使用するISO形式の仮想アプライアンスイメージ、および仮想マシンイメージファイルをアップロードします。
OSインストーラー、および仮想マシンイメージファイルは、カタログへ保存します。
1.1. カタログの種類¶
カタログは、コンテンツ(vApp テンプレート、メディアファイルなど)を格納できる領域です。
カタログには以下の2種類あります。
本ガイドでの名称 | 説明 |
---|---|
パブリックカタログ | 当社が提供するOSテンプレート(パブリックテンプレート)が格納される領域です。
お客様がアップロードするコンテンツは格納できません。
Public-catalog という名前で、すべてのお客様へ登録されています。
|
プライベートカタログ | お客様がvCDテナントポータル上から作成できる領域です。
お客様がアップロードするコンテンツが格納できます。
格納したコンテンツは、組織に所属するユーザーへ共有することができます。
|
1.2. カタログの作成¶
vCDテナントポータルへログインし、Topメニューより[ライブラリ]をクリックします。
[コンテンツライブラリ]->[カタログ]をクリックします。
[新規]をクリックし、下表の設定にてカタログを作成します。
項目 | 設定内容 |
---|---|
名前 | tutorial-catalog |
説明 | ‐ |
特定のストレージポリシーで事前プロビジョニングします | オフ |
カタログの作成完了後、[カタログ]に作成したカタログが表示されることを確認します。
1.3. 仮想アプライアンスイメージ(ISOファイル)のアップロード¶
[コンテンツライブラリ]->[メディアとその他]をクリックします。
[追加]をクリックし、下表の設定にてISOファイルをアップロードします。
項目 | 設定内容 |
---|---|
カタログ | tutorial-catalog |
名前 | OPNsense-21.7.1-OpenSSL-dvd-amd64.iso |
アップロードするメディアを選択 | OPNsense-21.7.1-OpenSSL-dvd-amd64.iso |
ISOファイルのアップロード完了後、[メディアとその他]にアップロードしたISOファイルが表示されることを確認します。
1.4. vAppテンプレートの作成¶
[コンテンツライブラリ]->[vAppテンプレート]をクリックします。
[新規]をクリックし、下表の設定にてOVAファイルからvAppテンプレートを作成します。
項目 | 設定内容 |
---|---|
1 ソースを選択参照 | 参照:OVAファイル(ubuntu-21.04-server-cloudimg-amd64.ova)を指定
ファイル:ubuntu-21.04-server-cloudimg-amd64.ova
|
2 vAppテンプレート名の選択 | 名前:Ubuntu-21.04-sv
説明:
カタログ:tutorial-catalog
|
注釈
本ガイドではCANONICAL社が公開しているクラウド環境用OVAファイルを使用しています。
vAppテンプレートの作成完了後、[vAppテンプレート]に作成したvAppテンプレートが表示されることを確認します。
2. OvDCネットワークの作成¶
本ガイドでは、2種類のOvDCネットワークを使用します。
2.1. OvDCネットワークの種類¶
本ガイドでの名称 | 説明 |
---|---|
外部接続用ネットワーク | Edge Gatewayと接続するOvDCネットワークです。 |
ワークロードネットワーク | 仮想ファイアウォールの内側のOvDCネットワークです。vApp間での通信用のネットワークです。 |
本ガイドでは、アプリケーションがインストールされる仮想マシンを配置するvAppを、Edge Gatewayに接続しないネットワーク(ワークロードネットワーク)に接続させる構成とします。
外部接続用ネットワークとワークロードネットワークの間には、セキュリティ脅威を阻止する境界防御用ファイアウォールを構築します。
IPVで提供するEdge Gatewayのファイアウォール機能を外部用途とし、OvDC内に境界防御用ファイアウォールを設けることでセキュリティの多層化を実現します。
本構成のネットワークイメージは以下となります。
2.2. 外部接続用ネットワークへDHCPプールの追加¶
OvDC内仮想ネットワークの作成の前にインターネット接続用に作成したOvDCネットワーク"tutorial-ext-net001"の「DHCP」サービス機能を有効化します。
Topメニューより[データセンター]をクリックします。
本環境を構築する仮想データセンターカードをクリックします。
[ネットワーク]->[ネットワーク]をクリックします。
インターネット接続用に作成したOvDCネットワーク"tutorial-ext-net001"をクリックします。
[IPアドレス管理]->[DHCP]をクリックします。
[新規]をクリックし、下表の設定にて「DHCP」サービス機能を有効化します。
項目 | 設定内容 |
---|---|
IPプール | 172.16.1.100-172.16.1.200 |
DHCPプールの追加完了後、[DHCP]に作成したDHCPプールが表示され、"有効"列にチェックがあることを確認します。
注釈
仮想マシンのNIC「編集」画面にて"IPモード"をDHCPに設定することで、当該仮想マシンへDHCPプールに割り当てられたIPアドレスが自動的に割り当てられます。
2.3. ワークロードネットワークの作成¶
Topメニューより[データセンター]をクリックします。
ネットワークを作成する[仮想データセンターカード]をクリックします。
[ネットワーク]->[ネットワーク]をクリックします。
[新規]をクリックし、下表の設定にて EdgeGatewayと接続しないOvDC内に閉じた OvDCネットワークを作成します。
項目 | 設定内容 |
---|---|
1 範囲 | データセンターグループ |
2 ネットワークタイプ | 隔離 |
3 全般 | 名前:t-dev-mgmt-172.16.10.0
ゲートウェイCIDR:172.16.10.254/24
説明:
|
4 固定 IP プール | ゲートウェイCIDR:
固定IPプール:
|
5 DNS | プライマリDNS:
セカンダリDNS:
DNSサフィックス:
|
項目 | 設定内容 |
---|---|
1 範囲 | 現在の組織仮想データセンター |
2 ネットワークタイプ | 隔離 |
3 全般 | 名前:t-dev-tier-172.16.30.0
ゲートウェイCIDR:172.16.30.254/24
説明:
|
4 固定 IP プール | ゲートウェイCIDR:
固定IPプール:
|
5 DNS | プライマリDNS:
セカンダリDNS:
DNSサフィックス:
|
OvDCネットワーク追加設定完了後、[ネットワーク]に作成したOvCDCネットワークが表示されることを確認します。
3. 境界防御用仮想ファイアウォール、Active Directoryサーバー、および監視サーバー作成¶
外部接続用ネットワークとワークロードネットワークを分ける境界防御用仮想ファイアウォール、ワークロードネットワークに作成する仮想マシンを管理するサーバー群(Active Directoryサーバー、および監視サーバー作成)を作成します。
本工程の作業範囲は下図の通りです。
3.1. 境界防御用仮想ファイアウォールの作成¶
境界防御用仮想ファイアウォールを作成し、ワークロードネットワークを接続します。
本工程の作業範囲は下図の通りです。
境界防御用仮想ファイアウォールを配置することで、外部接続用ネットワークとワークロードネットワークのトラフィックを分離させます。
境界防御用仮想ファイアウォールのDNSリゾルバ機能を使用することで、ワークロードネットワーク内に配置したDNSサーバーから発信されたのDNSクエリを外部へ転送します。
3.1.1. 境界防御用仮想ファイアウォール用vAppの作成¶
Topメニューより[データセンター]をクリックします。
ネットワークを作成する[仮想データセンターカード]をクリックします。
[コンピュート]->[vApp]をクリックします。
[新規]をクリックし[新規vApp]をクリックします。
下表の内容でvAppを作成します。
項目 | 設定内容 |
---|---|
名前 | tutorial-dev-border |
説明 | ‐ |
パワーオン | チェックなし |
3.1.2. 境界防御用仮想ファイアウォール用vAppへのネットワークの追加¶
作成したvAppにネットワークを追加します。
vAppのリストより"tutorial-dev-border"カードを探し、カードの下部にある[アクション]をクリックします。
表示されたメニューリストから[追加]->[ネットワークの追加]をクリックします。
下表の設定にてvAppへネットワークを追加します。
項目 | 設定内容 |
---|---|
タイプ | 組織VDCネットワーク |
選択OvDCネットワーク名 | tutorial-ext-net001 |
項目 | 設定内容 |
---|---|
タイプ | 組織VDCネットワーク |
選択OvDCネットワーク名 | t-dev-mgmt-172.16.10.0 |
項目 | 設定内容 |
---|---|
タイプ | 組織VDCネットワーク |
選択OvDCネットワーク名 | t-dev-tier-172.16.30.0 |
3.1.3. 境界防御用仮想ファイアウォール用仮想マシンの作成¶
事前準備にてアップロードした、ISO形式の仮想アプライアンスイメージを使用して、境界防御用仮想ファイアウォール用仮想マシンを作成します。
[コンピュート]->[vApp]をクリックします。
vAppのリストより"tutorial-dev-border"カードを探し、カードの下部にある[アクション]をクリックします。
表示されたメニューリストから[追加]->[仮想マシンの追加]をクリックします。
[仮想マシンをtutorial-dev-borderに追加]ダイアログが表示されます。
[仮想マシンの追加]をクリックし、下表の設定にてvAppへ仮想マシンを作成します。
項目 | 設定内容 |
---|---|
名前 | t-dev-bfw01 |
説明 | ‐ |
タイプ | 新規にチェック |
OSファミリ | その他 |
オペレーティング システム | FreeBSD 11 (64bit) |
ブートイメージ | [カタログ]->[メディアその他]にアップロードした"OPNsense-21.7.1-OpenSSL-dvd-amd64.iso"を選択 |
コンピュート | 1. サイズの選択:事前定義済みのサイズ変更オプションにチェック
2. コンピュートサイズ:中にチェック
|
ストレージ | 1. ストレージポリシー:仮想マシンのデフォルトポリシー
2. サイズ: 8GB
|
カスタムストレージポリシーの使用 | チェックなし
|
ネットワーク | 3本のOvDCネットワークと接続するため、2つのNICを追加します。
NIC No: 1
ネットワーク: t-dev-mgmt-172.16.10.0
ネットワークアダプタ タイプ: VMXNET3
IPモード: 固定 - 手動
IPアドレス: 172.16.0.250
プライマリNIC:
NIC No: 2
ネットワーク: tutorial-ext-net001
ネットワークアダプタ タイプ: VMXNET3
IPモード: DHCP
IPアドレス: 自動割り当て
プライマリNIC:
NIC No: 3
ネットワーク: t-dev-tier-172.16.30.0
ネットワークアダプタ タイプ: VMXNET3
IPモード: 固定 - 手動
IPアドレス: 172.16.30.250
プライマリNIC:
|
[OK]をクリックすることで、仮想マシンの構築処理が実行されます。
作成完了後、["tutorial-dev-border"カード]->[ネットワーク図]をクリックし仮想マシンが作成されていること、仮想マシンが3つのOvDCネットワークに紐づいていることを確認します。
3.1.4. 境界防御用仮想ファイアウォール用仮想マシンの初期設定¶
[コンピュート]->[仮想マシン]をクリックします。
仮想マシンのリストより"t-dev-bfw01"カードを探し、仮想マシン名をクリック、対象仮想マシン画面へ遷移します。
上部メニューの[パワーオン]をクリックします。
仮想マシンが起動したら、上部メニュー[WEBコンソールを起動]をクリックします。
別ウィンドウにて、WEBコンソールが起動します。
下表のOPNsenseログイン情報にてインストーラーへログインし、インストールウィザードを起動します。
ログインID | パスワード |
---|---|
installer | opnsense |
インストールウィザードに従いOPNsenseをインストールします。
仮想マシンにOPNsenseが正常にインストールされた後、OPNsenseが起動します。
OPNsenseのインストール直後の初期状態では、そのinterface IP addressは以下のように設定されいています。
ネットワークインターフェイス名 | 接続するOvDCネットワーク | IPモード | IPアドレス | 管理用Webインターフェイス |
---|---|---|---|---|
LAN | t-dev-mgmt-172.16.10.0 | 固定 - 手動 | 192.168.1.1 | 管理用WEBインターフェイス |
WAN | tutorial-ext-net001 | DHCP | 自動割り当て |
対話メニューに従い、OP1の追加、およびLAN、OPT1へIPアドレスを設定します。
ネットワークインターフェイス名 | 接続するOvDCネットワーク | IPモード | IPアドレス | 管理用Webインターフェイス |
---|---|---|---|---|
LAN | t-dev-mgmt-172.16.10.0 | 固定 - 手動 | 172.16.10.250 | 管理用WEBインターフェイス |
WAN | tutorial-ext-net001 | DHCP | 自動割り当て | |
OPT1(追加) | t-dev-tier-172.16.30.0 | 固定 - 手動 | 172.16.30.250 |
注釈
OPNsense等のネットワーク仮想アプライアンスを導入する際には、NICへ想定通りのネットワークを接続するために、仮想マシンのNIC情報(MACアドレス)を確認しながら設定作業を行って下さい。
以上で、境界防御用仮想ファイアウォールの作成が完了です。
注釈
OPNsenseでは、侵入検知、アンチウィルス機能、LB(リバースプロキシ)等の機能拡張が行えます。
3.2. Active Directoryサーバー、監視サーバーの作成¶
ワークロードネットワークのID管理、内部DNSとなるActive Directoryサーバー、および監視サーバーを作成します。
本工程の作業範囲は下図の通りです。
3.2.1. Active Directoryサーバー¶
Active Directoryとは、Windows Server標準のディレクトリサービスとなります。
Active Directoryを作成することにより、ワークロードネットワークに存在するコンピュートリソース、ユーザー情報の一元管理が可能となります。
また、Windows Server標準のDNSサービスと組み合わせる事で、ワークロードネットワークに存在する仮想マシンのDNSサーバーとすることが可能です。
Active Directoryサーバー作成後、名前解決フローは以下のようなイメージとなります。
3.2.2. 監視サーバー¶
監視サーバーを作成することにより、境界防御用仮想ファイアウォールやワークロードネットワークに存在する仮想マシンの監視を行います。
本ガイドでは、監視ツールとして、ELK Stackを用います。
ELK StackとはElastic社が提供する、Elasticsearch、Kibana、Beats、Logstash等のコアプロダクトの総称となります。
ELK Stackを用いる事で、様々なソースからデータを取得し、リアルタイムに検索/分析/可視化をすることができます。
ELK Stack構成要素が提供する機能を下表に示します。
No | 構成名 | 機能概要 |
---|---|---|
1 | Elasticsearch | JSONベースのリアルタイムデータ検索/分析エンジン |
2 | Logstash | データの収集/処理パイプライン |
3 | Kibana | データ分析および検索ダッシュボード、全文検索エンジン「Elasticsearch」用のデータ視覚化プラグイン |
4 | Beats | パケットキャプチャと各種ログ転送等のデータ用途により選択が可能 |
ELK Stackを用いる事によりOvDC内に展開されるシステム、アプリケーションのすべてのログを集計・分析し、OvDC内モニタリングの可視化、セキュリティ分析などを実現することが可能となります。
本ガイドで作成する監視サーバーは、下図のような監視を目的としています。
3.2.3. Active Directoryサーバー、および監視サーバー用vAppの作成¶
Topメニューより[データセンター]をクリックします。
ネットワークを作成する[仮想データセンターカード]をクリックします。
[コンピュート]->[vApp]をクリックします。
[新規]をクリックし[新規vApp]をクリックします。
下表の内容でvAppを作成します。
項目 | 設定内容 |
---|---|
名前 | tutorial-dev-mgmt |
説明 | ‐ |
パワーオン | チェックなし |
3.2.4. Active Directoryサーバー、および監視サーバー用vAppへのネットワークの追加¶
作成したvAppにネットワークを追加します。
vAppのリストより"tutorial-dev-mgmt"カードを探し、カードの下部にある[アクション]をクリックします。
表示されたメニューリストから[追加]->[ネットワークの追加]をクリックします。
下表の設定にてvAppへネットワークを追加します。
項目 | 設定内容 |
---|---|
タイプ | 組織VDCネットワーク |
選択OvDCネットワーク名 | t-dev-mgmt-172.16.10.0 |
項目 | 設定内容 |
---|---|
タイプ | 組織VDCネットワーク |
選択OvDCネットワーク名 | t-dev-tier-172.16.30.0 |
3.2.5. Active Directoryサーバー用仮想マシンの作成¶
事前準備にてアップロードした、仮想マシンイメージファイルを使用して、Active Directory用仮想マシンを作成します。
[コンピュート]->[vApp]をクリックします。
vAppのリストより"tutorial-dev-mgmt"カードを探し、カードの下部にある[アクション]をクリックします。
表示されたメニューリストから[追加]->[仮想マシンの追加]をクリックします。
[仮想マシンをtutorial-dev-mgmtに追加]ダイアログが表示されます。
[仮想マシンの追加]をクリックし、下表の設定にてvAppへ仮想マシンを作成します。
項目 | 設定内容 |
---|---|
名前 | t-mgmt-ad01 |
説明 | ‐ |
タイプ | テンプレートから |
テンプレート | WindowsServer-2019_Standard_64_include-license_hw17_MvP_01 |
ストレージ | |
コンピュート | 項目なし
|
NIC | 項目なし※別途、仮想マシン構成設定にて追加するため、空欄となります。
|
カスタムプロパティ | 項目なし
|
エンドユーザー使用許諾契約書(EULA) | 項目なし
|
[OK]をクリックし、仮想マシンを構築します。
作成完了後、[vApp]->[tutorial-dev-mgmt]をクリックし、追加した仮想マシンが表示されていることを確認します。
仮想マシン名をクリックし、対象仮想マシン画面へ遷移します。
[ハードウェア]->[NIC]をクリックします。
[編集]をクリックし、下表の設定にてNICを追加します。
NIC No | ネットワーク | ネットワークアダプタ タイプ | IPモード | IPアドレス | プライマリNIC |
---|---|---|---|---|---|
0 | t-dev-mgmt-172.16.10.0 | VMXNET3 | 固定 - 手動 | 172.16.10.1 | ‐ |
上部メニューの[パワーオン]をクリックします。
仮想マシンが起動したら、上部メニュー[WEBコンソールを起動]をクリックします。
別ウィンドウにて、WEBコンソールが起動します。
WEBコンソールを用いて仮想マシンにログインを行い、デスクトップが正常に表示されるのを確認します。
下表のログイン情報にてOSへログインします。
ログインID | パスワード |
---|---|
Administrator | [ゲストOSのカスタマイズ]->[編集]、[ゲストプロパティの編集]->[パスワードを指定]に記載された値 |
注釈
仮想マシンパワーオン時に、ゲストOSカスタマイズ処理が実行されます。
仮想マシンのパスワードは、ゲストOSカスタマイズ処理によってvCDテナントポータルに設定された値が設定されます。
仮想マシンのパスワードは、 [ゲストOSのカスタマイズ]->[編集]をクリックし表示される、[ゲストプロパティの編集]->[パスワードを指定]に設定します。
ここまでで、vCDテナントポータルでの作業が完了です。
以降は、仮想マシン内でのActive Directoyの導入、設定となります。
Active Directory、内部DNSは[Server Manager]->[Dashboard]->[Add roles and features]より導入します。
[Add roles and features]ウィザードに従い導入して下さい。
導入完了後、ActiveDirectory、内部DNSの設定をして完了となります。
3.2.6. 監視サーバー用仮想マシンの作成¶
事前準備にてアップロードした、仮想マシンイメージファイルを使用して、監視サーバー用仮想マシンを作成します。
[コンピュート]->[vApp]をクリックします。
vAppのリストより"tutorial-dev-mgmt"カードを探し、カードの下部にある[アクション]をクリックします。
表示されたメニューリストから[追加]->[仮想マシンの追加]をクリックします。
[仮想マシンをtutorial-dev-mgmtに追加]ダイアログが表示されます。
[仮想マシンの追加]をクリックし、下表の設定にてvAppへ仮想マシンを作成します。
項目 | 設定内容 |
---|---|
名前 | t-mgmt-mon01 |
説明 | ‐ |
タイプ | テンプレートから |
テンプレート | Ubuntu-21.0.4-SV ※tutorial-catalog |
ストレージ | |
コンピュート | 項目なし
|
NIC | 項目なし※別途、仮想マシン構成設定にて追加するため、空欄となります。
|
カスタムプロパティ | 項目なし
|
エンドユーザー使用許諾契約書(EULA) | 項目なし
|
[OK]をクリックし、仮想マシンを構築します。
作成完了後、[vApp]->[tutorial-dev-mgmt]をクリックし、仮想マシンに追加した仮想マシンが表示されていることを確認します。
仮想マシン名をクリックし、対象仮想マシン画面へ遷移します。
[ハードウェア]->[NIC]をクリックします。
[編集]をクリックし、下表の設定にてNICを追加します。
NIC No | ネットワーク | ネットワークアダプタ タイプ | IPモード | IPアドレス | プライマリNIC |
---|---|---|---|---|---|
0 | t-dev-mgmt-172.16.10.0 | VMXNET3 | 固定 - 手動 | 172.16.10.2 | ‐ |
[ハードウェア]->[コンピュート]をクリックしメモリの増設を実施します。
デプロイ時点ではメモリが1GBしかないため、アプリケーションプロセスを起動する際にメモリ不足となります。
導入するアプリケーションに適したメモリ量を搭載するため、メモリの増設を行う必要があります。
下部にある"メモリ"欄の[編集]をクリックし、下表の設定にてメモリを10GBに変更します。
メモリ(GB) | メモリホットアド |
---|---|
10 | チェックなし(無効) |
上部メニューの[パワーオン]をクリックします。
仮想マシンが起動したら、上部メニュー[WEBコンソールを起動]をクリックします。
別ウィンドウにて、WEBコンソールが起動します。
WEBコンソールを用いて仮想マシンにログインを行い、デスクトップが正常に表示されるのを確認します。
下表のログイン情報にてOSへログインします。
ログインID | パスワード |
---|---|
root | [ゲストOSのカスタマイズ]->[編集]、[ゲストプロパティの編集]->[パスワードを指定]に記載された値 |
3.2.7. 監視サーバー用仮想マシンのネットワーク設定¶
使用しているOVA(OVF)では"cloud-init"による設定がなされているため、OvDC環境に沿ったネットワーク回りの再設定を実施します。
Ubuntuでは、ネットワーク設定として「netplan」を使用して設定を行います。
※「50-cloud-init.yaml」が仮想マシン内に生成されています。これは、"cloud-init"がOSデプロイ時に使用するファイルとなります。このファイルをコピーしてネットワーク設定を行います。
以下のコマンドにて仮想マシンのネットワーク設定を行います。
注釈
キーボード設定の変更およびフロッピーモジュールの削除を行う場合は以下を実施下さい。
■ フロッピーデバイスモジュール無効化コマンド
sudo rmmod floppy
echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
sudo dpkg-reconfigure initramfs-tools
■ キーボード設定変更(日本語)コマンド
sudo dpkg-reconfigure keyboard-configuration
# 設定変更用GUIに遷移します
#1. Keyboard model項目にて"Generic 105-key(Intl)PC"を選択
#2. country of origin for the keyboard項目にて"Japanese"を選択
#3. keyboard layout項目にて"Japanese"を選択
#4. 以降、各キー、ファンクション設定を必要に応じて項目を選択
# 設定変更用GUIが終了した後に再起動をすることでKeyBoard設定が変更されます
reboot
■ 仮想マシンネットワーク設定
# 変更前のネットワーク設定を確認します
ip addr show
# 出力結果
# 0: lo: ~
# 1: ens{No}: ~ ← ens{No}が仮想マシンに追加したNICのデバイス名となります。
#
# 50-cloud-init.yamlファイルをコピーして01-netcfg.yamlファイルを作成します。
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/01-netcfg.yaml
# 50-cloud-init.yamlファイルをリネームします。
sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.org
# 01-netcfg.yamlファイルを編集します。
sudo vi /etc/netplan/01-netcfg.yaml
# vi 編集内容
# This file is generated from information provided by the datasource.
## 中略
# network: {config: disabled}
network:
ethernets:
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [172.16.10.2/24]
gateway4: 172.16.10.250 # 境界防御用仮想ファイアウォールがゲートウェイとなります。
nameservers:
addresses: [172.16.10.1] # t-mgmt-ad01がDNSとなります。
dhcp6: no
version: 2
# netplan設定内容を反映します。
netplan apply
# 変更が反映されていることを確認します
ip addr show
以上で、ネットワーク設定が完了です。
設定が完了した後、以下のコマンドにてネットワーク疎通、OvDC外部のサーバーの名前解決ができることを確認します。
# Active Directoryサーバーとの疎通確認 packet lossが0であることを確認
ping 172.16.10.1
# 外部接続用ネットワークとの疎通確認 packet lossが0であることを確認
ping 172.16.1.254
# 外部DNSへの名前解決確認 名前解決できることを確認
ping www.google.co.jp
注釈
外部DNSへの名前解決の確認を行う場合は、事前にActive Directoryサーバーへにて内部DNSを作成する必要があります。
DNSフォワード先は、境界防御用ファイアウォールのDNSフォワーダー(リゾルバ)とします。
本ガイドで使用している「OPNsense」は、DNSリゾルバ機能が利用可能です。
※ デフォルト状態では、DNSクエリ転送が許可されていないため、設定の変更が必要です。
3.2.8. 監視サーバー用仮想マシンへの監視ツールの導入、設定(事前準備)¶
ELK Stackパッケージを導入します。
ただし、ELK StackパッケージはOSにデフォルトで設定されているリポジトリからは導入できません。
その為、リポジトリを管理する「sources.list」ファイルへELK Stackパッケージが導入できるリポジトリ追加します。
以下のコマンドにて、ELK Stackパッケージ導入の事前設定、および「sources.list」ファイルへのリポジトリ設定を行います。
# パッケージの最新化を行います。
sudo apt update -y
sudo apt upgrade -y
# ELK Stackパッケージ導入するのに必要となる依存関係パッケージおよび必要コマンドをインストールします。
sudo apt install wget apt-transport-https curl gnupg2 -y
# Javaをインストールします。
sudo apt install openjdk-11-jdk
# Javaが導入されたことを確認します。
java -version
## 出力内容
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2, mixed mode, sharing)
# Elasticsearchを導入するためのElasticsearch署名Keyを取得します。
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# sources.list.dディレクトリへ必要なリポジトリを追加します。
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
# パッケージリストの再読み込み、https://artifacts.elastic.co/packages/7.x/aptを参照していることを確認します。
sudo apt update
以上で、ELK Stackパッケージ導入の事前準備が完了です。
注釈
本ガイドの手順で設定するリポジトリは、2021/08時点の最新バージョンのリポジトリです。
お客様が設定される場合は、最新バージョンのリポジトリを選択下さい。
最新バージョンについてはElastic社公式をご確認下さい。
続けて、ELK Stackを導入します。
3.2.9. 監視サーバー用仮想マシンへの監視ツールの導入、設定(Elasticsearchの導入)¶
最初にElasticsearchを導入します。
Elasticsearchは、全文検索エンジンとなります。
Elasticsearchを用いる事で、大量のログから任意の単語を含む一文を検索することができます。
以下のコマンドにて、Elasticsearchを導入します。
# Elasticsearchを導入します。
sudo apt install elasticsearch -y
# Elasticsearchサービスの起動と有効化を実施します。
systemctl start elasticsearch
systemctl enable elasticsearch
# Elasticsearch Listenポート(9200)の状態を確認します。
ss -antpl | grep 9200
## 出力結果
LISTEN 0 4096 [::ffff:127.0.0.1]:9200 *:* users:(("Java",pid=xxxxx , fd=xxx))
LISTEN 0 4096 [::1]:9200 [::]:* users:(("Java",pid=xxxxx , fd=xxx))
# Elasticsearch HTTPリクエストの確認を行います。
curl -X GET http://localhost:9200
## 出力結果
{
"name" : "t-mgmt-mon01",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "XXXXXXXXXXXXXXXXXXXXXX",
"version" : {
"number" : "7.14.0",
"build_flaver" : "default",
"build_type" : "deb",
"build_hash" : "XXXXXXXXXXXXXXXXXXXXXX",
"build_date" : "yyyy-mm-ddThh:mm:ss.xxxxxxxxxZ",
"build_snapshot" : false,
"lucene_version" : "8.9.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-bata1"
},
"tagline" : "You Know, for Search"
}
以上で、Elasticsearchの導入が完了です。
3.2.10. 監視サーバー用仮想マシンへの監視ツールの導入、設定(LogStashの導入)¶
次にLogStashを導入します。
LogStashは、サーバーサイドのデータパイプラインとなります。
LogStashを用いる事で、様々なデータを収集、変換を行いElasticsearchへ引き渡します。
以下のコマンドにて、LogStashを導入します。
# LogStashを導入します。
sudo apt install logstash -y
# Logstash設定ファイルを編集します。
# 導入後は入力/出力/フィルター等の設定がされていないため、新規に設定ファイルを作成します
vi /etc/logstash/conf.d/logstash.conf
# 以下を設定ファイルに定義します。
input {
beats {
port => "5044"
type => "beats"
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
}
}
# Logstashサービスの起動と有効化を実施します
systemctl start logstash
systemctl enable logstash
以上で、LogStashの導入が完了です。
3.2.11. 監視サーバー用仮想マシンへの監視ツールの導入、設定(Kibanaの導入)¶
次にKibanaを導入します。
Kibanaは、Elasticsearchに格納されたデータをWebベースで視覚化します。
以下のコマンドにて、Kibanaを導入します。
# kibanaを導入します。
sudo apt install kibana -y
# kibana設定ファイルを編集します
# Kibanaのデフォルト設定では外部アクセスが許可されていないため、設定ファイルを変更し、外部アクセスを許可します。
vi /etc/kibana/kibana.yml
## 以下を追記します。
server.host: "0.0.0.0"
## 以下のコメントアウトを解除します。
elasticsearch.hosts: ["http://localhost:9200"]
# kibanaサービスの起動と有効化を実施します
systemctl start kibana
systemctl enable kibana
仮想マシンの再起動を行います。
KibanaのWEBインターフェイスの確認を行います。
Active Directoryサーバー(t-mgmt-ad01)から、KibanaのWEBインターフェイス(以下、監視コンソール)へ接続できることを確認します。
Active Directoryサーバー(t-mgmt-ad01)へログインし、WEBブラウザを起動して、下記URLへアクセスできる事を確認します。
http://172.16.10.2:5601
注釈
WEBブラウザInternet ExplorerではKibanaを正常に表示ができません。Google Chromeなど他ブラウザをインストールしてください。
※ ダウンロードの際には[Server Manager]->[Dashboard]内の"IE Enhanced Security Configuration"を「Off」に変更下さい。
以上で、Kibanaの導入が完了です。
3.2.12. 監視サーバー用仮想マシンへの監視ツールの導入、設定(Filebeatの導入)¶
最後にFilebeatを導入します。
Filebeatは、ログファイルの収集及び転送を行います。
Filebeatを導入することでELK Stackの最小構成が完了となります。
以下のコマンドにて、filebeatを導入します。
# Filebeatを導入します。
sudo apt install filebeat -y
# Filebeatのデフォルト設定では、ログファイルをElasticsearchへ転送するよう設定されています。これを、LogStashへ転送するよう設定変更します
# Filebeatの設定ファイルを編集します。
vi /etc/filebeat/filebeat.yml
## 以下をコメントアウトします。
# output.elasticsearch:
# hosts: ["localhost:9200"]
## 以下のコメントアウトを解除します。
output.logstash:
hosts: ["localhost:5044"]
# Filebeatサービスの起動と有効化を実施します
systemctl start filebeat
systemctl enable filebeat
仮想マシンを再起動します。
以上で、Filebeatの導入が完了です。
注釈
Active Directoryサーバーから、管理コンソールへアクセスできない場合は、監視サーバーのサービスの状態をご確認下さい。
Elacticsearchプロセスが起動していない場合は、関連サービスを一度停止させた後に以下の順序で再起動をお願い致します。
サービス起動順序
1. Elacticsearchサービス
2. Logstashサービス
3. Kibanaサービス
4. Filebeatサービス
以下のように、監視コンソールにて境界防御用ファイアウォールの状態監視が行えるようになります。
4. 多層アーキテクチャ用カタログ環境構築¶
アプリケーションを配置する準備が整いましたので、多層構造のアプリケーションサービスを構築していきます。
作成する多層構造の構成は、下図の通りです。
4.1. アプリケーション配置用のvAppの作成¶
アプリケーション配置用のvAppを作成します。
Topメニューより[データセンター]をクリックします。
ネットワークを作成する[仮想データセンターカード]をクリックします。
[コンピュート]->[vApp]をクリックします。
[新規]をクリックし[新規vApp]をクリックします。
下表の内容でvAppを作成します。
項目 | 設定内容 |
---|---|
名前 | tutorial-dev-ntier |
説明 | ‐ |
パワーオン | チェックなし |
4.2. アプリケーション配置用のvAppへのネットワークの追加¶
作成したvAppにネットワークを追加します。
vAppのリストより"tutorial-dev-ntier"カードを探し、カードの下部にある[アクション]をクリックします。
表示されたメニューリストから[追加]->[ネットワークの追加]をクリックします。
下表の設定にてvAppへネットワークを追加します。
項目 | 設定内容 |
---|---|
タイプ | 組織VDCネットワーク |
選択OvDCネットワーク名 | t-dev-mgmt-172.16.10.0 |
項目 | 設定内容 |
---|---|
タイプ | 組織VDCネットワーク |
選択OvDCネットワーク名 | t-dev-tier-172.16.30.0 |
つづいてvAppネットワークを追加します。
[アクション]メニューリストから[追加]->[ネットワークの追加]をクリックします。
下表の設定にてvAppネットワークを"tutorial-dev-ntier"に追加します。
名前 | ゲートウェイCIDR | 用途 |
---|---|---|
t-dev-front | 192.168.1.254/24 | WEBフロント用ネットワーク |
名前 | ゲートウェイCIDR | 用途 |
---|---|---|
t-dev-back | 192.168.10.254/24 | DB通信用ネットワーク |
4.3. アプリケーション配置用のvAppへのアプリケーション用テンプレート仮想マシンの作成¶
4.3.1. アプリケーション用テンプレート仮想マシンの作成¶
[コンピュート]->[vApp]をクリックします。
vAppのリストより"tutorial-dev-ntier"カードを探し、カードの下部にある[アクション]をクリックします。
表示されたメニューリストから[追加]->[仮想マシンの追加]をクリックします。
[仮想マシンをtutorial-dev-ntierに追加]ダイアログが表示されます。
[仮想マシンの追加]をクリックし、下表の設定にてvAppへ仮想マシンを作成します。
項目 | 設定内容 |
---|---|
名前 | t-dev-tmp01 |
説明 | ‐ |
タイプ | テンプレートから |
テンプレート | Ubuntu-21.0.4-SV ※tutorial-catalog |
ストレージ | |
コンピュート | 項目なし
|
NIC | 項目なし※別途、仮想マシン構成設定にて追加するため、ここでは空欄とします。
|
カスタムプロパティ | 項目なし
|
エンドユーザー使用許諾契約書(EULA) | 項目なし
|
[OK]をクリックし、仮想マシンを構築します。
作成完了後、[vApp]->[tutorial-dev-ntier]をクリックし、仮想マシンに追加した仮想マシンが表示されていることを確認します。
仮想マシン名をクリックし、対象仮想マシン画面へ遷移します。
[ハードウェア]->[NIC]をクリックします。
[編集]をクリックし、下表の設定にてNICを追加します。
上部メニューの[パワーオン]をクリックします。
4.3.2. 仮想マシンのネットワーク設定¶
仮想マシンに対し、監視エージェント(beats:metricbeat、filebeat)を導入、設定します。
下表のログイン情報にてOSへログインします。
ログインID | パスワード |
---|---|
Administrator | [ゲストOSのカスタマイズ]->[編集]、[ゲストプロパティの編集]->[パスワードを指定]に記載された値 |
以下のコマンドにて、監視エージェント(beats:metricbeat、filebeat)を導入します。
# 変更前のネットワーク設定を確認します
ip addr show
# 出力結果
# 0: lo: ~
# 1: ens{No}: ~ ← ens{No}が仮想マシンに追加したNICのデバイス名となります。
# 50-cloud-init.yamlファイルをコピーして01-netcfg.yamlファイルを作成します。
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/01-netcfg.yaml
# 50-cloud-init.yamlファイルをリネームします。
sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.org
# 01-netcfg.yamlファイルを編集します。
sudo vi /etc/netplan/01-netcfg.yaml
# vi 編集内容
# This file is generated from information provided by the datasource.
## 中略
# network: {config: disabled}
network:
ethernets:
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [{仮想マシンのIP Address}/24] # 個々の仮想マシンのIP Addressを設定します
gateway4: 172.16.10.250 # 境界防御用仮想ファイアウォールがゲートウェイとなります。
nameservers:
addresses: [172.16.10.1] # t-mgmt-ad01がDNSとなります。
dhcp6: no
version: 2
# netplan設定内容を反映します。
netplan apply
# 変更が反映されていることを確認します
ip addr show
4.3.3. 仮想マシンへの監視エージェントの導入¶
仮想マシンに対し、監視エージェント(beats:metricbeat、filebeat)を導入、設定します。
以下のコマンドにて、監視エージェント(beats:metricbeat、filebeat)を導入します。
# パッケージの最新化を行います
sudo apt update -y
sudo apt upgrade -y
# ELK Stackパッケージ導入するのに必要となる依存関係パッケージおよび必要コマンドをインストールします
sudo apt install wget apt-transport-https curl gnupg2 -y
# 監視エージェント(metricbeat、filebeat)を導入するためのElasticsearchリポジトリ署名Keyを取得します。
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# sources.list.dディレクトリへ必要なリポジトリを追加します。
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
# パッケージリストの再読み込み、https://artifacts.elastic.co/packages/7.x/aptを参照していることを確認します。
sudo apt update
# 監視エージェントFilebeatを導入します。
sudo apt install filebeat -y
# Filebeatの設定を変更します。
vi /etc/filebeat/filebeat.yml
# vi 編集内容
## 中略
filebeat.inputs:
# 以下を追加します。
- type: syslog
protocol.udp:
host: "{仮想マシンのIP Address}:9000"
## 以下をコメントアウトします。
#output.elasticsearch:
# hosts: ["localhost:9200"]
## 以下のコメントアウトを解除し、送信先IPアドレスを編集します。
output.logstash:
hosts: ["172.16.10.2:5044"]
# filebeatを実行します。
filebeat -e
# filebeatサービスの起動と有効化を実施します。
systemctl start filebeat
systemctl enable filebeat
# 監視エージェントmetricbeatを導入します
sudo apt install metricbeat -y
# metricbeatの設定を変更します。
vi /etc/metricbeat/metricbeat.yml
# vi 編集内容
## 中略
# 以下を追加します。
setup.kibana:
host: "172.16.10.2:5601"
output.elasticsearch:
hosts: ["172.16.10.2:9200"]
# metricbeatを実行します。
metricbeat setup
# metricbeatサービスの起動と有効化を実施します。
systemctl start metricbeat
systemctl enable metricbeat
以上で、アプリケーション用テンプレート仮想マシンの作成が完了です。
仮想マシンをシャットダウンします。
5. アプリケーション用仮想マシンの作成¶
5.1. 仮想マシンの複製¶
"アプリケーション用テンプレート仮想マシン" から "アプリケーション用仮想マシン" を作成します。
[コンピュート]->[vApp]をクリックします。
[vApp]->[tutorial-dev-ntier]内仮想マシンに追加した仮想マシンが表示されていることを確認し仮想マシン名をクリックします。
[すべてのアクション]->[コピー]をクリックします。
[仮想マシン t-dev-flb01 のコピー]ダイアログが表示されます。
下表の設定にてvAppへ仮想マシンを複製します。
作成完了後、[vApp]->[tutorial-dev-ntier]をクリックし、仮想マシンに追加した仮想マシンが表示されていることを確認します。
[ハードウェア]->[コンピュート]をクリックしメモリの増設を行います。
デプロイ時点ではメモリが1GBしかないため、アプリケーションプロセスを起動する際にメモリ不足となります。
導入するアプリケーションに適したメモリ量を搭載するため、メモリの増設を行う必要があります。
下部にある"メモリ"欄の[編集]をクリックし、下表の設定にてメモリを必要量に変更します。
メモリ(GB) | メモリホットアド |
---|---|
必要量 | チェックなし(無効) |
各仮想マシンを[パワーオン]します。
5.2. アプリケーション用仮想マシンの設定変更¶
下表のログイン情報にてOSへログインします。
ログインID | パスワード |
---|---|
Administrator | [ゲストOSのカスタマイズ]->[編集]、[ゲストプロパティの編集]->[パスワードを指定]に記載された値 |
アプリケーション用仮想マシンのホスト名やネットワークの設定を行います。
# ホスト名を変更します。
hostnamectl set-hostname {仮想マシンのホスト名}
# hosts を変更します。
sudo vi /etc/hosts
## vi 編集内容
## 以下を編集します。
127.0.0.1 {仮想マシンのホスト名}
::1 {仮想マシンのホスト名}
# 変更前のネットワーク設定を確認します
ip addr show
# IP Addressを変更します。
sudo vi /etc/netplan/01-netcfg.yaml
## vi 編集内容
# This file is generated from information provided by the datasource.
## 中略
# network: {config: disabled}
network:
ethernets:
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [{仮想マシンのIP Address}/24]
gateway4: 172.16.10.250
nameservers:
addresses: [172.16.10.1]
dhcp6: no
version: 2
# netplan設定内容を反映します。
netpln apply
# 変更が反映されていることを確認します。
ip addr show
# filebeat設定の編集を行います。
vi /etc/filebeat/filebeat.yml
## vi 編集内容
## 中略
filebeat.inputs:
# 追加
- type: syslog
protocol.udp:
host: "{仮想マシンのIPアドレス}:9000"
# rootパスワードを変更します。
sudo passwd root
New password: {新規のパスワード}
Retype new password: {新規のパスワード}
# 設定内容を反映するため再起動します。
reboot
監視コンソールから、ワークロードネットワーク内の仮想マシン情報が表示されることを確認します。
追加した仮想サーバーのメトリクス情報が、監視サーバーへ登録されアプリケーション用仮想マシンの状態監視が行えるようになります。
6. アプリケーション用仮想マシンへソフトウェアの導入¶
6.1. 仮想ロードバランサーの作成¶
仮想マシン(t-mgmt-fle01)へNGINXを導入します。
NGINXは、NGINX社が提供しているフリーかつオープンなWEBサーバ用のソフトウェアです。
WEBサービス機能(ロードバランサー、リバースプロキシ等)に特化したアプリケーションです。
注釈
NGINXは、大量のクライアントからのアクセスを同時に処理しようとするとレスポンスが大きく下がる「C10K問題」に焦点をあてて開発が行われているのが特徴です。
7.1.1. NGINXの導入¶
NGINXをインストールします。
Ubuntuは、OSにデフォルトで設定されているリポジトリでNGINXが提供されています。
sudo apt install -y nginx
Ubuntuのデフォルト設定では、ファイアウォール機能が無効化されていますので、これを有効化します。
# ファイアウォール機能の状態を確認します。
sudo ufw status
# 出力結果
Status : inactive
# ファイアウォール機能を有効化します。
sudo ufw enable
# ファイアウォール機能の状態を確認します。
sudo ufw status
# 出力結果
Status : active
# ファイアウォール アプリケーションプロファイルの一覧を表示します。
sudo ufw app list
# 出力結果
Available applications :
Nginx Full # ポート80/443を許可します
Nginx HTTP # ポート80を許可します
Nginx HTTPS # ポート443を許可します
OpenSSH # ポート22を許可します
# ポート80を許可します。
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
# ファイアウォール機能の状態を確認します。
sudo ufw status
# 出力結果
Status : active
To Action From
-- ------ ----
Nginx HTTP ALLOW Anywhere
Nginx HTTPS ALLOW Anywhere
OpenSSH ALLOW Anywhere
Nginx HTTP (v6) ALLOW Anywhere (v6)
Nginx HTTPS (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
NGINXのサービスは、導入後、自動起動します。
以下、コマンドにてサービス状態を確認します。
# NGINXサービスの状態を確認します
sudo systemctl status nginx
# 出力結果
● nginx.service - A high performance web server and a reverse proxy server
Loaded : loaded (/lib/systemd/system/nginx.service; # ~ 中略 ~
Active : acive (running) # ~ 中略 ~
# ~ 中略 ~
Mon DD HH:MM:SS {hostname} systemd[1]: Starting A high performance web server # ~ 中略 ~
Mon DD HH:MM:SS {hostname} systemd[1]: Started A high performance web server # ~ 中略 ~
Active Directoryサーバー(t-mgmt-ad01)へログインし、t-dev-flb01へ"HTTP"アクセスを行い、NGINXが正常に起動していることを確認します。
http://172.16.10.20
6.1.2. NGINXの設定¶
NGINXをロードバランサーとして設定します。
以下のような処理遷移を行うようにします。
本ガイドでは、HTTPS通信で必要となるSSLを自己証明書にて設定します。
注釈
SSLの終端を、仮想ロードバランサーで行うことを前提としています。
以下コマンドにて、証明書の作成を行います。
# 認証局(CA)用の秘密鍵を配置するディレクトリを作成します。
cd /etc/ssh/
mkdir private
cd private
# CA用の秘密鍵を作成します。
openssl genrsa -out ca.key 2048
# CA用の自己証明書を発行します。
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
# 秘密鍵を作成します。
openssl genrsa -out server.key 2048
# CSRを作成します。
openssl req -sha256 -new -key server.key -out server.csr
# 自己証明書を発行します。
openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
仮想ロードバランサーの設定を行います。
仮想ロードバランサーの設定は、外部ファイルに作成しサービス起動時に読み込まれます。
本ガイドではロードバランシング方式としてDNSラウンドロビンを用います。
# hosts へWEB/APサーバーの情報を追記し、名前解決できるようにします。
vi /etc/hosts
# 以下を追記します。
# ALB
192.168.1.1 t-dev-fe01
# NGINXの設定ファイルを編集します
vi /etc/nginx/nginx.conf
# httpディレクティブに対して追加設定します
http {
upstream backend {
server t-dev-fe01.example.co.jp;
}
server {
listen 80;
server_name test.example.co.jp;
return 301 https://$host$request_uri; # HTTPでのリクエストをHTTPSへリダイレクトさせます
}
server {
listen 443 ssl;
server_name test.example.co.jp;
# SSL有効化
ssl_certificate /etc/ssh/server.crt;
ssl_certificate_key /etc/ssh/server.key;
location / {
# upstream設定へむけることで振分けします
proxy_pass http://backend;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm
}
}
}
# 設定の検証を行います。
nginx -t
# 出力結果
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 検証結果が正常であることを確認したら、サービスを再起動します。
systemctl restart nginx
以上で、仮想ロードバランサーの設定は完了です。
注釈
本ガイドでは、NGINXをアプリケーションロードバランサーとして設定を行っています。NGINXをL4ロードバランサーとして用いることも可能です。
仮想マシンへNICを追加します。
仮想マシンを[パワーオフ]します。
仮想マシン名をクリックし、対象仮想マシン画面へ遷移します。
[ハードウェア]->[NIC]をクリックします。
[編集]をクリックし、下表の設定にてNICを追加します。
NIC No | ネットワーク | ネットワークアダプタ タイプ | IPモード | IPアドレス | プライマリNIC |
---|---|---|---|---|---|
1 | t-dev-front | VMXNET3 | 固定 - 手動 | 192.168.1.253 | ‐ |
仮想マシンが起動したら、上部メニュー[WEBコンソールを起動]をクリックします。
別ウィンドウにて、WEBコンソールが起動します。
下表のOPNsenseログイン情報にてインストーラーへログインし、インストールウィザードを起動します。
以下のコマンドにて仮想マシンのネットワーク設定を行います。
# 変更前のネットワーク設定を確認します
ip addr show
# 出力結果
# 0: lo: ~
# 1: ens{No}: ~ ← ens{No}が仮想マシンに追加したNICのデバイス名となります。
#
# IP Addressを設定します。
sudo vi /etc/netplan/01-netcfg.yaml
# vi 編集内容
# This file is generated from information provided by the datasource.
## 中略
# network: {config: disabled}
network:
ethernets:
ens{xxx}:
dhcp4: no
addresses: [172.16.10.20/24]
gateway4: 172.16.10.250
nameservers:
addresses: [172.16.10.1]
dhcp6: no
# 追加
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [192.168.1.253/24]
dhcp6: no
version: 2
# netplan設定内容を反映します。
netpln apply
# 変更が反映されていることを確認します。
ip addr show
以上で、NGINXの設定が完了です。
6.2. WEB/APサーバー用仮想マシンの作成¶
仮想マシン(t-mgmt-fe01)へWEB/APサーバー用の設定を行います。
仮想マシンへNICを追加します。
仮想マシン名をクリックし、対象仮想マシン画面へ遷移します。
[ハードウェア]->[NIC]をクリックします。
[編集]をクリックし、下表の設定にてNICを追加します。
NIC No | ネットワーク | ネットワークアダプタ タイプ | IPモード | IPアドレス | プライマリNIC |
---|---|---|---|---|---|
1 | t-dev-front | VMXNET3 | 固定 - 手動 | 192.168.1.1 | ‐ |
2 | t-dev-back | VMXNET3 | 固定 - 手動 | 192.168.10.2 | ‐ |
仮想マシンが起動したら、上部メニュー[WEBコンソールを起動]をクリックします。
別ウィンドウにて、WEBコンソールが起動します。
"6.2. アプリケーション用仮想マシンの設定変更"に従って、アプリケーション用仮想マシンのホスト名やネットワークの設定を行います。
また、以下のコマンドにて仮想マシンのネットワーク追加設定を行います。
# 変更前のネットワーク設定を確認します
ip addr show
# 出力結果
# 0: lo: ~
# 1: ens{No}: ~ ← ens{No}が仮想マシンに追加したNICのデバイス名となります。
#
# IP Addressを設定します。
sudo vi /etc/netplan/01-netcfg.yaml
# vi 編集内容
# This file is generated from information provided by the datasource.
## 中略
# network: {config: disabled}
network:
ethernets:
ens{xxx}:
dhcp4: no
addresses: [172.16.10.21/24]
gateway4: 172.16.10.250
nameservers:
addresses: [172.16.10.1]
dhcp6: no
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [192.168.1.1/24]
dhcp6: no
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [192.168.10.2/24]
dhcp6: no
version: 2
# netplan設定内容を反映します。
netpln apply
# 変更が反映されていることを確認します。
ip addr show
以上で、WEB/APサーバー用仮想マシンの作成が完了です。
お客様任意のアプリケーションを選択してWEB/APサーバーを作成してください。
6.3. DBサーバーの作成¶
仮想マシン(t-mgmt-db01)へDBサーバー用の設定を行います。
仮想マシンへNICを追加します。
仮想マシン名をクリックし、対象仮想マシン画面へ遷移します。
[ハードウェア]->[NIC]をクリックします。
[編集]をクリックし、下表の設定にてNICを追加します。
NIC No | ネットワーク | ネットワークアダプタ タイプ | IPモード | IPアドレス | プライマリNIC |
---|---|---|---|---|---|
1 | t-dev-back | VMXNET3 | 固定 - 手動 | 192.168.10.3 | ‐ |
仮想マシンが起動したら、上部メニュー[WEBコンソールを起動]をクリックします。
別ウィンドウにて、WEBコンソールが起動します。
"6.2. アプリケーション用仮想マシンの設定変更"に従って、アプリケーション用仮想マシンのホスト名やネットワークの設定を行います。
また、以下のコマンドにて仮想マシンのネットワーク追加設定を行います。
# 変更前のネットワーク設定を確認します
ip addr show
# 出力結果
# 0: lo: ~
# 1: ens{No}: ~ ← ens{No}が仮想マシンに追加したNICのデバイス名となります。
#
# IP Addressを設定します。
sudo vi /etc/netplan/01-netcfg.yaml
# vi 編集内容
# This file is generated from information provided by the datasource.
## 中略
# network: {config: disabled}
network:
ethernets:
ens{xxx}:
dhcp4: no
addresses: [172.16.10.21/24]
gateway4: 172.16.10.250
nameservers:
addresses: [172.16.10.1]
dhcp6: no
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [192.168.10.3/24]
dhcp6: no
version: 2
# netplan設定内容を反映します。
netpln apply
# 変更が反映されていることを確認します。
ip addr show
以上で、DBサーバー用仮想マシンの作成が完了です。
お客様任意のDBソリューションを選択してDBサーバーを作成してください。
7. vAppのテンプレート化¶
vApp内にて多層アーキテクチャ構造を構築後、流用を行えるようにvAppをテンプレート化(カタログ登録)します。
作成されたvAppのテンプレートは[ライブラリ]->[コンテンツ ライブラリ]->[vAppテンプレート]に格納されます。
注釈
OvDCネットワークは、vAppテンプレートに含めることができません。
vAppテンプレートを作成する前に、vAppからOvDCネットワークを削除します。
OvDCネットワークのDHCPサービスを利用している仮想マシンは、当該NICの情報が消失します。
Topメニューより[データセンター]をクリックします。
vAppテンプレート化するvAppが存在する仮想データセンターカードをクリックします。
[コンピュート]->[vApp]をクリックします。
vAppリストより、テンプレート化するvAppカード"tutorial-dev-ntier"をクリックします。
vAppに配置されたすべての仮想マシンをパワーオフします。
vAppのメニュー内[ネットワーク]をクリックし、OvDCネットワークを削除します。
削除するOvDCネットワークは、以下の通りです。
OvDCネットワーク名 |
---|
t-dev-mgmt-172.16.10.0 |
t-dev-tier-172.16.30.0 |
上部メニューの[すべてのアクション]をクリックします。
表示されたメニューリストより[テンプレートの作成]をクリックします。
[カタログへの追加:tutorial-dev-ntier]が表示されます。
下表の設定にてカタログへ追加します。
カタログ | 名前 | 説明 | このテンプレートを使用する場合、以下を指定します |
---|---|---|---|
tutorial_catalog | dev-ntier-template | ‐ | 同一のコピーを作成 |
設定後、下部の[OK]をクリックします。
Topメニューより[ライブラリ]をクリックします。
[コンテンツ ライブラリ]->[vAppテンプレート]に作成したvAppが登録されていることを確認します。
以上で、vAppのカタログ化が完了です。