Hệ thống website của bạn thường có lượng người dùng truy cập cao đột biến trong một khoảng thời gian không được định trước, dẫn đến tính trạng quá tải, gián đoạn hoặc nặng hơn là website bị downtime. Service Load Balancing và Auto scaling cho website được đặt trên EC2 của AWS sẽ là một trong những giải pháp tối ưu để xử lý trường hợp trên. Với giải pháp này, ta có thể điều chỉnh resource EC2 phù hợp với lượng truy cập.
AWS AutoScaling của AWS sẽ giám sát ứng dụng web của bạn, tự động điều chỉnh resource EC2 để duy trì hiệu năng ổn định cho hệ thống.
Bài viết sau sẽ hướng dẫn cách cài đặt Auto Scaling và Load Balancing cho EC2 AWS
Load Balancing và Auto scaling là gì?
Load balancing là gì?
Load balancing còn gọi là “cân bằng tải” là thuật ngữ được sử dụng trong lĩnh vực công nghệ thông tin, đặc biệt là với các nhà phát triển web, lập trình mạng, xử lý dữ liệu.
Khi có quá nhiều người dùng truy cập cùng lúc vào web, ứng dụng sẽ dẫn đến tình trạng tải chậm, thậm chí không thể kết nối được vì máy chủ không kịp xử lý tác vụ hay gọi cách khác là máy chủ down hay sập. Load balancer được bổ sung để tự động phân phối lưu lượng truy cập của người dùng sang một máy chủ khác khi quá tải để đảm bảo tác vụ và giải quyết tất cả các yêu cầu của người dùng một cách trơn tru.
Load balancing còn có khả năng điều phối linh hoạt các máy chủ và bảo mật cho hệ thống datacenter. Điều này được làm thông qua tiếp nhận và xử lý ở Load balancing trước khi phân chia đến các máy chủ và quá trình phản hồi của máy chủ đến người dùng cũng cần phải thông qua load balancing. Người dùng không giao tiếp trực tiếp với máy chủ nên hầu như tất cả các thông tin cũng như cấu trúc mạng nội bộ đều được ẩn đi để ngăn chặn những cuộc tấn công mạng hoặc truy cập trái phép…
Auto scaling là gì?
Auto scaling là thuật ngữ được sử dụng phổ biến trong công nghệ điện toán đám mây (Cloud) nhằm mục đích điều chỉnh số lượng tài nguyên máy tính được phân phối tùy theo nhu cầu sử dụng vào bất kỳ thời điểm nào.
Auto scaling đặc biệt hữu dụng và giúp tiếc kiệm tài nguyên cũng như chi phí khi lượng người dùng không đồng đều tùy theo thời điểm mà không đòi hỏi khách hàng phải nâng cấp và duy trì tài nguyên cố định.
Auto scaling có khả năng tự động tính toán hữu ích và giúp khởi chạy máy chủ mới khi lưu lượng tăng cao hoặc giảm số lượng máy chủ khi lưu lượng thấp, từ đó giúp cho người dùng chỉ thực sự phải trả tiền cho những gì họ sử dụng mà vẫn đảm bảo chất lượng dịch vụ.
Mối liên hệ giữa load balancing và auto scaling
Load balancing và auto scaling đều có chung 1 mục đích là giảm tải cho hệ thống máy chủ. Tuy nhiên chúng làm 2 nhiệm vụ khác nhau, trong khi load balancing chủ yếu giao tiếp với môi trường Internet bên ngoài để điều hướng lưu lượng truy cập thì auto scaling lại có nhiệm vụ giao tiếp chủ yếu với hệ thống máy chủ bên trong server để phân phối lại tài nguyên cho cụm máy chủ.
Nói một cách đơn giản: Khi lưu lượng truy cập quá tải thì load balancing có vai trò phân phối tự động lưu lượng truy cập từ server ban đầu sang 1 server khác. Để làm được điều này thì phải có auto scaling thực hiện thêm hoặc bớt server vào load balancing đang chạy cho cụm máy chủ đó (auto scaling group) trên sự thay đổi về yêu cầu tài nguyên của các máy chủ trong nhóm.
Hướng dẫn cài đặt Load Balancing và Auto Scaling cho AWS EC2
Tạo Target Groups
Vào giao diện AWS Console, tìm và chọn EC2 -> Target Groups -> Create target group
Nhập các thông số cho Target Group cần tạo như hình bên dưới -> Next
Tại giao diện tiếp theo, ta chọn Create target group
Sau khi tạo thành công, ta sẽ thấy target group tại giao diện EC2 -> Target groups
Tạo Load Balancers
Vào giao diện AWS Console, tìm và chọn EC2 -> Load Balancers -> Create Load Balancer -> Chọn Create Application Load Balancer
Tại giao diện Create Application Load Balancer, ta nhập các thông số cho ALB cần tạo. Lưu ý phần Listener and routing, ta Forward port tới target group vừa tạo ở bước trên. Sau đó nhấn tạo Create load balancer
Sau khi tạo thành công, tại giao diện Load Balancers ta sẽ thấy thông tin Load Balancer vừa tạo.
Tạo image và template cho Auto Scaling
Vì Auto Scaling sẽ tự động lấy 1 image làm mẫu để điều chỉnh số lượng EC2 nên ta phải tạo ra template image riêng cho Auto Scaling Groups
- Tại giao diện EC2 trên AWS Console, ta chọn mục Instances -> chọn EC2 cần chạy Auto scaling -> Image and templates -> Create image
- Tại giao diện Create image, ta nhập các thông số image cần tạo -> Create image
Vào mục AMIS trên giao diện EC2 để kiểm tra image vừa tạo
Sau khi kiểm tra đã tạo thành công image, ta vào mục Launch template trên giao diện EC2 -> Create launch template
Nhập các thông tin cho template image cần tạo, lưu ý phần AMIS ta sẽ chọn image vừa tạo ở trên -> Create launch template
Sau khi tạo thành công, ta sẽ thấy template vừa tạo ở giao diện Launch template
Trong quá trình vận hành, nếu EC2 có cập nhật thay đổi ta sẽ làm lại các bước tạo image mới và vào Launch template -> Actions -> Modify template (Create new version) và đổi lại description, AMIS chọn image vừa tạo mới
Tạo Auto Scaling Group
Vào giao diện EC2 -> Auto Scaling groups -> Create an Auto scaling group
Trong giao diện Create Auto Scaling group, ta nhập các thông tin cho Auto Scaling group cần tạo. Lưu ý phần Launch template, ta chọn template vừa tạo ở bước 3
Tại mục Attach load balancer, ta chọn load balancer vừa tạo ở bước 2
Tại mục Configure group size and scaling policies, ta nhập các thông số mặc định cho số lượng EC2 trong Auto Scaling Group. Ở bài viết này, ta sẽ cấu hình số lượng Server mặc định là 2, số lượng Server ít nhất là 2, số lượng Server tăng nhiều nhất là 20. Policy khi tạo thêm Server là CPU vượt quá 70%
Sau khi nhập các thông số cấu hình xong, ta review lại và Create Auto Scaling group
Khi tạo thành công, ta sẽ thấy Auto Scaling group vừa tạo ở mục EC2 -> Auto scaling groups
Lúc này, ta sẽ thấy 2 instance EC2 được tạo ra theo cấu hình Auto scaling group vừa tạo
Ta kiểm tra thêm trong phần Target Groups để thấy tình trạng insance EC2 vừa tạo
Ta có thể truy cập vào instance EC2 được tạo trong Auto Scaling groups bằng thông tin file key được chọn tại mục tạo Launch template.
Kết
Bài viết này Nghi đã hướng dẫn và làm demo cơ bản cách tạo một hệ thống trên AWS bao gồm EC2, Auto Scaling và Load Balance. Dựa trên hướng dẫn này các bạn có thể điều chỉnh và cấu hình thêm các setting riêng tùy theo nhu cầu cụ thể của mình nhé. Hy vọng bài viết cung cấp cho các bạn các thông tin hữu ích.
OneTech hiện đang cung cấp dịch vụ phát triển AWS (Xây dựng, vận hành, di chuyển và phát triển các ứng dụng đám mây trên nền tảng AWS)
Với sự dịch chuyển đám mây ngày càng nhanh, ngày càng nhiều công ty đang xem xét chuyển các hệ thống và dịch vụ web cốt lõi của họ sang AWS. Công ty OneTech cung cấp dịch vụ một cửa từ phát triển WEB mới chi phí thấp, phát triển ứng dụng điện thoại thông minh đến di chuyển qua đám mây, vận hành và bảo trì các hệ thống đám mây trên nền tảng AWS. Chúng tôi cũng là một trong những người đầu tiên làm việc về xây dựng serverless sử dụng Lambda, nơi AWS quản lý máy chủ và phần mềm trung gian.