1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Mạng máy tính và truyền thông: Triển khai tự động cơ sở hạ tầng điện toán đám mây sử dụng Terraform

89 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tự động triển khai cơ sở hạ tầng điện toán đám mây sử dụng Terraform
Tác giả Vũ Khánh Duy, Nguyễn Minh Tuấn Hai
Người hướng dẫn ThS. Đỗ Thị Hương Lan
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Mạng máy tính và truyền thông
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 89
Dung lượng 40,52 MB

Nội dung

Nhóm thực hiện sau khi được hướng dẫn và tìm hiểu, quyết định sử dụng côngnghệ Infrastructure as Code nhằm tạo ra một hệ thống mạng đơn giản giúp rút ngănthời gian triển khai cũng như hạ

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH VA TRUYEN THONG

VUU KHANH DUY

NGUYEN MINH TUAN HAI

KHOA LUAN TOT NGHIEP

dụng Terraform

Automatically deploying cloud infrastructure using Terraform

KY SU NGANH TRUYEN THONG VA MANG MAY TINH

TP HO CHi MINH, 2021

Trang 2

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYÈN THÔNG

VƯU KHÁNH DUY- 17520409

NGUYEN MINH TUẦN HAI -17520427

KHOA LUAN TOT NGHIEP

Tự động triển khai cơ sở hạ tang điện toán đám mây sử

dụng Terraform

Automatically deploying cloud infrastructure using Terraform

KY SU NGANH TRUYEN THONG VA MANG MAY TINH

GIANG VIEN HUONG DAN

ThS.ĐỖ THI HUONG LAN

TP HO CHI MINH, 2021

Trang 3

THÔNG TIN HỘI ĐÒNG CHÁM KHÓA LUẬN TÓT NGHIỆP

Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số

TigầYy của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

Trang 4

LỜI CÁM ƠN

Thành công không chỉ một cá nhân tạo ra mà còn gắn liền với sự hỗ trợ, giúp

đỡ đến từ nhiều người khác Trong suốt thời gian học tập tại giảng đường đại học

em đã nhận được nhiều sự quan tâm, giúp đỡ của quý thầy cô, gia đình và bạn bè

Em xin gửi lời cảm ơn đến quý thầy cô Khoa Mạng máy tỉnh & Truyền

thông — Trường Dai Học Công Nghệ Thông Tin ĐHQG TP.HCM đã nhiệt tinh

trong việc truyền đạt vốn kiến thức quý báu giúp đỡ em rất nhiều trong thời gian

học tập tại trường Em xin chân thành cảm ơn cô ThS Đỗ Thị Hương Lan đã tận

tâm, chỉ bảo chúng em qua những buổi nói chuyện, thảo luận về lĩnh vực đề tàitrong lĩnh vực đề tài khóa luận tốt nghiệp Một lần nữa, chúng em xin chân thànhcảm cô Mặc dù khóa luận không tránh khỏi thiếu sót, rất mong nhận được những ýkiến đóng góp quý báu của quý thầy cô giúp bài khóa luận hoàn luận thiện hơn

Lời sau cùng, chúng em xin kính chúc quý thầy cô trong khoa Mạng MáyTính và Truyền Thông sức khỏe, niềm tin, vững bước dìu dắt chúng em trưởng

thành.

Trân trọng, ngày tháng năm

Trang 5

2.1 Infrastructure AS COde c<ccct HH HH1 ưe 6

2.2 Cách thức hoạt động chung của laC -. -csxserrerrrrerrrrerrrrirrrrrrrrrrrie 6

3.1.1 _ Liên kết với nhà cung cấp dịch vụ «-ee eccerrcceere 13

3.1.2 Định nghĩa tài nguyên xây dựng -«-ccsrrrerrrrrrrrrrerrrree 14

3.1.3 Tạo cơ sở hạ tầng 16

Trang 6

SN 005 | 0) ÖỞ44.,,,,,, ,ÔỎ 17

3.1.1 Kếtnối SSH ecccecerrrrirrrrrrrrrrrrrrrrrrrrrrrrrrrrree 17

3.1.2 Triển khai ứng dung với ansible-playbook và inventory 19

3.1.2.1 Ansible-playboO -ccccsccccesreerreetrteerrrrrrrtrrrrrrrrrrrrsrrrrrrrreee 19 3.1.2.2 Ansible Inventory HOSES -cscccceekirekrirkriririiireree 21

3.2 DOCK€V Ă SH HH HH 22

3.2.1 Tạo image từ dOCK€rfIÏe -c+cxerxseretrrerteeretrrerrrretrkrrrrre 22

3.2.2 Chay ứng dụng với docker-COINDOS€ -« c-cccsseerreseresrrresrre 23

3.3 Gan tên miền Freenom -‹ e+++eceetreceetEtreeertrrrerrrtrrrarrrrrirsrrrrrrrere 24

4.2 Triển khai trên chỉ tiẾt ce-erieerierieriirrrrrirririrriirirrrrrre 30

4.2.1 Xây dựng cơ sở hạ tang và trién khai WordPress tự động 30

Trang 7

4.2.3 Giám sát hệ thống -cccrkiieiriirrrriiiirrrrriie 54

