Hướng dẫn triển khai (deploy) Docker lên Amazon EC2 phần 1

shape
shape
shape
shape
shape
shape
shape
shape
Hướng dẫn triển khai (deploy) Docker lên Amazon EC2 phần 1

Triển khai Docker lên Amazon EC2 là một vận đề được nhiêu bạn Developers và doanh nghiệp quan tâm. Khi bạn đã hoàn thành và sắp hoàn thành sản phẩm, bạn muốn vận hành thử và cho demo cho khách hàng dùng thử. Nhưng thuê 1 server và cấu hình nó thì tốn rất nhiều chi phí. Cho nên việc deploy trên một nền tảng Cloud tính phí theo giờ là giải pháp bạn cần phải biết.

 Bài viết dành cho các bạn đã có kiến thức cơ bản về:

  • Docker
  • Quản trị server
  • Network
  • Một ứng dụng web nào đó, trong bài mình làm demo php Laravel

Mình hướng dẫn các bạn cách giải quyết vấn đề theo luồng suy nghĩ. Không cố định ở thời điểm nào, chỉ cần các bạn nắm được hướng đi, về sau sẽ dễ dàng triển khai khi gặp các trường hợp khác.

Sau vài ngày vật lộn tìm hiểu với Docker, mình cũng tạm biết vài thứ cơ bản về Docker. Cơ bản là docker sẽ giúp bạn cấu hình sẵn môi trường làm việc cho bộ source code của bạn. Người nhận sau khi tiếp nhận dự án, chỉ cần chạy docker thì đã có thể test được mà không cần phải config gì nhiều.

Tuy nhiên, sau một thời gian, bạn phát triển gần xong dự án và muốn dựng demo cho khách hàng hoặc thành viên trong team của bạn xem. Bạn không thể cứ gửi bộ source và yêu cầu họ tự dựng lên. Vì vậy một vài giải pháp được đưa ra trong đó, bạn có thể sử dụng Cloud service của Amazon để deploy cho dự án của bạn.

Cơ bản các bước gồm có

  1. Thiết lập môi trường docker.
  2. Tạo và thiết lập hệ điều hành sử dụng Cloud.
  3. Up file docker lên Cloud
  4. Public thông tin (IP / Domain name / URL) của dự án

 

I. Thiết lập môi trường docker.

Xác định các môi trường cho dự án bao gồm:

  • app : php, nodejs, python,...
  • Database: mysql, mariadb, mongodb,...
  • Web Service : apache, nginx,...

Tạo file Dockerfile, docker-compose.yml và các config phù hợp trong một folder. 

Test xem bộ docker, container mình đã hoạt động tốt chưa. Mình thường dùng 3 lệnh để chạy cái này.

docker-compose build //Lệnh tạo docker container, images, nếu chưa có images, hệ thống sẽ đọc trong file docker-compose.yml và kéo (pull) về

docker-compose up -d //Lệnh chạy docker, với tham số -d giúp bạn có thể chạy thêm CLI - hữu dụng trong trường hợp chạy laravel xong chạy npm để dev

docker-compose down -v //Lệnh dẹp docker, với tham số -v docker sẽ xóa dữ liệu về lại ban đầu

 II. Tạo và thiết lập hệ điều hành sử dụng Cloud.

Có nhiều Cloud service để bạn up file bao gồm:

  • digitalocean.com: giúp bạn từ container có thể bung ra thành 1 máy chủ ảo.
  • EC2 của AWS : tạo instance (máy ảo), cài đặt docker sau đó up source lên (nay mình sẽ hướng dẫn về cái này)
  • ECS: dịch vụ quản lý Container của AWS, giúp dễ mở rộng các container.
  • docker.com : trang chủ docker có thể giúp bạn chia sẻ các images theo tag.

Như vậy ta có thể phân tích cách để deploy docker trên EC2 trước hết bạn cần có chỗ chứa các file để cài đặt dự án và DockerFile. Mình sẽ sử dụng dịch vụ EC2 của AWS. Bắt đầu thôi.

 

Đầu tiên bạn login vào EC2 để khởi tạo instance

triển khai docker lên ec2

