kiến thức DevOps thực tế và chi tiết

elroydevops DevOps thực tế và chi tiết từ doanh nghiệp

Xây dựng mạng nội bộ trên AWS (chia sẻ chi tiết)

Mạng nội bộ là gì? tại sao các công ty, tổ chức đều có hệ thống mạng nội bộ (đặc biệt những công ty công nghệ)? Tại sao DevOps Engineer phải biết cách xây dựng hệ thống mạng cục bộ trên Cloud và làm sao để xây dựng hạ tầng mạng nội bộ cho doanh nghiệp trên AWS, bạn hãy theo dõi hết bài viết này để thấy được.

Mạng nội bộ là gì? mạng nội bộ trên cloud có lợi thế gì?

Mạng nội bộ là một không gian các thiết bị được kết nối với nhau qua LAN (dây mạng) hoặc Wifi (không dây) cho phép chia sẻ dữ liệu qua lại của các thiết bị với nhau, có thể là máy tính với máy tính, máy tính với camera,… nhằm bảo mật những thông tin, tài liệu chỉ được phép lưu hành trong công ty, tổ chức.

Nếu bạn vẫn thấy mơ hồ (Bùi Anh Tuấn)  thì bạn có thể tưởng tượng như sau, bạn và người yêu đi khách sạn tại địa chỉ Số XX – Cầu Giấy – Hà Nội thì đó chính xác là một địa chỉ mà ai đi qua cũng có thể địa chỉ đó có cái khách sạn (được gọi là public IP) vào trong đó sẽ được chia ra rất nhiều phòng mỗi phòng có số phòng nhất định (được gọi là private IP) và các căn phòng trong khách sạn đó thấy được nhau như phòng này để nước, phòng này đặt đồ ăn,… và cũng tương tự vẫn có tính bảo mật là phòng ông này thì không được phép ông kia không được vào chính trong không gian khách sạn đó chính được gọi là mạng nội bộ.

Bạn cũng có thể xem Sử dụng Grafana để monitoring thấy được ví dụ mình đã sử dụng các server ảo với private IP riêng liên kết thành một mạng nội bộ.

Tương tự vậy, mạng nội bộ trên AWS cloud (VPC) chính xác là những đặc tính của mạng nội bộ khác là bạn sẽ không cần cài đặt dây mạng lằng nhằng, không mất diện tích đặt phần cứng, và tính liên tục lên đến 99,9999%, lợi ích hơn cả là cả thiện performance giúp mọi thứ hoạt động trơn tru hơn cũng như tính bảo mật cao và rất nhiều lợi ích khác mà các Cloud provider cung cấp.

mạng nội bộ VPC

Xây dựng hệ thống mạng nội bộ trên AWS (Step by step)

Để có thể thực hiện xây dựng hệ thống này bạn phải có tài khoản AWS và kiến thức nhất định về mạng máy tính như kiến thức như lớp mạng, Subnet, NAT, route, TCP/IP,… để hiểu rõ ràng hơn về hệ thống đang xây dựng.

Dưới đây là phần hướng dẫn step by step vô cùng chi tiết, bạn hãy xem từng bước và áp dụng sẽ giúp ích bạn hiểu hơn về Cloud cụ thể hơn là dịch vụ của AWS.

Xây dựng hệ thống mạng nội bộ doanh nghiệp như sau:

Trong một công ty có hệ thống mạng nội bộ với các EC2 (máy tính) được truy cập từ internet vào (ssh, remote,…) và database không thể truy cập từ ngoài internet chỉ có thể được truy cập từ các máy chủ EC2.

Các bước như sau:

Step 1: Tạo VPC (hiểu đơn giản tạo một địa chỉ – một tòa nhà công ty tại đó)

Step 2: Tạo Subnets public và private internet (những server, database,… đều sẽ nhận IP từ các Subnets này – những thiết bị trong công ty)

Step 3: Tạo internet gateways (cho phép truyền tin giữa internet và các intance nội bộ – giống như một cánh cửa ra vào công ty)

Step 4: Tạo route tables (để xác định đường đi của getway hay các server – là một bản đồ muốn đi ra ngoài phải đi qua internet gateway)

Step 5: Tạo EC2 máy chủ có thể truy cập từ internet, và Database chỉ truy cập từ mạng nội bộ.

Sau mình sẽ có một series hướng dẫn miễn phí về các Service của AWS giúp bạn có thêm một nguồn tiếp cận AWS. Chúng ta cùng bắt đầu.