` KOt an ốẽ 56

"nh 56

“#9 ‹< ẽ ẽ 57

Chương 5 TRÌNH BAY, ĐÁNH GIA BAN LUẬN VE KET QUÁ 59

5.1 Kết quả đạt QUOC c 55+c+rerrrtxritErirtkrittrirtiiiiririiiiriiriirirrree 59

“U20 sẽ ốốẽẽẽẽẽẽ 59

Chương 6 HUONG PHAT TRIN s2 se cssssessesssessessee 60

6.1 Tự động hóa quá trình đăng ký tên miền Freenom - - 60

6.1.1 _ Tình hình hiện tại -c-c-ccckceEkiisEirEiiiiiiierree 60

6.1.2 Hướng phát triển về sau cccccccccreeerrrrrrreerrrrrrrrrerree 606.2 Mở rộng môi trường triển khai cơ sở hạ tầng -sercccce+ 60

6.2.1 _ Tình hình hiện tại -.ccEriskkiriiiiiiiiiiiree 60

6.2.2 Hướng phát triển về sau -cccccccccvveeeseserrreesssrrrrrreesee 60

6.3 Tối ưu hóa triển khai Docker trên AWS -c-eciceccerrreccerrrrererte 61

6.3.1 _ Tình hình hiện tại -+ccecrrirrtriirtkrirrrriiriirriiiirrree 61

6.3.2 Hướng phát triển về sau s-eccerreeeerreeerrrerrrrererre 61

TÀI LIEU THAM KHAO -°- 2 5£ s52 5< s£EseES2ESsEEseEseEssEssersersrssre 62

Trang 9

Hình 4-3 Sơ đồ chỉ tiết hệ thống triển khai trên AWS -cc-ccccee 30 Hình 4-4 Sơ đồ chỉ tiết hệ thống triển khai trên Openstack - - 41Hình 0-1: Yêu cầu cơ bản của Linux khi cài đặt AWS CLI 2 ccccs5 67

Trang 10

DANH MỤC BANG

Bảng 1 So sánh Ansible và các công cụ cấu hình khác - 11

Bảng 2 Các tài nguyên sử dụng trong khóa luận -c-cee-rrxeeree 15 Bảng 3 Các thư mục trong một Ansible roÌe -.ce ccxessxrxeertrrresrrrrrerree 20

Bảng 4 Danh sách tệp tf xây dựng ha tầng AWS -.cccceccrrrrcrrrrrrree 33

Bảng 5 Danh sách tệp tf xây dựng hạ tầng OpenStack - - - 44

Bảng 6 Danh sách các ÏOlÏe -«+ccx+tkkrtEkHHHHH HH HH 49

Bang 7 Bang so sánh thời gian xây dựng hạ tầng - -c-ccccccccrccee 59

Trang 11

DANH MỤC TỪ VIET TAT

AWS: Amazon Web Services

laC: Infrastructure as Code

NAT: Network Address Translation

Trang 12

TOM TAT KHÓA LUẬN

Tên đề tài: Tự động triển khai cơ sở hạ tầng điện toán đám mây sử dụng

Terraform (Automatically deploying cloud infrastructure using Terraform)

Việc quan lý các web applications khá phức tạp, vi du như quan lý load balancer,

web servers, database servers, Có thé sẽ phải mat hàng giờ dé xây dựng va quản

lý những hệ thống này

Nhóm thực hiện sau khi được hướng dẫn và tìm hiểu, quyết định sử dụng côngnghệ Infrastructure as Code nhằm tạo ra một hệ thống mạng đơn giản giúp rút ngănthời gian triển khai cũng như hạn chế / giảm thiểu “human error” trong quá trìnhtriển khai và quản lý cơ sở hạ tầng

Đề tài của nhóm thực hiện triển khai ứng dụng WordPress trên một hệ thống cơ

sở hạ tầng đơn giản của AWS và OpenStack, xây dựng bằng Terraform

Kết quả thu được của nhóm thực hiện là xây dựng được cơ sở hạ tầng, triển khaithành công ứng dụng, so sánh sự khác biệt giữa triên khai cơ sở hạ tầng cloud

truyền thống và tự động, nhận ra được một số hạn chế và nêu ra các hướng phát

Chuong 2 TONG QUAN

Giới thiệu về Infrastructure as code và các thành phan liên quan sử

dụng trong khóa luận.

Chương 3 _ PHƯƠNG PHÁP THỰC HIEN

Mô tả sơ bộ hoạt động của các ứng dụng trong mô hình triển khai của

nhóm thực hiện.

Trang 13

Chương 4 TRIEN KHAI MÔ HÌNH THUC TE

Phân tích mô hình và quá trình triển khai hệ thống

Chương 5 TRINH BAY, ĐÁNH GIA BAN LUẬN VE KET QUA

Trinh bày kết qua dat được, đánh giá kết qua.

Chương 6 HƯỚNG PHÁT TRIEN

Phân tích một số hướng phát triển tiếp theo có thê thực hiện

PHU LUC HUONG DAN CÀI ĐẶT MOT SO PHAN MEM CAN THIẾT

Huong dan cai dat OpenStack, tao tai khoan AWS, cai dat AWS CLI,

tao tai khoan Freenom.

Trang 14

Chương 1 MỞ DAU1.1 Lý do chọn đề tài, mục đích

1.1.1 Lý do chọn đề tài

Quản lý các ứng dụng mạng khá là phức tạp, ví dụ phải quản lý load balancer,

web servers, database servers, có thé sẽ phải mat hàng giờ dé xây dựng và quản lýnhững hệ thống này

Xây dựng ứng dụng mạng cần có máy chủ làm host triển khai Tuy nhiên khôngphải ai cũng có khả năng tự xây dựng 1 hệ thống máy chủ vật lý để triển khai ứngdụng Hiện nay, rất nhiều doanh nghiệp đã chuyền từ hệ thống máy chủ vật lý lên hệ

thống đám mây Điều này đã mang lại rất nhiều sự thay đổi cũng nhưng lợi ích:

giảm chỉ phí vận hành, mở rộng hệ thông khi cần thiết; bảo mật dữ liệu được đảm

bảo bởi các nhà cung cấp dịch vụ điện toán đám mây; hạn chế rủi ro mất đữ liệu sovới hệ thống máy chủ vật lý Do đó nhóm thực hiện quyết định chọn đề tài xâydựng triển khai hệ thong điên toán dam mây

1.1.2 Mục dich

Để rút ngắn thời gian triển khai cũng như hạn chế / giảm thiểu “human error”trong quá trình triển khai và quản lý cơ sở hạ tầng, nhóm thực hiện sau khi đượchướng dẫn và tìm hiểu, quyết định sử dụng công nghệ Infrastructure as Code trongkhóa luận tốt nghiệp

Infrastructure as code (IaC) là một mô hình thiết lập và triển khai công nghệ.Trong đó các developer hoặc nhóm vận hành tự động quản lý và cung cấp các góicông nghệ cho ứng dụng thông qua phần mềm Thay vì sử dụng quy trình thủ công

dé cấu hình các thiết bi phần cứng và hệ điều hành rời rac

Nếu đang xử lý một cơ sở hạ tầng hiện đại, phức tạp Đề không tốn quá nhiều thời

gian dé tương tác với nhà cung cấp đám mây theo cách thủ công thì IaC là sự lựa

chọn hoàn hảo IaC thường được viết bằng Terraform Đây là một công cụ laC

Trang 15

open-source Với tính năng linh hoạt Terraform có thê làm việc với nhiêu hãng và

nên tảng cung cấp dịch vụ hạ tầng khác nhau

Mục đích của nhóm thực hiện là xây dựng một hệ thong mô hình mẫu, thé hiện

được ưu điểm của Terraform giúp giảm thiêu lỗi trong quá trình triển khai Đồng

thời triển khai ứng dụng WordPress lên hệ thống cơ sở hạ tầng đã tạo của AWS và

OpenStack.

Trang 16

1.2 Đối tượng và phạm vi nghiên cứu

Đối tượng đề tài hướng tới là xây dựng một cơ sở hạ tầng cấu hình dựa trên

Terraform và nền tảng đám mây AWS, OpenStack, giúp User quản lý được các máy

tính ảo tạo bằng Terraform trên một máy tính local

Vê phạm vi nghiên cứu, nhóm thực hiện tìm hiệu các nội dung có liên quan tới khóa luận như :

e_ Terraform đóng vai trò gì, hỗ trợ điều gì, kết hợp với việc gì trong quá

trình triển khai một ứng dụng web

e Cách triển khai máy ảo trên nền tảng đám mây thông qua Terraform

-laC

e Hệ thống Amazon Web Services và OpenStack

e Tạo tài nguyên triển khai ứng dụng trên cloud

e Một số công nghệ khác sử dụng trong khóa luận như Docker,

Docker-compose, Git, Ansible, Zabbix

` Terraform Bang aws