Click vào button  Launch Instance góc phải. 

Tips: Ở bước này bạn cứ tạo Instance nhỏ để test. Amazon có các bậc instance miễn phí.

Tiếp theo các bạn cần điều thông tin:

Name and tags : Tên máy ảo

Application and OS Images (Amazon Machine Image): Hệ điều hành máy ảo. Mình thưởng test với Amazon Linux nó cũng tương tự như CentOS hay Fedora. Và chi phí thấp nhất.

cấu hình cài đặt ec2 instance

Ở bước này có 3 điểm lưu ý:

  1. Lựa chọn hệ điều hành: tùy dự án của bạn, giá các hệ điều hành cũng dc Amazon tính khác nhau
  2. Lựa chọn Kernel: Lựa chọn phiên bản hệ điều hành, mình sử dụng ở đây bản mặc định để làm demo bởi vì nó miễn phí.
  3. Lựa chọn cấu hình / tài nguyên : bao gồm CPU, RAM. Giá sẽ được thể hiện khi bạn lựa chọn.

Tips: Nếu bạn dùng ECS bạn se không quan tâm đến cái này, vì hệ thống sẽ giống bạn tự scale / nâng cấp tài nguyên để đáp ứng performance.

các services hệ điều hành windows

Các service hệ điều hành windows ta có thể thấy với SQL amazon sẽ tính thêm phí cho instance của bạn

các cấu hình tài nguyên của amzon linux

Các cấu hình tài nguyên của Amazon linux, bạn thấy t2.micro sẽ được Amazon cho thử nghiệm miễn phí với 1 CPU và RAM 1GB

 

Kéo xuống dưới chúng ta sẽ cấu hình network cho Instance. Đến chỗ này thì nếu hiểu sâu sẽ khá phức tạp. Đại khái là lúc chúng ta khi còn sử dụng máy ảo, chúng ta chọn Bride hoặc Nat network ra là có thể sử dụng internet. Amazon cũng dây dựng theo mô hình đó nhưng làm mọi thứ tự động hơn.

Mỗi 1 Instance tương ứng với 1 máy ảo trong VPC (Virtual private Cloud). Tại đây bạn có thể setup Subnet / network cho toàn mạng này. Amazon xây dựng các chuẩn policy về mạng giúp bạn có thể áp dụng cho các VPC cũng như instance hiệu quả nhất.

Dựa theo cơ chế đó, ta có hình của Amazon giải thích bên dưới:

Hình minh họa EC2 nằm trong các VPC từ Amazon

 

Như vậy để các Instance hoạt động, bạn cần chọn nó nằm trong VPC nào, network nào. Qua lại với việc cấu hình cài đặt EC2 ta đi đến block Network

Network setting Amazon EC2

Network setting Amazon EC2

 Các thông số bao gồm:

VPC : Chọn private cloud để join vào.

Subnet: Nếu bạn không muốn chia subnet, để mặc định mạng chung. 

Auto-assign public IP: tự gán ip public để truy cập từ bên ngoài.

Firewall (security groups) : Các firewall bạn cần thiết lập. Ở đây bạn có 2 lựa chọn tạo mới hoặc tái sử dụng. Tuy nhiên bạn cần chú ý cần phải open port 22 để bạn remote không thì tèo. Các ports cần mở tùy theo dự án bạn đang làm. VD mở sẵn port 80, 443, 3000, 8000, ...

Cuối cùng là cái đơn giản nhất, thiết lập bộ nhớ lưu trữ cho instance. Chỉ có 1 lưu ý ở đây là hạn miễn phí của Amazon cho bạn đến 30GB.

Như vậy là xong phần 1. Phần 2 chúng ta sẽ cùng khởi động instance, up mớ source code lên, chạy map port public

Nguồn:

https://vticloud.io/huong-dan-cho-nguoi-moi-bat-dau-ve-dich-vu-amazon-ecs/

https://containersonaws.com/introduction/ec2-or-aws-fargate/

 

Bình luận:

    Email của bạn sẽ được bảo mật
    Các trường có dấu * bắt buộc nhập

    Đang tải...

    Bài nhiều người quan tâm

    Tags