Step 1: Tạo VPC

Truy cập VPC Management Console và nhấn Create VPC

Thiết lập các cài đặt

  • Resource to create: VPC only
  • Name tag: Tên của Công ty/dự án (ở đây mình để là ELDTech-VPC)
  • IPv4 CIDR block: Có thể hiểu là cấu hình lớp mạng (lớp mạng gồm có lớp A B C) tương đương với nó mỗi loại lớp mạng sẽ có vùng số lượng IP khác nhau bạn có thể tham khảo tại Online IP Subnet ở đây mình dùng mạng lớp B để định nghĩa.
  • IPv6 CIDR block: Sử dụng IPv6 (ở đây mình không dùng)
  • Tenancy: Được hiểu đơn giản là lựa chọn một hệ thống ảo hóa riêng (ở đây mình để default)

Nhấn Create VPC

Tạo thành công VPC (Công ty đã có địa chỉ – tòa nhà)

Step 2: Tạo Subnets

Nói một cách đơn giản Subnet tương ứng là một phần nhỏ hơn của một IP lớn, để hiểu hơn về Subnet bạn có thể đọc: Subnet -wiki

Truy cập Subnets | VPC Management Console và nhấn Create subnet

Thiết lập các cài đặt

Ở Region Tokyo có 3 Subnet tương ứng là ap-northeast-1a, ap-northeast-1c, ap-northeast-1d mình sẽ tạo tương ứng 3 Subnet

  • VPC ID: Chọn VPC mà mình vừa tạo.
  • Subnet 1 of 1:
    • Subnet name.
    • Availability Zone: ap-northeast-1a
    • IPv4 CIDR block: 172.16.1.0/24

Nhấn Create subnet

Tạo thành công subnet đầu tiên và tương ứng thấy 251 địa chỉ IPv4 có sẵn.

Tương tự như vậy tiến hành tạo Subnet tiếp theo với Availability Zone: ap-northeast-1c

Tương tự như vậy tiến hành tạo Subnet cuối cùng với Availability Zone: ap-northeast-1d

Vậy là chúng ta đã có 3 subnet tương ứng ở Tokyo

Step 3: Tạo Internet gateways

Truy cập Internet gateways | VPC Management Console và nhấn Create internet gateway

Điền tên Internet gateway phù hợp và nhấn Create internet gateway

Đã tạo thành công internet gateway nhưng hiện tại bạn có thể thấy trạng thái là Detached tức chưa được Attach vào VPC nào (cánh cổng chưa được gắn với intance VPC và internet).

Tiến hành chọn vào Action và chọn Attach to VPC

Tiến hành chọn VPC của chúng ta và nhấn Attach internet gateway

Trạng thái đã được Attached là thành công

Step 4: Tạo Route tables

Truy cập Route tables | VPC Management Console và nhấn Create route table

Thiết lập các cài đặt

  • Name – optional: đặt tên tương ứng của bạn.
  • VPC: Chọn VPC mà chúng ta vừa tạo.

Nhấn Attach route table

Tạo thành công và bạn có thể thấy chỉ có 1 route và target là local nên chưa thể truy cập được ra internet

Ta sẽ thêm route để có thể truy cập ra ngoài internet, chọn Edit routes

Thêm 2 Route:

  • Destination – 0.0.0.0/0 là tất cả các IPv4 và Target – internet gateway (Muốn đi ra ngoài phải đi qua cổng)
  • Destination – ::/0 là tất cả các IPv6 và Target – internet gateway

Cài đặt thành công bạn sẽ thấy có thêm 2 route.

Tuy nhiên như vậy chưa xong, chúng ta phải chỉ định địa chỉ con nào được phép sử dụng tấm bản đồ ấy để đi ra ngoài internet, nhấn chọn qua Subnet associations và chọn Edit subnet associations

Ở đây mình sẽ cho mạng con ap-northeast-1a-ELDTech được phép truy cập ra vào internet.

Kiểm tra và thấy có 1 mạng con gọi tắt là 1a được public internet (sau này những máy chủ như máy tính truy cập ra internet sẽ sử dụng rải IP này) và mạng con 1c 1d không dược public internet (sử dụng cho các database hoặc server có tài liệu bảo mật, nội bộ)

Step 5: Tạo EC2 (Máy tính mạng nội bộ được phép truy cập internet)