openstack; ~~”

Trang 17

Chương 2 TỎNG QUAN

2.1 Infrastructure as code

Infrastructure as code là một cách tiếp cận dé tự động hóa cơ sở hạ tang dựa trên

các phương pháp thực tiễn từ phát triển phần mềm Sử dụng các quy trình nhấtquán, có thé lặp lại dé cung cấp và thay đôi hệ thống thông qua các quy trình khôngcần giám sát bao gồm xác nhận kỹ lưỡng [1]

Là công cụ hiện đại có thể coi cơ sở hạ tầng như thể nó là phần mềm và dữ liệu,cho phép mọi người áp dụng các công cụ phát triển phần mềm như hệ thống kiểmsoát phiên ban (VCS), thư viện kiểm thử tự động và điều phối triển khai dé quản lý

cơ sở hạ tầng Nó cũng mở ra cánh cửa dé khai thác các thực tiễn phát triển như

phát triển testdriven (TDD), tích hợp liên tục (CD và phân phối liên tục (CD).

2.2 Cách thức hoạt động chung của laC

Về cơ ban, cách thức hoạt động chung của IaC gồm 3 bước:

e Quản trị viên xác định các thông số câu hình hệ thống bằng một ngôn

ngữ.

e Các tệp hướng dan được gửi đến một máy chủ chính (server), một

API quản lý (management API) hoặc một kho lưu trữ mã (github).

e Nền tang IaC theo hướng dẫn của nhà phát triển xây dựng và cấu hình

hệ điều hành và thậm chí toàn bộ ứng dụng phần mềm có sẵn ngay lập tức theo yêu

cầu Điện toán đám mây có thể không liên quan đến rất nhiều công nghệ mới,

nhưng nó đại diện cho một phương thức mới để quản lý CNTT Ví dụ, khả năng mở

Trang 18

rộng và tiết kiệm chi phí có thé đạt được ở mức độ lớn nhất từ Điện toán đám mây

[2].

Điện toán dam mây được so sánh với các kiến trúc hướng dịch vụ (SOA), Điện

toán lưới(Grid computing), Điện toán tiện ich(Utility computing) và Điện toán

cụm(Cluster computing) Điện toán đám mây và SOA được duy trì độc lập Các

dịch vụ nền tảng và lưu trữ của Điện toán đám mây mang lại giá trị b6 sung cho

những nỗ lực của SOA Với các công nghệ như Grid computing, tài nguyên máy

tính có thé được cung cấp như một tiện ích Trong khi đó, Điện toán dam mây tiếnmột bước xa hơn với tài nguyên theo yêu cầu dự phòng Nó cũng loại bỏ sự cần

thiết của việc cung cấp quá mức cần thiết khi đáp ứng nhu cầu của khách hàng Tính

toán chi phí ứng dụng phải trả cho việc sử dung tài nguyên, tương tự như cách

chúng ta trả tiền cho một dịch vụ công cộng (chăng hạn như điện, nước, xăng, v.v.)

Điện toán cum(Cluster computing) là một hình thức chi phí rẻ hon dé xử lý cácứng dụng có thê chạy song song Người dùng truy cập các dịch vụ đám mây như tàinguyên máy tính và trung tâm di liệu thông qua Internet Người dùng cần có tàikhoản với nhà cung cấp dịch vụ đám mây (Cloud Service Provider - CSP) dé bảomật và thanh toán chỉ phí sử dụng Các tài nguyên cần thiết được chỉ định bởi người

dùng CSP cung cấp tài nguyên dưới dạng máy ảo trực tiếp cho tài khoản người

dùng.

Dịch vụ này tạo điều kiện cho người dùng linh hoạt hơn trong việc xây dựng ứng

dụng của riêng họ trên các tài nguyên được lưu trữ từ xa VỀ cơ bản, người dùngthuê hệ điều hành, CPU, bộ nhớ, lưu trữ và tài nguyên mạng từ CSP để cải thiệntính đàn hồi và khả năng mở rộng hệ thống theo nhu cầu của người dùng

2.3.2 Opensource cloud va Enterprise cloud

Opensource cloud — Điện toán đám mây mã nguồn mở là bat kỳ dịch vụ điện toán

đám mây hoặc giải pháp mà được xây dựng sử dụng phần mềm và công nghệ mãnguồn mở Bao gồm bắt kỳ tổ chức phi lợi nhuận, nhà cung cấp dịch vụ mô hình

Trang 19

điện toán dam mây riêng hoặc hybrid, laaS, PaaS hoặc XaaS xây dựng và vận hành

hoàn toàn trên công nghệ mã nguôn mở [3]

Enterprise cloud - Điện toán đám mây doanh nghiệp cung cấp các dịch vụ đám

mây điện toán dành riêng cho các doanh nghiệp Với dịch vụ bảo mật được cập nhật

liên tục.

2.3.3 AWS

“Amazon Web Services (AWS) là nên tảng đám mây toàn diện và được sử dụngrộng rãi nhất, cung cấp trên 200 dịch vu day đủ tính năng từ các trung tâm dữ liệutrên toàn thé giới AWS là nên tang đám mây có day đủ chức năng, cộng dongkhách hàng và đối tác lớn, đồng thời có độ bảo mật cao và tốc độ đổi mới nhanh.AWS là Enterprise cloud dién hinh” [4]

AWS là nên tảng điện toán đám mây có nhiêu dịch vụ ho trợ các doanh nghiệp, cá

nhân mong muôn xây dựng hệ thông máy tính lớn, nhỏ với nhiêu mức giá và câu hình linh hoạt.

Nhờ ưu điểm như trên, AWS được xem là “con gà đẻ trứng vàng” của Amazon vìluôn dem lại nguồn thu lớn [5], chiếm thị phần lớn nhất trên thị trường điện toán

đám mây, trên cả Microsoft Azure va Google Cloud Tính tới quý 2 năm 2021, thi

phần của AWS là 32%, Microsoft Azure 19% và Google Cloud 7% [6]

Công nghệ cua AWS luôn được cập nhật va phat triển, hiện AWS có hệ thốngmáy chủ tại 81 vùng trên 25 khu vực dia lý trên khắp thế giới [4]

2.3.4 OpenStack

“OpenStack là một phân mêm mã nguồn mở giúp xây dựng quản lý và kiểm soát

hệ thống điện toán dam mây được phát triển bởi cộng đồng mạng, tắt cả các tiễn

trình quản lý và kiểm soát sử dung API với các cơ chế xác thực chung” [7]

OpenStack hỗ trợ quản lý bằng giao diện web, quản trị viên có thê kiểm soát đồng

thời cung cấp cho người dùng quyên sử dụng tài nguyên thông qua giao diện web

Trang 20

OpenStack triển khai cơ sở hạ tầng như một dịch vụ (Infrastructure-as-a-Service),

hỗ trợ triển khai cả public cloud và private cloud Theo chu kỳ 6 tháng OpenStack

sẽ ra mắt một phiên bản mới [8]

2.3.5 Azure

“Microsoft Azure là bộ dịch vụ đám mây không ngừng mở rộng nhằm giúp doanh

nghiệp vượt qua những thách thức trong kinh doanh Azure giúp xây dựng, quản lý

và triển khai các ứng dụng trên mạng rộng khắp toàn cầu” [9]

Azure là nền tảng điện toán đám mây của Microsoft, có nhiều trung tâm dữ liệu

trên khắp thé giới, cuỗi quý 2 năm 2021, thi phần của Azure là 19% [6] Hiện Azurecung cấp hơn 200 dịch vụ, được chia thành 18 loại Các danh mục này bao gồm:máy tính, mạng, lưu trữ, IoT, di chuyên, đi động, phân tích, container, trí tuệ nhântạo và machine learning, tích hợp, công cụ quan lý, công cụ nhà phát triển, bảo mật,

cơ sở dir liệu, DevOps, nhận dang media và web service [9].

Terraform sử dụng các tệp cau hình mô tả các thành phan tài nguyên xây dựng cơ

sở hạ tầng Terraform sẽ tạo ra bản kế hoạch xây dựng hệ thống, sau đó thực thitheo bản kế hoạch đó xây dựng cơ sở hạ tầng

Terraform có thé quản lý các thành phan của cơ sở hạ tang như phiên bản máytính ảo, bộ nhớ lưu trữ, hệ thông mạng và nhiều thành phần khác

Terraform sẽ lưu trạng thái cơ sở hạ tầng vào terraform.tfstate Mặc địnhterraform.tfstate được lưu ở máy tính local, tuy nhiên cũng có thể lưu

terraform.tfstate trên Terraform Cloud, HashiCorp Consul, Amazon S3, Blob

Storage, Google Cloud Storage, Alibaba Cloud OSS để chia sẻ trong nhóm thực

9

Trang 21

hiện, việc lưu terraform.tfstate trên các bộ dữ liệu chung gọi là remote state Việc

chia sẻ terraform.tfstate ở chế độ remote state mang lại nhiều lợi ích trong quá trình

làm việc nhóm [11]

Các nhà cung cấp dịch vụ lớn như AWS, OpenStack, Microsoft Azure đều xây

dựng bộ công cụ laC riêng:

e CloudFormation - AWS

e Heat - OpenStack

e AzureARM - Microsoft Azure

Tuy nhiên các công cụ trên hoạt đông giới hạn trong nền tảng của nhà cung cấp

dịch vụ tạo ra công cụ đó (trường hợp đặc biệt: template của Heat — OpenStack tương thích với CloudFormation - AWS [12]).

Điểm khác biệt và lợi thế của Terraform là khả năng tương thích với nhiều nhà

cung cấp dịch vụ điện toán đám mây Do đó, nhóm thực hiện quyết đỉnh sử dụng

Terraform trong đề tài khóa luận

2.5 Ansible

Ansible là một công cụ hỗ trợ tự động hóa các công việc cung cấp tài nguyên diện

toán đám mây, quản lý cấu hình hệ thống, triển khai ứng dụng, điều phối dịch vụ

trong hệ thống và nhiều việc khác [13]

Ansible sử dụng kiến trúc agentless - tiện dụng khi không cần cài đặt và bào tri

các agent trên các node Ansible có 2 loại server là control machine và node, control

machine quản lý các node có trong hệ thống, cũng như lưu các thông tin các node,playbook và script dùng trong triển khai ứng dụng trên các node sử dụng giao thức

Trang 22

lý vê Ruby DSL) về Puppet DSL)

