You are on page 1of 18

Đinh Bá Việt Anh - 21013232,

Nguyễn Văn Tài Anh - 21010645,


Nguyễn Văn Mạnh - 21013115

Building a Highly Available, Scalable Web Application


Phase 1: Planning the design and estimating cost.
Task 1: Creating an architectural diagram.

Hình 1 : School Management System on AWS.


Task 2: Developing a cost estimate.
Chi phí cho Lưu trữ …..
Phase 2: Creating a basic functional web application.
Task 1: Creating a virtual network.
I. Tạo VPC.
1. Mở trình duyệt AWS , trong hộp tìm kiếm ở bên phải Services, tìm
kiếm và chọn VPC để mở bảng điều khiển VPC.
2. Bắt đầu tạo VPC.

Hình 2 : Màn hình VPC


• Chọn region N.Virgina (us-east-1)
• Chọn liên kết bảng điều khiển VPC cũng nẳm ở phía trên bên trái của
bảng điều khiển
• Chọn Create VPC
3. Cài đặt cấu hình chi tiết cho VPC:
• Chọn VPC and more
• Trong Name tag auto-generation, hãy chọn Tự động tạo.
• IPv4 CIDR block: 10.0.0.0/16
• Number of Availability Zones: 1
• Number of public subnets: 1
• Number of private subnets: 1
• Customize subnets CIDR blocks:
• Public subnet CIDR block in us-east-1a: 10.0.0.0/24
• Private subnet CIDR block in us-east-1a: 10.0.1.0/24
• NAT gateways: chọn In 1 AZ.
• VPC endpoints: chọn None.
• Giữ DNS hostnames và DNS resolution được bật.
4. Xem bẳng Review bên phải và xác nhận cấu hình.
• VPC: lab-vpc
• Subnets:
1. us-east-1a
1. Public subnet name: lab-subnet-public1-us-east-
1a
2. Private subnet name: lab-subnet-private1-us-
east-1a
• Route tables
1. lab-rtb-public
2. lab-rtb-private1-us-east-1a
• Network connections
1. lab-igw
2. lab-nat-public1-us-east-1a
Hình 3 : Cấu hình cho VPC.

Khi đã hoàn thành việc khởi tạo VPC , chọn View VPC để xem lại cấu hình đã
được tạo trước đó.

Hình 4 : Thông tin VPC.


II. Tạo bổ sung subnets.
1. Trong ngăn điều hướng bên trái, chọn Subnets. Đầu tiên, khởi tạo một public
subnet thứ hai.
2. Chọn “Create subnet” và thiết lập :
2.1. Public subnet.
 VPC ID: lab-vpc (select from the menu).
 Subnet name: lab-subnet-public2
 Availability Zone: Select the second Availability Zone (for example,
us-east-1b)
 IPv4 CIDR block: 10.0.2.0/24
2.2. Private subnet.
 VPC ID: lab-vpc
 Subnet name: lab-subnet-private2
 Availability Zone: Select the second Availability Zone (for example,
us-east-1b)
 IPv4 CIDR block: 10.0.3.0/24
3. Chọn “Create subnet”. Sau khi nhấn nút , một public subnet thứ hai sẽ được
tạo. Thực hiện các bước tương tự và tạo một private subnet thứ hai.

Hình 5: Màn hình cấu hình cho subnet.


III. Tạo VPC Security Group.
1. Trong ngăn điều hướng bên trái, chọn Security group.
2. Chọn “Create security group” và thực hiện cấu hình.
 Security group name: Web Security Group
 Description: Enable HTTP access
 VPC: chọn X để xóa VPC hiện được chọn, sau đó từ danh sách thả
xuống, chọn lab-vpc.
3. Trong ngăn Inbound rules, chọn “Add rule”.Sau đó thực hiện cấu hình :
 Type: HTTP
 Source: Anywhere-IPv4
 Description: Permit web requests
4. Sau khi hoàn thành tất cả thao tác , nhấn “Create security group”.

Task 2: Creating a virtual machine.


