Deploy service của bạn lên AWS và cấu hình AutoScale

Ngày nay, với sự ra đời của nhiều dịch vụ Cloud cho doanh nghiệp như Amazon Web Service, Google Cloud hay Microsoft Azure thì việc deploy và vận hành một website không còn cực như trước. Tất cả đều có sẵn và bày ra trên bàn như một bàn tiệc buffet, bạn chỉ cần chọn món và xài thôi. Nhân dịp vừa làm xong, mình sẽ hướng dẫn các bạn cách deploy website (webservice) của bạn lên AWS và cấu hình cho nó tự động scale nếu quá tải.

Image for post

1. Chuẩn bị image
Nguyên lý của việc scale ngang đó là nó sẽ clone service của bạn ra thêm 1 bản (có thể cùng server hoặc không) rồi phân tải giữa các tiến trình đó. Để làm được việc này trên AWS, đầu tiên bạn phải đóng gói service của bạn thành 1 image.
Các bạn vào EC2, tạo 1 instance và cài toàn bộ service của mình lên đó. Thông thường mình chọn con t2.micro là con nhỏ nhất để tiết kiệm chi phí. Chú ý rằng đây chỉ là con máy để tạo image chứ không phải con máy sẽ chạy service thật, nên bạn chỉ cần chọn con vừa phải.
Một điều bạn cần lưu ý nữa là service của bạn cần có khả năng tự động start khi khởi động lại máy. Bởi vì lúc autoscale, một server mới hoàn toàn sẽ được tạo ra từ image này. Do đó sau khi server khởi động, bạn cần start dịch vụ (service) của bạn lên nữa. Cách đơn giản nhất là dùng crontab, chạy câu lệnh start dịch vụ mỗi lần khởi động lại máy. Sửa crontab bằng lệnh crontab -l

@reboot sh /...../start.sh

Sau khi cài đặt xong xuôi và test cẩn thận, bạn shutdown (stop) con máy này đi, rồi vào mục Action -> Image -> Create Image

Image for post

Create Image

Ở hộp thoại hiện lên, các bạn đặt tên cho Image, chọn dung lượng ổ cứng phù hợp với hoạt động của service. Chú ý ở cột Delete on Termination, nếu bạn muốn khi con service này chết đi, ổ cứng của nó vẫn ở lại ( để bạn trích xuất dữ liệu chẳng hạn ) thì không tick chọn ô đó. Nếu bạn muốn khi service bị xóa thì ổ cứng cũng xóa theo để tiết kiệm chi phí ( bạn phải trả tiền cho ổ cứng lưu trữ ) thì tick chọn vào ô đó.

Image for post

Bạn vào mục Images -> AMIs để kiểm tra các Image đã tạo

Image for post

2. Cấu hình Auto Scaling

Bạn vào mục Auto Scaling ở menu bên trái, chọn Launch Configuration. Sau đó chọn tiếp Create launch configuration. Chọn hệ điều hành giống với hệ điều hành của instance EC2 bạn tạo Image. Các bước 1–4 đều đơn giản, các bạn chọn các thông số theo nhu cầu sử dụng. Bước 5 : Config Security Group

Image for post

Bước này bạn sẽ cấu hình những con máy này sẽ được mở những port nào ra ngoài, để bên ngoài có thể gọi được. Ngoài port 22 để SSH ra thì các bạn add thêm port của service vào ( VD: 80 ). Next 2 phát nữa là xong phần này.

3. Cấu hình Auto Scaling Groups

Ở menu bên trái, bạn chọn Auto Scaling Groups, ở đây, bạn sẽ tạo 1 cụm các máy tự động scale theo luật. Nhấn nút Create Auto Scaling group.

Ở bước 1, các bạn đặt tên cho cụm máy scale này. Chọn số máy mặc định thường trực online ở mục Group size. Ví dụ bạn muốn luôn luôn có tối thiểu 2 instances ( 2 máy ) cùng chạy service và chia tải cho nhau thì điền số 2. Network và Subnet nếu chưa có thì tạo nhé.

Image for post

Bước 2, bạn chọn luật để hệ thống Scale. Chọn số máy tối thiểu và số máy tối đa. Scale dựa vào thông số gì ( CPU quá tải hay Network quá tải.. ). Và số giây cần để start dịch vụ của bạn — tính từ khi máy tính khởi động xong đến khi service của bạn start và sẵn sàng nhận request.

Image for post

Bước 4, bạn nên thêm 1 tag là name để dễ phân biệt

Image for post

Review và hoàn thành. Lúc này bạn sẽ chờ hệ thống AWS tự động tạo các instances cho bạn.

4. Cấu hình Load Balancer

Sau khi đã tạo được 1 nhóm các máy chạy service rồi thì phải cấu hình Load Balancer giữa các máy này. Chao ôi, nhiều bước quá..

Các bạn vào mục Load Balancing -> Load Balancers -> Create Load Balancer. Chọn loại Service của bạn, thường là HTTP/HTTPS

Image for post

Bước 1: Đặt tên, cấu hình port mà Balancer sẽ tiếp nhận request

Image for post

Bước 4: Tạo Target group mới

Image for post

Bước 5 sẽ chọn các máy mà thằng này sẽ phân tải, ở đây chúng ta bỏ qua bước này và sẽ cấu hình ở chỗ khác.

Bước 6: Review lại và Next.

5. Liên kết Auto Scaling Group với Load Balancer

Giờ đã có cụm máy chạy service, đã có con Load Balancer, giờ phải trỏ con Balancer này vào đúng cụm máy. Bạn quay lại mục Auto Scaling Group.

Image for post

Tick chọn vào cái Group mà mình tạo hồi nãy, ở mục Details bên dưới, bạn nhấn Edit. Ở mục Target Groups, chọn cái mà chúng ta đã tạo ở mục 4.

Vậy là đã xong toàn bộ các bước cấu hình

6. Test

Quay lại mục Load Balancers, tick chọn mục mà chúng ta vừa tạo. Chú ý ở phần Description bên dưới, dòng DNS name các bạn sẽ thấy domain trỏ đến con Load Balancers này. Truy cập vào domain này các bạn sẽ thấy service của mình để test.

Image for post

7. Custom domain

Bạn có thể dùng domain mà AWS cung cấp sẵn đó để xài. Tuy nhiên domain này thì dài và xấu. Nếu bạn muốn sử dụng domain riêng của mình, bạn có thể thêm 1 record CNAME vào trong cấu hình DNS domain của bạn.

Vậy là xong rồi đấy, cấu hình AWS tuy loằng xà ngoằng nhưng quen tay rồi thì làm cũng nhanh. Quan trọng là từ nay bạn không cần phải lo service sống hay chết nữa, việc của bạn chỉ là code cho tốt thôi 😛

Leave a Reply