Bang 1 So sanh Ansible va cac cong cu cau hinh khac

Vi uu diém dé trién khai, tim hiéu va ứng dụng nên nhóm thực hiện chon Ansible

trong khóa luận tốt nghiệp

2.6 Docker

“Docker là một ứng dụng mã nguồn mở dùng trong phát triển, vận chuyển và

chạy các ứng dụng Docker cho phép các ứng dụng hoạt động tách biệt khỏi hệ

thong hạ tang phan cứng dé phân phối ứng dụng nhanh chóng Docker có thể quản

lý cơ sở hạ tang dang sử dụng như cách quản lý các ứng dụng phan mém Tận dụng

cách hoạt động cua Docker đề vận chuyển, thử nghiệm và triển khai ứng dụng một

cách nhanh chóng, có thé hạn chế độ trễ giữa việc viết code và chạy code khi phát

triển ứng dụng” [14]

Docker khá giống virtual machine nhưng triển khai sử dụng docker container sẽgiảm nhẹ gánh nặng lên hệ thống máy chủ hơn sử dụng máy tính ảo Docker xâydựng dựa trên cơ sở các image, ta có thé sử dụng các image sẵn có tại docker hubhoặc tự xây dựng image theo nhu cầu của bản thân, tải lên docker hub chia sẻ vớicộng đồng mạng hoặc sử dụng cho dự án cá nhân