1. Trong phần AWS Management Console chọn Services, chọn Compute và
chọn EC2.
2. Chọn Launch instance.
3. Bước 1: Name and tags => name: Web sever.
4. Bước 2: Application and OS Images (Amazon Machine Image)
• Quick Start AMIs: Amazon Linux
• Amazon Machine Image (AMI): Amazon Linux 2023 AMI
5. Bước 3: Instance type: Để mặc định
6. Bước 4: Key pair (login)
• Key pair name – required: vockey
7. Bước 5: Network settings
• Network settings: chọn Edit.
• VPC chọn lab-vpc.
• Cấu hình Security group.
• Trong Tường lửa (nhóm bảo mật), chọn “Select existing
security group.”
• Đối với “Common security groups”, chọn “Web Security
Group.”
8. Bước 6: Configure storage giữ mặc định
9. Bước 7: Advanced details
• Termination protection: chọn Enable
• User data:
#!/bin/bash -xe
apt update -y
apt install nodejs unzip wget npm mysql-server -y
#wget https://aws-tc-largeobjects.s3.us-west-2.amazonaws.com/CUR-
TF-200-ACCAP1-1-DEV/code.zip -P /home/ubuntu
wget https://aws-tc-largeobjects.s3.us-west-2.amazonaws.com/CUR-
TF-200-ACCAP1-1-79581/1-lab-capstone-project-1/code.zip -P
/home/ubuntu
cd /home/ubuntu
unzip code.zip -x "resources/codebase_partner/node_modules/*"
cd resources/codebase_partner
npm install aws aws-sdk
mysql -u root -e "CREATE USER 'nodeapp' IDENTIFIED WITH
mysql_native_password BY 'student12'";
mysql -u root -e "GRANT all privileges on *.* to 'nodeapp'@'%';"
mysql -u root -e "CREATE DATABASE STUDENTS;"
mysql -u root -e "USE STUDENTS; CREATE TABLE students(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL,
city VARCHAR(255) NOT NULL,
state VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
phone VARCHAR(100) NOT NULL,
PRIMARY KEY ( id ));"
sed -i 's/.*bind-address.*/bind-address = 0.0.0.0/'
/etc/mysql/mysql.conf.d/mysqld.cnf
systemctl enable mysql
service mysql restart
export APP_DB_HOST=$(curl http://169.254.169.254/latest/meta-
data/local-ipv4)
export APP_DB_USER=nodeapp
export APP_DB_PASSWORD=student12
export APP_DB_NAME=STUDENTS
export APP_PORT=80
npm start &
echo '#!/bin/bash -xe
cd /home/ubuntu/resources/codebase_partner
export APP_PORT=80
npm start' > /etc/rc.local
chmod +x /etc/rc.local
10. Bước 8: Launch the instance chọn Launch instance.
Task 3: Testing the deployment.
Sao chép Public IPv4 DNS. Mở một trang mới trên trình duyệt và dán vào ô
tìm kiếm , màn hình của bạn sẽ hiển thị dòng chữ “Hello From Your Web Server!”.
* Đây chỉ là một đoạn code HTML basic để test xem cấu hình VPC có hoạt
động hay không!!!
Phase 3: Decoupling the application components.
Task 1: Changing the VPC configuration.
Đã thực hiện ở phần II , III của task 1 : Creating a virtual network. (Phase
2).

Task 2: Creating and configuring the Amazon RDS database.


I. Create a Security Group for the RDS DB Instance.
1. Trong màn hình AWS Management, chọn VPC.
2. Trong ngăn điều hướng bên trái , chọn “Security Groups”.
3. Chọn “Create security group” và cấu hình như sau :
 Security group name: DB Security Group
 Description: Permit access from Web Security Group
 VPC: Lab VPC
4. Trong ngăn Inbound rules, chọn “Add rule”.Sau đó thực hiện cấu hình :
 Type: HTTP
 Source: Anywhere-IPv4
 Description: Permit web requests
5. Cấu hình như sau :
 Type: MySQL/Aurora (3306)
 CIDR, IP, Security Group or Prefix List: Type sg and then select Web
Security Group.
6. Nhấn “Choose Create security group”.
Sử dụng nhóm bảo mật này khi khởi chạy Amazon RDS database.
II. Create a DB Subnet Group.
1. Trên menu Services , chọn “RDS”.
2. Trong ngăn điều hướng bên trái , chọn “Subnet groups”.
3. Chọn “Create DB Subnet Group” và cấu hình :
 Name: DB-Subnet-Group
 Description: DB Subnet Group
 VPC: Lab VPC
4. Kéo xuống vùng Add Subnet và chọn :
 Availability Zones : us-east-1a and us-east-1b.
 Subnets : 10.0.1.0/24 và 10.0.3.0/24.
