Backup EC2 với AWS Backup

Backup EC2 với AWS Backup

avatar

Minh Bui

2024.04.11

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

  1. Duration: 15 phút
  2. AWS Region: us-east-1

Architecture diagram

Images

Task Details

  1. Tạo EC2
  2. Configure AWS Backup
  3. 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

    TypeProtocolPort rangeSource
    SSHTCP220.0.0.0/0
    HTTPTCP800.0.0.0/0
  • Outbound rules

    TypeProtocolPort rangeSource
    All trafficAllAll0.0.0.0/0
  • Tags

    Keyvalue
    Named-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
  • 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
    Keyvalue
    Named-ec2-SAA-bastion-host
    EnvProd

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.

Images

Access http://{public ip} (lưu ý là http chứ không phải https)

Images

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 Images

Nhập tên backup vault d-saa-backup-vault , chọn key mã hoá mặc định và nhấn Create backup vault

Images

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

Images

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 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
  • Các option còn lại để mặc định

Nhấn create plan để tạo plan.

Images

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 selection
    • 1. Define resource selection: Include specific resource types
    • 2. Select specific resource types: EC2
    • 4. Refine selection using tags: Env Equals Prod
  • Các option còn lại để mặc định

Images 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:

Images

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

Images

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
  • Restore role: Default role

Images

Restore job sẽ chạy ngay sau đó, khi nào trạng thái chuyển sang Completed là thành công

Images

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 Images

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

Images

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ó)