Hiện nay Docker phát triển, phổ biến nhanh chóng do các yếu tố:

e Tính dé ứng dụng

e Tốc độ cao

e Môi trường chạy và khả năng mở rộng

Việc chuyển sang microservices đang ngày càng phô biến, docker dần trở thành 1

phân quan trọng của nhiêu công cụ Devops.

11

Trang 23

2.7 Zabbix

“Zabbix la phan mềm mã nguôn mở dùng để giám sát hệ thống mang va ứng

dụng Nó là phần mêm sử dụng các tham số của một mạng, tình trạng và tính toànvẹn của Server cũng như các thiết bị mạng Zabbix tiện lợi ở việc có thể gửi thông

báo qua Telegram, Gmail, SMS, Ngoài ra Zabbix cung cấp báo cáo và dữ liệu

A

chính xác dựa trên cơ sở đữ liệu” [15].

Tất cả các số liệu thống kê hay cấu hình đều được hiển thị thông qua giao diệnweb giúp dé dang theo déi được tình trang của hệ thống và dịch vụ

Zabbix bao gồm các thành phan:

La thành phan cài đặt trên đối tượng được quan lý nhằm giám sát tài

nguyên hệ thống và dịch vụ đang hoạt động.

Ngoài ra có nhiều ứng dụng theo dõi hệ thống khác như Prometheus, Grafana.Trong thực tế cả hai thường được sử dụng chung hỗ trợ nhau Prometheus lưu trữ

