はじめに
今回は、VPC のプライベートサブネットに MySQL 用の EC2 を立てて、インストールと初期設定まで行う流れをまとめます。
プライベートサブネットの EC2 はパブリック IP を持たないため、ローカルPCから直接 SSH 接続できません。
そのため、パブリックサブネットに踏み台の EC2 を用意し、そこを経由してプライベート側の EC2 にログインします。
また、MySQL を yum でインストールするため、プライベート側 EC2 が外部へ接続できるように一時的に NAT ゲートウェイを作成します。
作業完了後は課金を止めるため NAT ゲートウェイを削除します。
前提
AWSマネジメントコーンソールを使って、以下の手順を進めます。
- VPC を作成済み
- Public Subnet / Private Subnet を作成済み
- それぞれのルートテーブルを作成済み
- キーペア(例:myprivate.pem)を用意
- Public Subnet / Private Subnet にEC2 を作成
- NAT ゲートウェイを作成
それぞれの作成方法は以下の通りです。
VPC の作成
AWS コンソール → VPC → 「VPC を作成」
VPC名:MyVPC
IPv4 CIDR:10.0.0.0/16
Public / Private サブネットの作成
VPC → サブネット → 「サブネットを作成」
【パブリックサブネット】
名前:Public-Subnet
CIDR:10.0.1.0/24
AZ:ap-northeast-1a など
「自動パブリックIP割り当て」→ ON
【プライベートサブネット】
名前:Private-Subnet
CIDR:10.0.2.0/24
AZ:同じ or 別AZ
「自動パブリックIP割り当て」→ OFF
ルートテーブルの作成
Public Route Table
名前:Public-RT
VPC:MyVPC
作成後、以下のルートを追加:
0.0.0.0/0 → Internet Gateway (IGW)
サブネットの関連付けで Public-Subnet を紐付けます。
Private Route Table
名前:Private-RT
VPC:MyVPC
初期状態はアウトバウンド不可(正しい)。
サブネットの関連付けで Private-Subnet を紐付けます。
後で NAT ゲートウェイを作ってここに紐付けます。
キーペアの作成
AWS → EC2 → キーペア → 「キーペアを作成」
名前:myprivate
キーペアタイプ:RSA または ED25519
ファイル形式:pem
rsaは昔からスタンダードで使われてきた方式だけど、最近はed25519を使うことが多いらしいので、今回は後者を採用。
作成後、自動的に以下がダウンロードされます。
myprivate.pem
Public Subnet に踏み台 EC2 を作成
- AMI:Amazon Linux 2
- Subnet:Public Subnet
- パブリックIP:有効
SG設定(推奨):
SSH (22) → 自分のIP(x.x.x.x/32)
※ 学習用として 0.0.0.0/0 を開けるパターンもあるが、本番は厳禁。
Private Subnet に MySQL 用 EC2 を作成
- Subnet:Private Subnet
- パブリックIP:無効
SG設定(推奨):
SSH 22 → 踏み台EC2のSGを許可
MySQL 3306 → 必要なSGのみ許可
一時的に NAT ゲートウェイを作成する
プライベートの EC2 が yum を使えるようにするため一時的に必要です。
VPC → NAT Gateway → 「作成」
Subnet:Public Subnet
Elastic IP:新規割り当て
Private Route Table にルートを追加:
0.0.0.0/0 → NAT Gateway
本題
ターミナルを使って作業をしていきます
① ローカルPC → 踏み台EC2 に SSH 接続
2-1 秘密鍵の権限を設定
chmod 400 myprivate.pem
2-2 踏み台 EC2 に SSH
ssh -i myprivate.pem ec2-user@<踏み台EC2のパブリックIP>
② 踏み台EC2 → Private EC2 に SSH 接続
ssh -i myprivate.pem ec2-user@<Private EC2 のプライベートIP>
③ Private EC2 に MySQL をインストール
3-1 root に切り替え
sudo su
3-2 yum update
yum update -y
3-3 MySQL リポジトリの追加
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm -y
3-4 MySQL のインストール
yum install mysql-community-server -y
3-5 MySQL を起動/自動起動設定
systemctl start mysqld
systemctl enable mysqld
※インスタンスを起動した時にMySQLも自動で起動する
3-6 初期パスワードを取得
cat /var/log/mysqld.log | grep 'temporary password'
3-7 MySQL にログイン
mysql -u root -p
3-8 root パスワードを変更
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
3-9 データベース作成
CREATE DATABASE udemy;
3-10 作成確認
SHOW DATABASES;
NAT ゲートウェイを削除する(片付け)
NAT ゲートウェイは 作成しただけで課金され続ける ため、管理作業が終わったら削除します。
VPC → NAT Gateway → 削除
まとめ
- プライベート EC2 に直接 SSH はできないので踏み台 EC2 を使う
- yum を使うために一時的に NAT ゲートウェイが必要
- 作業後は NAT ゲートウェイを削除する
- 秘密鍵を使って SSH する
- VPC・サブネット・ルートテーブルの基本構成を理解できる良い練習になりました