Backup EC2 với AWS Backup
Minh Bui
Bài viết này sẽ hướng dẫn cơ bản cách sử dụng AWS Backup
Introduction
AWS Backup là một service cho phép back up tự động các service khác như EC2, RDS, DynamoDB v.v.. Thông qua AWS Backup, ta sẽ có một solution giúp quản lí tập trung toàn bộ các bản backup, quản lí lifecycle một cách hiệu quả, ngoài ra khi hệ thống xảy ra sự cố thì có thể khôi phục được một cách dễ dàng và nhanh chóng.
Lab Details
- Duration: 15 phút
- AWS Region: us-east-1
Architecture diagram
Task Details
- Tạo EC2
- Configure AWS Backup
- Restore một EC2 mới từ AWS Backup (optional)
1. Tạo EC2:
Để test AWS Backup thì sẽ chuẩn bị trước một EC2 có cài sẵn một web server cơ bản, sau đó sẽ lấy backup cho EC2 này. Mặc dù AWS Backup có thể chỉ định lấy backup riêng theo từng Instance ID, tuy nhiên như vậy sẽ không hiệu quả khi EC2 có số lượng nhiều, hơn nữa có thể dễ xảy ra sai sót trong quá trình thao tác, do vậy trên thực tế để dễ quản lí thì mình sẽ backup dựa trên tag của các resource. Ví dụ toàn bộ EC2 trên môi trường production thì có thể gắn tag Env:Prod
thì AWS Backup có thể tự động lấy back up dựa theo tag này. Chính vì thế ở đây mình sẽ tạo ec2 và gắn tag Env:Prod
cho nó.
1.1. Tạo security group cho ec2
Nếu security group đã có sẵn rồi thì bỏ qua
Name:
d-SAA-basion-host
Description:
Allow ssh and http from internet
VPC:
Default VPC
Inbound rules
Type Protocol Port range Source SSH TCP 22 0.0.0.0/0 HTTP TCP 80 0.0.0.0/0 Outbound rules
Type Protocol Port range Source All traffic All All 0.0.0.0/0 Tags
Key value Name d-sg-SAA-basion-host
1.2. Tạo EC2
- Name:
d-ec2-SAA-bastion-host
- OS: Default (Amazon Linux 2023)
- Instance type: Default (t2.micro)
- Key pair:
d-key-SAA-common
(Nếu chưa có thì tạo mới) - Network Setting:
- VPC:
(default)
- Subnet:
us-east-1a
- Auto-assign public IP:
Enable
- Select existing security group:
d-sg-SAA-basion-host
- VPC:
- Advanced details > User data (copy chính xác nội dung bên dưới)
#!/bin/bash
yum update -y
yum install -y httpd.x86_64
systemctl start httpd.service
systemctl enable httpd.service
echo “Hello World from $(hostname -f)” > /var/www/html/index.html
- Tags
Key value Name d-ec2-SAA-bastion-host Env Prod
1.3. Test ec2
Sau khi ec2 tạo xong, thông qua userdata script thì đã tự động cài sẵn server, mình sẽ vào để kiểm tra server này xem có đang chạy không.
Lấy địa chỉ public của EC2.
Access http://{public ip}
(lưu ý là http
chứ không phải https
)
Như vậy là server trong ec2 đang chạy bình thường, tiếp theo sẽ sang config AWS Backup.
2. Configure AWS Backup
2.1. Tạo Backup Vault
Trước hết mình sẽ cần tạo Backup Vault. Backup Vault có thể hình dung như là một folder nơi mà sẽ chứa toàn bộ các bản backup để quản lí. Các bản backup được tạo ra sau này sẽ được lưu ở đây.
Từ AWS Backup console, chọn Backup vaults > Create backup vault
Nhập tên backup vault d-saa-backup-vault
, chọn key mã hoá mặc định và nhấn Create backup vault
2.1. Tạo Backup Plan
Sau khi đã tạo Backup vault rồi, tiếp theo mình sẽ tạo Backup Plan. Backup Plan thì có thể hiểu là mình sẽ đặt lịch, rồi AWS Backup sẽ dựa vào lịch này để lấy backup tự động. Trong Backup plan mình có thể định nghĩa nhiều lịch backup khác nhau, mỗi lịch này gọi là Backup Rule.
Từ Backup console, chọn Backup plans > Create backup plan
Chọn và điền các thông số như sau:
- Start options
- Backup plan options:
Build a new plan
- Backup plan name:
d-saa-backup-plan
- Backup plan options:
- Backup rule configuration
- Backup rule name:
d-saa-ec2-backup-rule
- Backup vault:
d-saa-ec2-backup-vault
- Backup frequency:
Daily
- Start time:
00:30 Asia/Ho_Chi_Minh
- Backup rule name:
- Các option còn lại để mặc định
Nhấn create plan để tạo plan.
Như vậy mình đã tạo xong Backup plan với rule như sau
- Tần suất backup: hàng ngày
- Thời gian backup: 0:30 theo giờ VN
Sau khi đã có lịch backup, tiếp theo mình cần chỉ định đối tượng resource cần backup, cụ thể ở đây là backup toàn bộ ec2 với tag Env:Prod
Điền các thông tin như sau và nhấn Assign resources
- General
- Resource assignment name:
d-saa-ec2-backup-selection
- IAM Role:
Default role
- Resource assignment name:
- Resource selection
- 1. Define resource selection:
Include specific resource types
- 2. Select specific resource types:
EC2
- 4. Refine selection using tags:
Env Equals Prod
- 1. Define resource selection:
- Các option còn lại để mặc định
Như vậy là mình đã tạo xong Backup plan, bây giờ chỉ cần chờ một hôm đợi đến lịch là AWS Backup sẽ tự động lấy backup. Backup sau khi được lấy sẽ được lưu vào vault, mỗi bản backup tại một thời điểm được gọi là Recovery Points, có thể confirm trên console như sau:
3. Restore một ec2 mới từ AWS Backup (optional)
3.1. Restore ec2 từ Vault
Ở màn hình Backup Vault, chọn Recovery point muốn phục hồi, nhấn Actions > Restore
Chọn các setting như sau và nhấn Restore backup
- Network settings
- Instance type:
t2.micro
- VPC:
Default
- Subnet:
us-east-1a
- Security group:
d-SAA-bastion-host
- IAM role:
Proceed with no IAM role
- Instance type:
- Restore role:
Default role
Restore job sẽ chạy ngay sau đó, khi nào trạng thái chuyển sang Completed là thành công
3.2. Kiểm tra lại ec2
Sau khi restore xong thì sẽ thấy có thêm một ec2 mới được tạo ra
Copy public ip của ec2 này và truy cập lại từ browser xem web server bên trong có còn đang chạy không, như bên dưới là vẫn đang chạy bình thường
Clean up
- Xoá sạch các Recovery Point trong Backup Vault
d-saa-ec2-backup-vault
(nếu có) - Xoá Backup Plan
d-saa-backup-plan
- Xoá Backup Vault
d-saa-ec2-backup-vault
- Xoá ec2 đã phục hồi (nếu có)