dữ liệu theo mốc thời gian, lấy các metric về qua HTTP, Grafana hiển thị dữ liệucủa Prometheus trên dashboard sử dụng nhiều loại biểu đồ khác nhau

Zabbix ra đời sớm hơn Prometheus và thích hợp hơn cho các mô hình quy mô

nhỏ, Grafana thường được sử dụng nhiều trong việc thé hiện dữ liệu ở dạng biểu đồ

hơn là thu thập dữ liệu hệ thống, vì vậy nhóm thực hiện sử dụng Zabbix trong khóa

luận.

12

Trang 24

Chương 3 PHƯƠNG PHÁP THỰC HIEN

Phương pháp thực hiện sẽ giải thích sơ bộ cách hoạt động của các ứng dụng sử dụng trong khóa luận của nhóm thực hiện.

3.1 Terraform

‘Ww Terraform

© openstack 27⁄2 of

3 TT

Infrastructure as wus h fet

Hinh 3-1 Trién khai ha tang bang Terraform

3.1.1 Liên kết với nhà cung cấp dịch vụ

Dé tao cơ sở hạ tang trên AWS và OpenStack, cần cung cấp tài khoản có quyềntruy cập Ta có thể cung cấp trực tiếp trong block “provider”, nội dung trong

provider AWS va OpenStack có thé khác nhau nhưng cùng làm chung 1 nhiệm vụ:

cấp phép quyền truy cập sử dụng tài nguyên

provider "aws" {

"default"

profile

region = <AWS_region>

access key = <AWS access key>

secret_key = <AWS5 secret ke>

}

provider "openstack" {

user nam = <openstack user name>

tenant _name = <openstack tenant _name>

13

Trang 25

password = <openstack_password>

}

Trong mô hình triển khai của nhóm thực hiện, các giá trị tài khoản, mật khẩu sẽ

được lưu trong secret.tfvars, file secret.tfvars được gọi đến khi triển khai hệ thống

giúp bảo mật tài khoản của nhóm thực hiện trong quá trình lưu trữ source code trên Github.

provider "aws" {

profile = "default"

region = "ap-southeast-1"

access key = var.aws access key

secret key = var.aws secret key

}

provider "openstack" {

password = var.openstack_ password

}

Ngoài ra với AWS, có thé sử dụng AWS CLI thay thé cách cung cấp tài khoảntrực tiếp trong source code

3.1.2 Định nghĩa tài nguyên xây dựng

Sử dụng ngôn ngữ HashiCorp Language định nghĩa các tai nguyên sẽ được tạo

trên AWS và OpenStack sử dụng Terraform Tất cả được định nghĩa trước trong cáctệp tf Ở bảng dưới là một số tài nguyên sẽ sử dụng trong khóa luận

14

Trang 26

Bảng 2 Các tài nguyên sử dụng trong khóa luận

Dịch vụ Tài nguyên Mô tả

Máy tính ảo chạy trên hệ thong cùa AWS, có

aws_instance CPU, bộ nhớ dữ liệu xác định trước khi

tạo(có khả năng mở rộng nếu cần thiết)

Virtual Private Cloud của AWS, một mang

aws_vpc ;

ảo cô lập theo logic xác định.

Internet Gateway của AWS, cung cấp diém

aws_internet_gateway | truy cập ra internet từ mạng ảo Virtual

Private Cloud cho máy tính ảo

aws_ subnet Tao subnet chia mang phân bố các địa chỉ IP

Bảng định tuyến của AWS, bao gồm các rule

aws_route_table giúp xác định đường di của lưu lượng mạng

AWS ra vào

aws_route_table_asso ciation

aws_security_group

Lớp bao mật cho các máy tinh ảo, hoạt động

như một tường lửa aws_eip Tao dia chi Elastic IP

aws_lb_target_group Tao Taget Group su dung cho Load Balancer

aws_lb Load Balancer cua AWS

aws_lb_listener Listener kiêm tra kết nôi tới các máy tính ảo

aws_lb_target_øroup _attachment

Liên kêt các máy tính ảo với Load Balancer

15

Trang 27

openstack_blockstora | Quản lý tài nguyên bộ lưu trữ dữ liệu V2

ge_volume_v2 trong OpenStack

openstack_compute_v | Lién kết bộ lưu trữ dữ liệu với máy tính ảo

olume_attach_ v2 sử dụng OpenStack Compute (Nova) v2 API

Ngoài ra các tài nguyên trên, nhóm thực hiện còn sử dung một số tài nguyên khác

