WSL を用いた EC2-1 / EC2-2 実験環境構築メモ
1. 背景
EC2 を用いたシステム構成(Web / API / DB 等)の検討・実験を行うにあたり、以下の制約と要件があった。
- 複数台 EC2 を用いた構成検討を行いたい
-
毎回 AWS 上に EC2 を立てるのはコスト・手間が大きい
-
完全な性能評価ではなく、
-
構成設計
-
役割分離
-
起動手順
-
常駐プロセス
-
設定ファイル構成
などの実験的検証が主目的
-
このため、WSL2 を EC2 のローカル実験環境として利用する方針を採用した。
2. 基本方針(設計思想)
-
WSL ディストリビューション = EC2 インスタンス相当
-
1ディストリビューション = 1役割
-
BASE(原本)から export / import により派生環境を作成
-
派生環境(ec2-*)は消耗品として扱う
-
IP 分離は行わず、ポート分離で通信を行う
3. 用語整理
| 名称 | 意味 |
|---|---|
| BASE | 原本となる Ubuntu(作業用・テンプレ) |
| ec2-1 | BASE から派生した 1台目の実験環境 |
| ec2-2 | BASE から派生した 2台目の実験環境 |
| export | ある時点の環境をスナップショット化 |
| import | export した環境から新環境を生成 |
4. BASE 環境の位置づけ
BASE は以下の目的で使用する。
-
開発・検証・試行錯誤用
-
各種ツール・ライブラリを自由に導入
-
ec2-* を作るための 原本(テンプレ)
BASE 自体は EC2 相当としては使わない。
5. ec2-1 / ec2-2 作成手順(概要)
5.1 BASE を export
目的:
「この状態を正とする」起点を固定するため
wsl --shutdown
wsl --export Ubuntu C:\wsl\ubuntu_base.tar
これにより、BASE の状態を完全に凍結したテンプレを作成。
5.2 ec2-1 / ec2-2 を import
目的:
BASE と同一の初期状態を持つ独立環境を作成するため
wsl --import ubuntu-ec2-1 C:\wsl\ubuntu-ec2-1 C:\wsl\ubuntu_base.tar --version 2
wsl --import ubuntu-ec2-2 C:\wsl\ubuntu-ec2-2 C:\wsl\ubuntu_base.tar --version 2
この時点で、
-
ファイルシステム
-
ユーザ
-
インストール済みパッケージ
は BASE と同一だが、完全に独立した環境となる。
6. デフォルトユーザ設定
目的
-
root ではなく、通常ユーザ(ebata)で運用する
-
EC2 の一般的な運用形態に合わせる
実施内容
/etc/wsl.conf を作成:
[user]
default=ebata
WSL 再起動後、ebata がデフォルトユーザとなる。
7. 環境識別(混在防止)
課題
-
BASE / ec2-1 / ec2-2 を同時に扱うため、
「今どの環境にいるか」が即座に分かる必要がある。
対応
各環境の ~/.bashrc に以下を設定:
export EC2_ROLE="ec2-1" # または ec2-2
export PS1="[${EC2_ROLE} \u@\h \W]\\$ "
これにより、プロンプトで環境が明確に識別できる。
8. ec2-1 / ec2-2 の軽量化
背景
-
ec2-* はレプリカである必要はない
-
BASE と同じ開発成果物を保持する意味はない
-
ディスク消費を抑えたい
実施内容
-
/home/ebata配下の不要ディレクトリを削除-
go -
matsim -
tsubame -
video-server -
aws
-
-
キャッシュ削除
-
apt キャッシュ削除
必要に応じて sudo rm -rf を使用(所有者が root のファイルが存在するため)。
9. ディスク容量が減らない件について
現象
-
Linux 内でファイルを削除しても
-
Windows 側のディスク使用量が減らない
理由
-
WSL2 は
ext4.vhdxという仮想ディスクを使用 -
拡張は即時、縮小は自動で行われない仕様
判断
-
Linux 側の
df -hで空きが増えていれば問題なし -
今回は 縮小処理は不要と判断
10. ネットワーク設計に関する判断
事実
-
BASE / ec2-1 / ec2-2 は同一 IP を持つ
-
WSL2 の仕様であり、変更不可
採用方針
-
IP 分離は行わない
-
127.0.0.1 + ポート番号による通信を使用
例:
| 環境 | 役割 | ポート |
|---|---|---|
| ec2-1 | Web / API | 9001 |
| ec2-2 | DB | 5433 |
11. EC2 実験用途としての評価
再現できること(◎)
-
役割分離
-
構成設計
-
起動順序
-
常駐プロセス
-
設定ファイル構成
-
デプロイ手順
再現できないこと(割り切り)
-
IP / VPC / SG
-
ネットワークレイテンシ
-
AWS マネージドサービス
-
性能評価
総合評価
「EC2 の実験的使用(構成・設計検証)」としては十分に有効。
12. まとめ(本メモの結論)
-
WSL + export/import による ec2-* 構成は妥当
-
BASE を原本、ec2-* を消耗品とする設計は合理的
-
IP 分離を目的としない限り、実験用途として高く評価できる
-
本構成は、将来の実 EC2 環境への移行を強く意識した設計である