Chúng ta sẽ tiến hành tạo một server để sử dụng (giống máy tính cá nhân) có thể kết nối ra ngoài internet (sử dụng mạng con 1a). Vì bài này mình không tập chung vào việc hướng dẫn EC2 nên mình sẽ tạo nhanh Ec2 (những phần mình chụp và cấu hình thì bạn làm theo nhé còn lại để mặc định)

Truy cập Dashboard | EC2 Management Console và chọn Launch instance

Đặt name instance và hệ điều hành mình chọn là Linux cho nhẹ

Đến phần Key pair (login) bạn chọn create key pair và tiến hành download lưu lại file .pem (chúng ta sẽ sử dụng để truy cập vào EC2)

Ngay dưới phần Network settings chọn Edit

Thiết lập cấu hình:

  • VPC là chọn VPC của chúng ta vừa tạo.
  • Subnet chọn 1a nhé bạn còn nhớ chỉ có 1a mới có thể truy cập vào ra internet chứ.
  • Auto-assign public IP chọn enable
  • Security group chọn Create security group
  • Inbound security groups rules chọn ssh

Nhấn Launch instance

Nhấn chọn vào Instance vừa tạo để xem thông tin và các action

Ở đây bạn có thể thấy 2 phần

  • Public IPv4 address chính là IP truy cập từ bên ngoài vào (máy tính cá nhân)
  • Private IPv4 addresses chính là IP mạng nội bộ của được định nghĩa theo lớp con 1a và với IP gốc là 172.16.0.0

Nhấn vào Connect

Chuyển qua mục SSH client bạn copy chuỗi ở dưới để tiến hành thử truy cập

Bạn còn nhớ file .pem lúc nãy tạo instance chứ ở đây mình sài Linux để ssh trực tiếp.

Với window sẽ bất tiện hơn một chút bạn có thể tải Poderosa Terminal để ssh nhanh chóng đơn giản hoặc còn một cách nữa là chỉnh sửa security của file .pem cho user được full control.

Bạn có thể thấy mình lưu file .pem ở /home/AWS_Key, mình tiến hành đổi quyền chỉ đọc cho admin bằng lệnh chmod 400 filename và tiến hành ssh từ lệnh đã copy ở trên

Kiểm tra IP mạng nội bộ chính xác vậy đã thành công.

Step 6: Tạo database (sample) chỉ cho phép truy cập mạng nội bộ

Như đã nói ở trên mình sẽ hướng dẫn kết nối mạng nội bộ, tạo database mà chỉ có máy tính (EC2) của ta truy cập trong mạng nội bộ và bên ngoài không thể truy cập đến database

Tạo instance tương tự

Trong phần Network settings cấu hình như sau:

  • VPC vẫn chọn VPC của chúng ta vừa tạo
  • Subnet lúc này chúng ta sẽ chọn ap-northeast-1c-ELDTech, bạn có nhớ chúng ta chỉ setup route cho ap-northeast-1a-ELDTech chứ.
  • Auto-assign public IP cái này chúng ta disable luôn vì dù sao cũng không truy cập ra internet chỉ trong mạng nội bộ.

Nhấn Launch instance

Tương tự nhấn chọn instance vừa tạo

Chúng ta thấy ngay được Private IPv4 addresses chính là 172.16.2.62 nằm trong lớp mạng con ap-northeast-1c-ELDTech

Bây giờ chúng ta sẽ setup để cho các server khác trong mạng nội bộ ping đến database này thử

Chọn qua Security và phần Security groups

Chọn vào Inbound rules và Edit inbound rules

Thêm rules:

  • Typ: All ICMP – IPv4
  • Sourc: Anywhere

Nhấn Save rules

Thấy rules đã được cập nhật

Tiến hành thực hiện ping từ EC2 nãy chúng ta tạo đến database này và đây là kết quả đã ping thành công. Vậy là mình đã chia sẻ cách share dữ liệu trong mạng nội bộ cũng như thiết bị nào được truy cập internet và không được truy cập internet

Vậy là Mình đã setup xong một mạng nội bộ cho doanh nghiệp trên AWS, tuy nhiên còn rất nhiều những công việc quan trọng nữa như NAT instance, NAT getway, Access control list nhưng bài viết này đã khá dài nên mình sẽ làm ở phần sau. Mình sẽ làm nhiều hướng dẫn hơn về các kỹ năng, các tool khác để giúp bạn tối ưu được những tác vụ cũng như tiết kiệm những chi phí khi phát triển phần mềm. Thanks.

 

Mọi thắc mắc bạn có thể liên hệ:

Email: [email protected]

Leave a comment

Your email address will not be published. Required fields are marked *