ทดลองสร้าง 2 EC2 เชื่อมกับ RDS ใน Private Subnet ในวง VPC
เป้าหมายของบทความนี้
สวัสดีครับ ผม ต้า ครับ
วันนี้เราจะมาทดลองสร้างสภาพแวดล้อม VPC ที่มี 2 Availability Zone
โดยในแต่ละ Zone จะมี EC2 อยู่ใน Public subnet และให้แต่ละ EC2 สามารถเชื่อมต่อ RDS ที่เป็น Database
ที่อยู่ใน Private subnet ของ Availability Zone1 (1a)
ตามแผนภาพด้านล่างเลยครับ↓↓↓
สร้าง VPC
ในขั้นตอนแรกเราจะมาสร้าง VPC ให้ได้ตามรูปด้านบนกันก่อนนะครับ
โดยวิธีการสร้าง VPC สามารถดูได้ที่ลิ้งค์ด้านล่างนี้ครับ↓↓↓
แต่ให้ตั้งค่าตามด้านล่างนี้นะครับ
การสร้าง VPC Beginner และเชื่อมต่อกับ EC2 Instance
Name tag auto-generation:supanut-test
(ตั้งชื่อของ VPC อะไรก็ได้)
IPv4 CIDR block:192.168.0.0/16
Availability Zones (AZs)(2)
:1a
1b
Number of public subnets:2
Number of private subnets:2
Public subnet CIDR block in ap-southeast-1a:192.168.1.0/24
(ตั้งค่าเพื่อให้ดูง่ายในขั้นตอนต่อไป)
Public subnet CIDR block in ap-southeast-1b:192.168.2.0/24
(ตั้งค่าเพื่อให้ดูง่ายในขั้นตอนต่อไป)
Private subnet CIDR block in ap-southeast-1a:192.168.11.0/24
(ตั้งค่าเพื่อให้ดูง่ายในขั้นตอนต่อไป)
Private subnet CIDR block in ap-southeast-1b:192.168.12.0/24
(ตั้งค่าเพื่อให้ดูง่ายในขั้นตอนต่อไป)
NAT gateways:None
VPC endpointsInfo:None
Enable DNS hostnames:✅
Enable DNS resolution:✅
ตั้งค่าเสร็จแล้วก็กด Create VPC
ได้เลยครับ
ตั้งค่า Subnet
หลังจากนั้นให้ไปที่ฟังก์ชันSubnets
แล้วให้ตั้งค่า Public Subnet ทั้ง public1 และ public2 ให้ ✅Enable auto-assign public IPv4 address
เราสามารดูวิธีตั้งค่า Public Subnet ได้ตามบทความด้านล่างนี้ครับ↓↓↓
สร้าง RDS
ต่อไปเราจะสร้าง RDS ใน Private subnet ของฝั่ง Availability Zones 1 (1a)
แต่การที่จะสร้าง RDS ใน Private subnet ได้นั้น เราจำเป็นต้องสร้าง DB subnet group ขึ้นมาก่อน
สร้าง DB subnet group
ตอนแรกแน่นอนว่าเราต้องเข้าไปที่RDS
Serivce ก่อนครับ
แล้วไปที่Subnet groups
กด Create DB subnet group
ครับ
แล้วตั้งค่า Subnet group ตามนี้ครับ
Name: supanut-test-private-subnet-group
(ตั้งชื่อให้สอดคล้องกับที่ทำมา)
Description: supanut-test-private-subnet-group
(ตั้งชื่อให้สอดคล้องกับที่ทำมา)
VPC:เลือก VPC ที่เราสร้างขึ้นมา
Availability Zones:1a
1b
Subnets:เลือก CIDR block ของ private
(ถ้าตั้งตามบทความนี้จะชื่อว่า192.168.11.0/24
และ192.168.12.0/24
)
เสร็จแล้วให้กดCreate
เลยครับ
สร้าง security group สำหรับ RDS
หลังจากนั้นให้เราสร้าง security group สำหรับ RDS โดยสามารถดูวิธีการสร้างได้ที่ลิ้งค์ด้านล่างนี้↓↓↓
แต่ให้ตั้งค่าตามด้านล่างนี้นะครับ
การสร้าง Security Group สำหรับใช้กับ RDS
Security group name:supanut-test-rds
Description:supanut-test-rds
VPC:เลือก VPC ที่เราสร้างขึ้นมาในขั้นตอนที่แล้ว
(ดูให้ดีๆนะครับ อย่าลืม)
Inbound rules
Type:MYSQL/Aurora
Source:192.168.0.0/16
จากนั้นกด Create security group
เลยครับ
สร้าง Database ของ RDS
ขั้นตอนต่อไปจะเป็นการสร้าง Database ของ RDS โดยสามารถดูวิธีการสร้างได้ที่ลิ้งค์ด้านล่างนี้↓↓↓
แต่ให้ตั้งค่าตามด้านล่างนี้นะครับ
การสร้าง RDS
Engine options:MySQL
Availability and durability:◎Single DB instance
DB instance identifier:supanut-test-rds
Master username:admin
Master password:Supanut123
DB instance class:◎Burstable classes
db.t3.micro
Storage type:Magnetic
Virtual private cloud (VPC):เลือก VPC ที่เราสร้างขึ้นมาในขั้นตอนที่แล้ว
(ถ้าสร้างถูก Subnet group จะเปลี่ยนไปตามที่เราสร้างด้วย)
Public access: ◎No
Existing VPC security groups:supanut-test-rds
(ลบ Default ออก)
Availability Zone:1a
(ตามแผนภาพที่ร่างไว้↑↑↑)
Additional configuration
Initial database name:supanut
เสร็จแล้วกดCreate database
เลยครับ
สร้าง EC2
โดยขั้นตอนต่อไปเราจะสร้าง EC2 Instance สำหรับโซน a1 และหลังจากนั้นให้เชื่อมต่อ PuTTY ด้วย
โดยสามารถดูวิธีการสร้างและเชื่อมต่อได้ที่ลิ้งค์ด้านล่างนี้↓↓↓
แต่ให้ตั้งค่าตามด้านล่างนี้นะครับ
【Update】วิธีติดตั้ง Amazon Linux 2 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY
Name:supanut-test-ec2-1
(ตั้งชื่อให้สอดคล้องกับที่ทำมา)
VPC:เลือก VPC ที่เราสร้างขึ้นมาในขั้นตอนที่แล้ว
Subnet:public1
(ตามแผนภาพที่ร่างไว้↑↑↑)(ดูให้ดีๆนะครับ)
Auto-assign public IP:Enable
Security group name:supanut-test-ec2
(จะลองให้ทั้ง 2 Instance ใช้ Security group เดียวกัน)
Description:supanut-test-ec2
เสร็จแล้วกดLaunch instance
เลยครับ
หลังจากนั้นเราสามารถมาเช็คข้อมูลใน หน้า instance ได้ จะเห็นว่า VPC กับ Subnet จะเปลี่ยนไปตามที่เราตั้งค่า
แล้วให้เราเชื่อมต่อ PuTTY ตามบทความด้านบนทุกอย่างเลยครับ
หลังจากนั้นใช้เราใช้คำสั่งนี้เพื่อเปลี่ยน Time zone เป็นเวลาไทยครับ
ln -sf /usr/share/zoneinfo/Asia/Bangkok /etc/localtime
แล้วใช้คำสั่งนี้เพื่อเช็คดูเวลาได้ หากถูกต้องเวลาจะเป็น +07
ครับ
date
การ Login เชื่อมต่อ EC2 ไปยัง MySQL
แล้วคราวนี้จะมาเชื่อมต่อไปตั้ง Database RDS ที่เราสร้างขึ้นครับ
โดยวิธีการเชื่อมต่อสามารถดูได้ที่ลิ้งค์ด้านล่างนี้↓↓↓
ถ้าเราทำตามขั้นตอนในบทความเสร็จแล้ว ไปสร้าง EC2 Instance อีกตัวตามวิธีในขั้นตอนต่อไปเลยครับ
การใช้ AMI สร้าง EC2 Instance อีกตัว
หลังจากที่เราเชื่อมต่อ EC2 เข้ากับ MySQL แล้ว
เราจะมาใช้ฟังก์ชันของ EC2 ที่เรียกว่า AMIs
ในการสร้าง Copy ของ Instance เพื่อย่นเวลาในการตั้งค่าต่างๆภายใน
โดยสามารถดูวิธีการสร้างและเชื่อมต่อได้ที่ลิ้งค์ด้านล่างนี้↓↓↓
แต่ให้ตั้งค่าตามด้านล่างนี้นะครับ
การใช้ AMI เพื่อ Copy ข้อมูลของ EC2 Instance
การตั้งค่าในขั้นตอนการสร้าง Instance
Name:supanut-test-ec2-2
(ตั้งชื่อให้สอดคล้องกับที่ทำมา)
VPC:เลือก VPC ที่เราสร้างขึ้นมาในขั้นตอนที่แล้ว
Subnet:public2
(ตามแผนภาพที่ร่างไว้↑↑↑)(ดูให้ดีๆนะครับ)
Auto-assign public IP:Enable
Firewall (security groups): ◎Select existing security group
Security group name:supanut-test-ec2
(เลือกอันที่เราสร้างในขั้นตอนที่แล้ว)
Description:supanut-test-ec2
เสร็จแล้วกดLaunch instance
เลยครับ
เท่านี้ก็ถือว่าเป็นการติดตั้งทุกอย่างเสร็จสิ้นแล้วครับ
ทดสอบระบบ
นี่คือรายการที่เราจะทดสอบ Instance ตัวที่เราสร้างจาก AMI นั้นเป็นตัวก็อบปี้จริงๆ
และ Instance ทั้ง 2 ตัวใช้ Database เดียวกันครับ
ก่อนอื่นให้เราใช้ PuTTY เชื่อมต่อ Instance ที่เราสร้างจาก AMI ครับ
แล้วใช้คำสั่งนี้เพื่อเข้าสู่root
ครับ
sudo su -
แล้วใช้คำสั่ง Date
เพื่อตรวจสอบเวลา จะเห็นว่าเวลาเป็น+07
แสดงว่าก๊อปปี้สำเร็จครับ
date
จากนั้นให้เราใช้คำสั่ง ifconfig เพื่อตรวจสอบ Private IP ของทั้งสอง instance ดู
ifconfig
จะเห็นว่าเป็นเลข 192.168.1.x
และ 192.168.2.x
ตามที่เขียนไว้ในแผนภาพ
จากนั้นเมื่อเราใช้คำสั่ง login MySQL กับ EndPoint ของ RDS จะพบว่าสามารถ Login ได้เหมือนกัน
และเมื่อเราเปิดดูภายในเราจะพบว่า Database ภายในมีความเหมือนกันอีกด้วย
และเมื่อเราลองอัพเดทข้อมูลในฝั่งนึง ข้อมูลจะขึ้นไปอยู่ในอีกฝั่งนึงอีกด้วย
สรุป
วิธีการสร้างสภาพแวดล้อมแบบนี้ อาจจะดูเยอะและใช้เวลานานกว่าจะสร้างเสร็จ
แต่เมื่อเราแบ่งออกมาเป็นชิ้นเล็กๆเราจะเห็นว่ามันเกิดจากขั้นตอนเล็กๆที่มารวมกัน
โดยบางทีคุณอาจจะเคยผ่านเครื่องมือเหล่านี้มาก่อนแล้วก็ได้
แต่ก็มีจุดระวังหลายจุดในบทความที่คุณควรสังเกตให้ดีๆเวลาลงมือทำจริงเช่น public เป็น private หรือเลข 1 เป็น 2 โดยในจุดนี้หากคุณใส่ผิดในช่วงการสร้าง Instance คุณจำเป็นต้อง Terminate มันและสร้างใหม่ขึ้นมา เพราะฉนั้นเช็คให้ดีก่อนสร้างนะครับ
บทความที่เกี่ยวข้อง
・วิธีการสร้าง RDS และเชื่อมต่อจาก EC2 บน AWS
・【Update】วิธีติดตั้ง Amazon Linux 2 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY
・การสร้าง VPC Beginner และเชื่อมต่อกับ EC2 Instance
・การใช้ AMI เพื่อ Copy ข้อมูลของ EC2 Instance