như "local_ file", "null_resource", ví dụ trong inventory.tf sử dụng các tài nguyên vừa nêu copy các file từ máy tính local lên máy tính ảo và chạy lệnh WordPress từ

Code webservices Cres |

ĐỀ tạo co sở ha tầng, đầu tiên tải code mã nguồn xây dựng cơ sở hạ tầng về từ thưmục Github của nhóm thực hiện sau khi tải mã nguồn về, khởi tạo thư mụcTerraform tai thư mục chứa các tập tin ƒf bang lệnh:

terraform init

Khi chạy terraform init, Terraform đọc các tệp cấu hình trong thư mục làm

việc đê xác định plugin nào cân thiết, tìm kiêm các plugin đã cài đặt ở một sô vi trí,

đôi khi tải xuống các plugin bổ sung, quyết định sử dụng phiên ban plugin nào và

16

Trang 28

ghi tệp khóa để đảm bảo Terraform sẽ sử dụng các phiên bản plugin tương tự trongthư mục này cho đến khi chạy lại terraform init.

Lệnh terraform plan tạo bản mô tả hệ thống trước khi triển khai xây dựng cơ

sở hạ tầng, liệt kê thông tin các máy tính ảo, hệ thông mạng, bộ lưu trữ dữ liệu vànhiều thông tin khác

Lệnh terraform apply thực hiện các hành động được dé xuất trong kế hoạch

xây dựng trong Terraform Plan.

Trong trường hợp mặc định, không có tệp kế hoạch được lưu, terraformapply sẽ tạo tự tạo kế hoạch (plan), sau đó xây dựng cơ sở hạ tầng

Terraform sử dụng tài khoản AWS và OpenStack được cung cấp trước đó, xâydựng hạ tầng theo câu hình đã định nghĩa trước bằng code Terraform sẽ lưu trạngthái cơ sở hạ tầng vừa tạo vào terraform.tfstate Mặc định terraform.tfstate được lưu

ở thư mục trên máy tính local, tuy nhiên cũng có thể lưu terraform.tfstate Terraform

Cloud, HashiCorp Consul, Amazon S3, Blob Storage, Google Cloud Storage,

Alibaba Cloud OSS [11] dé chia sẻ giữa các thành viên trong nhóm thực hiện,

việc lưu terraform.tfstate trên các bộ dữ liệu chung gọi là remote state Việc chia sẻ

terraform.tfstate ở chế độ remote state mang lại nhiều lợi ích trong quá trình làm

playbook (kịch bản) được giao.

Trong kịch ban của nhóm thực hiện, khi Terraform tạo cơ sở hạ tầng sé sao chép

khóa id_rsa.pub tại máy tinh local lên máy tính ảo, cho phép nhóm thực hiện truy

cập SSH đến máy tính ảo

17

Trang 29