5. Chọn “Create”.
III . Create an Amazon RDS DB Instance.
1. Trong ngăn điều hướng bên trái , chọn “Databases”.
2. Chọn “Create database”.
3. Chọn “MySQL” dưới Engine Option.
4. Dưới Template chọn Dev/Test.
5. Dưới Availability and durability chọn Multi-AZ DB instance.
6. Under Settings, cấu hình:
 DB instance identifier: lab-db
 Master username: main
 Master password: lab-password
 Confirm password: lab-password
7. Dưới DB instance class, cấu hình:
 Chọn Burstable classes (includes t classes).
 Chọn db.t3.micro

8. Dưới Storage, cấu hình:


• Storage type: General Purpose (SSD)
• Allocated storage: 200 (Tùy thuộc vào yêu cầu của giải pháp để thay đổi
dung lượng )
9. Dưới Connectivity, cấu hình:
• Virtual Private Cloud (VPC): Lab VPC
10. Dưới Existing VPC security groups , thực hiện :
 Chọn DB Security Group.
 Bỏ chọn default.
11. Mở rộng Additional configuration, sau đó cấu hình:
 Initial database name: lab
 Uncheck Enable automatic backups.
 Uncheck Enable encryption
 Uncheck Enable Enhanced monitoring.
12 . Chọn “Create database”.
Sau khi click , hệ thống sẽ mất khoảng 4 phút để tạo database.
Task 3: Configuring the development environment.
1. Đăng nhập vào màn hình AWS Cloud9.
 Truy cập theo đường link : https://console.aws.amazon.com/cloud9/
2. Sau khi đăng nhập vào màn hình chính, trên thanh điều hướng bên trên. Lựa
chọn vùng AWS để tạo môi trường.
3. Chọn “Create enviroment” và bắt đầu cấu hình cho nó :
 Name : Environment.
 Description : Environment of EC2.
 Đối với Environment type, chọn New EC2 instance để khởi tạo
Amazon EC2 environment:
o New EC2 instance - Ra mắt phiên bản Amazon EC2 mới mà
AWS Cloud9 có thể kết nối trực tiếp qua SSH. Bạn có thể sử dụng
Trình quản lý hệ thống để tương tác với các phiên bản Amazon
EC2 mới để biết thêm thông tin.
o Existing compute - Khởi chạy một phiên bản Amazon EC2 hiện
có yêu cầu chi tiết đăng nhập SSH mà phiên bản Amazon EC2 này
phải có quy tắc nhóm bảo mật gửi đến.

 Instance type : t3.micro.


 Platform : Amazon Linux 2023.
 Network settings : Secure Shell (SSH).
4. Chọn “Create để hoàn thành khởi tạo.”

Task 4: Provisioning Secrets Manager.


Task 5: Provisioning a new instance for the web server
Công việc đã được thực hiện ở phần III , Task 2( Creating and configuring
the Amazon RDS database.) , Phase 3.
Task 6: Migrating the database.
Cấu hình lưu trữ dữ liệu đã thực hiện ở AWS RDS.

Phase 4: Implementing high availability and scalability.


Task 1: Creating an Application Load Balancer.
1. Trên màn hình AWS Management , nhấp vào ô tìm kiếm bên cạnh Services và
tìm kiếm EC2.
2. Ở thanh điều hướng bên trái , chọn “Target Groups.”
 Analysis : Nhóm mục tiêu xác định nơi gửi lưu lượng truy cập vào Cân
bằng tải. Cân bằng tải ứng dụng có thể gửi lưu lượng truy cập đến nhiều
Nhóm mục tiêu dựa trên URL của yêu cầu đến, chẳng hạn như yêu cầu từ
ứng dụng di động gửi đến một nhóm máy chủ khác. Ứng dụng web của bạn
sẽ chỉ sử dụng một Nhóm mục tiêu.
o Chọn “Create target group”.
o Chọn kiểu: Instances.
o Target group name : LabGroup.
o Lựa chọn “Lab VPC” từ menu VPC.
3. Chọn “Next”. Màn hình “Register targets” hiển thị.
4. Xem lại cài đặt và chọn “Create target group”.
5. Ở thanh điều hướng bên trái , chọn Load balancer.
6. Dưới “Application Load Balancer”, chọn “Create”.
 Name : LabELB.
 VPC : Lab VPC.
 Chọn Vùng sẵn sàng được hiển thị đầu tiên , sau đó chọn Public Subnet 1.
 Chọn Vùng sẵn sàng được hiển thị đầu tiên , sau đó chọn Public Subnet 2.
7. Trong Security groups.
 Lựa chọn Web Security groups.
 Bên dưới menu thả xuống, chọn dấu X bên cạnh nhóm bảo mật mặc định để
xóa nó.
8. Đối với hàng Listener HTTP:80, hãy đặt hành động Mặc định để chuyển tiếp tới
LabGroup.
9. Chọn Create load balancer.

Task 2: Implementing Amazon EC2 Auto Scaling.


I. Create an AMI for Auto Scaling.

1. Chọn Intances , chọn Web Server 1 trên màn hình chính. Trong menu Action ,
chọn Image and templates > Create image, sau đó cấu hình :
 Image name: WebServerAMI
 Image description: Lab AMI for Web Server
II. Create a Launch Template and an Auto Scaling Group.
1. Trên thanh điều hướng bên trái , chọn Launch Templates.
2. Chọn create lunch template.
3. Cấu hình lại cài đặt :
 Launch template name: LabConfig
 Dưới Auto Scaling guidance, chọn Provide guidance to help me set up a
template that I can use with EC2 Auto Scaling
 In the Application and OS Images (Amazon Machine Image) area, chọn My
AMIs.
 Amazon Machine Image (AMI): choose Web Server AMI
 Instance type: choose t2.micro
 Key pair name: choose vockey
 Firewall (security groups): choose Select existing security group
 Security groups: choose Web Security Group
 Scroll down to the Advanced details area and expand it.
 Scroll down to the Detailed CloudWatch monitoring setting. Select
Enable
 Chọn “Create lunch template”.
4. Trong hộp thoại Thành công, chọn mẫu khởi chạy LabConfig.
5. Từ menu “Action ”, chọn “Create Auto Scaling group”.
6. Định cấu hình chi tiết ở Bước 1 (Chọn mẫu khởi chạy hoặc cấu hình):
 Auto Scaling group name: Lab Auto Scaling Group
 Launch template: xác nhận LabConfig template vừa được lựa chọn.
 Nhấn Next
7. Định cấu hình chi tiết ở Bước 2 (Chọn tùy chọn khởi chạy phiên bản):
 VPC: choose Lab VPC
 Availability Zones and subnets: Chọn Private Subnet 1 sau đó chọn
Private Subnet 2.
 Nhấn Next
8. Định cấu hình chi tiết ở Bước 3 (Định cấu hình tùy chọn nâng cao):
 Chọn Attach to an existing load balancer
o Existing load balancer target groups: chọn LabGroup.
 Tại Additional settings pane:
o Chọn Enable group metrics collection within CloudWatch.
Điều này sẽ ghi lại các số liệu trong khoảng thời gian 1 phút, cho phép
Auto Scaling phản ứng nhanh với việc thay đổi mô hình sử dụng..
 Nhấn Next
9. Định cấu hình chi tiết ở Bước 4 (Định cấu hình chính sách chia tỷ lệ và kích
thước nhóm - tùy chọn):
 Dưới Group size, cấu hình:
o Desired capacity: 2
o Minimum capacity: 2
o Maximum capacity: 6
 Dưới Scaling policies, chọn Target tracking scaling policy và thiết lập:
o Scaling policy name: LabScalingPolicy
o Metric type: Average CPU Utilization
o Target value: 60
o Nhấn Next.
10 . Định cấu hình chi tiết ở Bước 5 (Thêm thông báo - tùy chọn):
Tự động chia tỷ lệ có thể gửi thông báo khi sự kiện chia tỷ lệ diễn ra. Bạn sẽ
sử dụng các cài đặt mặc định.
 Choose Next
11. Định cấu hình chi tiết ở Bước 6 (Thêm thẻ - tùy chọn):
Các thẻ được áp dụng cho nhóm Auto Scaling sẽ được tự động truyền bá đến
các phiên bản được khởi chạy.
 Chọn Add tag và thiết lập:
o Key: Name
o Value: Lab Instance
 Nhấn Next.
12. Định cấu hình chi tiết ở Bước 6 (Xem lại):
 Xem lại chi tiết về nhóm Auto Scaling
 Nhấn Create Auto Scaling group.

Task 3: Accessing the application


Task 4: Load testing the application

You might also like