provisioner "file" {

connection {

user = var.ssh user name

private key = file(var.ssh key file)

host =

©penstack_compute_instance_v2.zbx.network.0.fixed 1p v4

}

source = ",/key/id rsa.pub"

destination = "~/id rsa.pub"

on failure = continue

18

Trang 30

3.1.2 Triển khai ứng dụng với ansible-playbook và inventory

Trong kịch bản của nhóm thực hiện Ansible-playbook sẽ gọi đến các roles đã viếttrước dé cài đặt và triển khai WordPress trên máy tính ảo đã xây dựng trước đó

- name: Setup LEMP

Trang 31

— lemp

- firewalld

- import source

- add_ssl

Cần khai báo trong ansible.cfg đường dan tới các roles dé Ansible có thé nhận

biết được sự có mặt của các roles và có thé thuc thi:

Trang 32

Files Chứa các file được sử dung bởi role

Meta Thư mục chứa các meta data của role

3.1.2.2 Ansible Inventory Hosts

Inventory gồm danh sách các node được quản lý, ngoài ra Inventory cũng đượcgọi là Hostfile Inventory chứa thông tin cụ thể của các node(địa chỉ IP), có thé tao

va phân chia các node vào các nhóm khác nhau hỗ trợ việc quản lý hay mở rộngquy mô hệ thống [17]

Trong kịch ban của nhóm thực hiện, file hosts của Ansible được tao trước đó

trong inventory.tf sẽ khai báo các host_group dé dé dàng gọi đến các khối server

[webserver]

server-l ansible host=<IP_1> ansible user=root

ansible port=2309 ansible ssh _common_args=!-o

StrictHostKeyChecking=no'

server-2 ansible host=<IP_ 2> ansible user=root

ansible port=2309 ansible ssh_common_args='-o

StrictHostKeyChecking=no'

Có 2 node là 2 máy tinh ảo xây dung bang Terraform trên OpenStack sử dung tài

khoản root và port 2309 đề kết nối SSH triển khai ứng dụng

21

Trang 33

Hình 3-3 Triển khai ứng dung bang Docker Docker-compose

Trong Docker, mọi thứ đều dựa trên “image” “Image” là sự kết hợp của hệ thống

tệp và các tham sô.

Docker cũng cung cấp khả năng tạo image docker riêng dùng cho mục đích cá

nhân và nó có thể được thực hiện với sự trợ giúp của Dockerfile Dockerfile là mộttệp văn bản cấu hình đơn giản hỗ trợ hướng dẫn hệ thống cách tạo image theo nhucầu sử dụng

3.2.1 Tạo image từ dockerfile

Ví dụ một tệp Dockerfile đơn giản:

FROM nginx:1.18.0

RUN apt-get update -y

ADD /conf.d/demo.conf /etc/nginx/conf.d/demo.conf

EXPOSE T 80 443

Chạy lệnh “docker build” sẽ cho ra 1 image của hệ điều hành linux, đã cập nhật

hệ thống, bao gồm dich vụ nginx, copy tệp conf.d/demo.conf vào/etc/nginx/conf.d/demo.conf của image, đồng thời mở các port 80, 443

22

Trang 34

3.2.2 Chạy ứng dụng với docker-compose

Tao một tệp có tên là docker-compose.yaml với nội dung như sau:

Nội dung trên định nghĩa service nginx nginx sử dung image xây dung từ

Dockerfile trong thư mục /nginx, sau đó liên kết port 80, 443 của container với

port 80, 443 của máy tính.

23

Trang 35

Docker Compose được sử dụng dé chay nhiéu vùng chứa như một dịch vu duy

nhất Chạy tệp Docker Compose băng lệnh sau:

docker-compose up -d

Lệnh này sẽ lấy tệp “docker-compose.yml” trong thư mục hiện tai và bat đầu xâydựng các container Sau khi thực thi, tất cả các image sẽ bat đầu tải xuống va cácconfainer sẽ hoạt động ở chế chế độ tách biệt (detached mode), sau khi các

container được tao va bat dau chạy, trên màn hình sẽ in ra tên các container va

trạng thái của chúng.

Trong kịch bản của nhóm thực hiện

3.3 Gán tên miên Freenom

Có nhiều dịch vụ hỗ trợ gán tên miền như Route53 là một dịch vụ trỏ tên miềncủa AWS, tuy nhiên cần phải trả phí cho tên miền đăng ký trên AWS vì vậy nhómthực hiện chọn Freenom do Freenom là nhà cung cấp tên miền miễn phí, tên miền

có thé đăng ky sử dụng dến 12 tháng

24

Trang 36

Truy cập trang web J/fps:/www.freenom.com/ và đăng nhập.

Domain Registration Date '$ Expiry date @ Status @ Type

isphone.ga 2021-05-01 2021-08-01 Free Manage Domain #

55 FP 10 = 3 Records Found, Page 1 of

25

Trang 37

Chọn “Manage Frenom DNS” -> trỏ tên miền tới địa public IP của instance

Trong kịch bản của nhóm thực hiện, trên OpenStack cài Zabbix-agent giám sát

các thông tin chính của hệ thong máy tính ảo(như bộ lưu trữ, RAM, CPU)

26

Trang 38

Zabbix được cài trên Nginx Reverse Proxy, theo dõi hai máy tính ảo Host 1 va

Host 2.

Dé tiện lợi cho việc cài đặt Zabbix, nhóm thực hiện gom các dòng lệnh thành file

script dé tu động hóa việc triển khai bằng Terraform, script sẽ được chạy khi

Terraform sử dụng provisioner, script sẽ được copy lên máy tính ảo và chạy tự

động Nội dung script bao gồm việc cập nhật hệ thống và cài đặt Zabbix server,Mariadb server, thay đổi các biến để khởi động sau khi cài đặt Kèm theo đó sẽ càiđặt nginx để cấu hình proxy pass cho zabbix và load balancing cho các instanceđược cài đặt bằng terraform

27

Trang 39

Chương 4 TRIEN KHAI MÔ HÌNH THỰC TE

4.1 Mô hình

4.1.1 Mô hình tổng quan

Máy local: Tải source code từ Github, được cai đặt các ứng dụng cần thiết:

Ansible, Terraform Sử dụng Terraform và Ansible xây dựng hệ thống cơ sở hạ tầng

và triển khai ứng dụng mạng trên cơ sở hạ tầng đã tạo Bất kỳ máy tính nào với kếtnối internet cũng có thé trở thành máy tính local trong mô hình của nhóm thực hiện

Máy chủ Amazon Web Services: Cung cấp tài nguyên xây dựng cơ sở hạ tầng vàtriển khai ứng dụng WordPress sử dụng Docker

Máy chủ OpenStack: Cung cấp tài nguyên xây dựng cơ sở hạ tầng và triển khaiứng dụng WordPress sử dụng Ansible, triển khai Zabbix

28

Trang 40

volume zbx Load Balancer

Trên nền tang AWS, 1 VPC được tạo ra và trong đó có 2 máy tính ảo thuộc 1

subnet (public subnet), 1 load balancer target proup sẽ trỏ tới 2 máy tính ảo, mang

có thê kết nối Internet qua internet gateway

Trên OpenStack, 3 máy tính ảo nằm trong 1 security group, mỗi máy ảo đều đượcliên kết tới volume cần thiết

4.1.3 Mục tiêu

Mục tiêu dựa trên sơ đồ triển khai cơ bản:

e Tai máy tinh local sử dụng Terraform tao cơ sở hạ tầng theo code đã viết

trước cho cả 2 môi trường OpenStack và AWS.

e Trên AWS, máy tính ảo (instance) tạo ra bằng Terraform triển khai ứng

dung Wordpress tự sử dụng Docker và Terraform.

e Trên OpenStack, máy tính ảo (instance) tao ra bằng Terraform triển khai

ứng dụng Wordpress sử dụng Ansible và Terraform.

29

Ngày đăng: 02/10/2024, 04:56

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN