TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
..
LUẬN VĂN THẠC SĨ
Nghiên cứu và phát triển môi trường thực
hành công nghệ thông tin trên nền tảng
Docker
BÙI QUANG LÂM
Ngành Công nghệ thông tin
Giảng viên hướng dẫn:
TS. Trịnh Tuấn Đạt
Viện:
Công nghệ thông tin – Truyền thông
HÀ NỘI, 06/2020
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ
Nghiên cứu và phát triển môi trường thực
hành công nghệ thông tin trên nền tảng
Docker
BÙI QUANG LÂM
Ngành Công nghệ thông tin
Giảng viên hướng dẫn:
TS. Trịnh Tuấn Đạt
Viện:
Công nghệ thông tin – Truyền thông
HÀ NỘI, 06/2020
Chữ ký GVHD
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn : Bùi Quang Lâm
Đề tài luận văn: Nghiên cứu và phát triển môi trường thực hành CNTT trên nền
tảng Docker
Chuyên ngành: Công nghệ thông tin
Mã số SV: CB180199
Tác giả, Người hướng dẫn khoa học và Hội đồng chấm luận văn xác nhận tác giả đã sửa
chữa, bổ sung luận văn theo biên bản họp Hội đồng ngày 27/6/2020 với các nội dung sau:
I.
Chỉnh sửa phần cấu trúc luận văn
Viết lại bài toán đặt ra và cách giải quyết. Xác định rõ trong luận văn sử dụng công nghệ
Docker, chỉ ra những vấn đề Docker đã và chưa giải quyết được so với các cơng nghệ
khác. Từ đó nghiên cứu áp dụng để phát triển môi trường dựa trên công nghệ Docker, đề
xuất cách thức hoạt động mới của hệ thống sử dụng Docker, đánh giá chức năng, hiệu
suất để làm rõ điều đó. Cụ thể như sau:
•
Phát biểu lại bài tốn đặt ra trong LVTN (Chương 1)
•
Làm rõ bài tốn và quy trình thực thi hệ thống Docker, tại sao khơng áp dụng và
lý do đưa ra đề xuất mới (Phần 3.2.3 Kiến trúc và quy trình thực thi một hệ thống
Docker - Trang 26).
•
Trình bày trường hợp hai hoặc nhiều sinh viên cùng thực hành trên một container
(Phần 4.2.4 Practice computer - Trang 42).
•
Phân tích rõ đóng góp luận văn so với các giải pháp hiện nay (Phần 4.5.1 Đánh
giá chức năng hệ thống - Trang 48).
•
Trình bày cách thức và mục đích việc tính tốn hiệu suất hệ thống (Phần 4.5.2
Đánh giá hiệu suất hệ thống - Trang 48).
•
Vẽ lại biểu đồ use case thể hiện kết nối giữa các tác nhân tham gia hệ thống (Phần
2.2.2 Quy trình nghiệp vụ - Trang 11).
•
Viết chi tiết phần kết luận (Phần 5.1 Kết luận và hướng phát triển - Trang 54).
II. Chỉnh sửa cách trình bày luận văn
Thêm trích dẫn hình ảnh sử dụng và tham chiếu. Sắp xếp lại bố cục luận văn theo chuẩn
template Mau1_QTBaove của phòng đào tạo.
•
Tách lời cảm ơn và tóm tắt luận văn thành các trang khác nhau
•
Bổ sung thêm tài liệu tham khảo và trích dẫn TLTK trong nội dung luận văn để
đảm bảo hình thức một luận văn thạc sĩ.
Ngày 30 tháng 06 năm 2020
Giáo viên hướng dẫn
Tác giả luận văn
CHỦ TỊCH HỘI ĐỒNG
Lời cảm ơn
Để có thể hồn thành đề tài luận văn thạc sĩ một cách hoàn chỉnh và trọn vẹn, ngoài
sự phấn đấu nỗ lực của bản thân, là sự giảng dạy, hướng dẫn nhiệt tình của các Thầy Cơ,
cộng với ủng hộ của gia đình và bạn bè trong suốt thời gian học tập nghiên cứu và thực
hiện luận văn. Xin chân thành bày tỏ lòng cảm ơn đến Thầy TS. Trịnh Tuấn Đạt, người
đã hết lòng giúp đỡ, hướng dẫn tôi một cách chi tiết và cẩn thận nhất để có thể hồn thành
luận văn này. Xin chân thành cảm ơn tồn thể q thầy cơ trong Viện Công Nghệ Thông
Tin và Truyền Thông - Trường Đại Học Bách Khoa Hà Nội trong suốt gần 2 năm học
vừa qua đã truyền đạt những kiến thức quý báu, kinh nghiệm thực tế cũng như tạo mọi
điều kiện thuận lợi để tơi và các học viên có thể hồn thành tốt chương trình học của
mình.
Lời sau cùng, tơi xin chân thành cảm ơn gia đình, anh chị và các bạn đồng nghiệp,
đặc biệt là Kỹ sư Nguyễn Mạnh Hùng - Trung tâm Nghiên cứu và Phát Triển ĐTDĐ
Samsung Việt Nam đã hỗ trợ tơi rất nhiều trong suốt q trình học tập, nghiên cứu và
thực hiện đề tài luận văn thạc sĩ một cách hồn chỉnh.
Tóm tắt nội dung luận văn
Môi trường thực hành là một vấn đề luôn tồn tại suốt thời gian học và làm việc của những
sinh viên chuyên ngành công nghệ thông tin. Hiện nay việc cài đặt các môi trường trên
PC hay laptop cho sinh viên đang gặp nhiều vấn đề đặc biệt là việc đáp ứng hiệu năng
của thiết bị với các môi trường thực hành, việc cài đặt nhiều chương trình sẽ làm cho thiết
bị chạy chậm chạm và nặng nề, quá trình cài đặt có thể xảy ra sai sót hay phức tạp. Để
các môi trường đồng bộ, tất cả các máy tính có thể sử dụng chung một bản ghost nhưng
lại gây nhiều trở ngại trong việc nâng cấp. Vì vậy ảo hóa các mơi trường thực hành sẽ
giúp cho người tạo môi trường cũng như những sinh viên - người sử dụng môi trường sẽ
dễ dàng thực hành các bài tập trong q trình học. Với việc cơng nghệ ảo hóa ngày càng
phát triển mạnh mẽ và nở rộ trong giai đoạn hiện nay, việc cài đặt, sử dụng, khai tác các
tài ngun sẽ khơng cịn khó khăn mà vẫn đảm bảo được tính bảo mật cũng như tiết kiệm
được tài nguyên một cách tối ưu nhất.
Với việc chọn đề tài luận văn tốt nghiệp “Nghiên cứu và phát triển môi trường thực hành
công nghệ thông tin trên nền tảng Docker” tôi mong muốn sẽ giúp cho sinh viên chuyên
ngành cơng nghệ thơng tin có một mơi trường thực hành lập trình đơn giản, nhanh chóng
và tiết kiệm được chi phí đầu tư thiết bị tin học nhưng vẫn đáp ứng được tất cả các nhu
cầu đặt ra đối với một mơi trường thực hành lập trình.
HỌC VIÊN
Ký và ghi rõ họ tên
MỤC LỤC
MỤC LỤC ............................................................................................................. 1
DANH MỤC HÌNH VẼ ....................................................................................... 3
THUẬT NGỮ VÀ TỪ VIẾT TẮT ...................................................................... 5
Chương 1 Giới thiệu đề tài .................................................................................. 7
Đặt vấn đề ...................................................................................................................7
Đối tượng và phạm vi nghiên cứu ..............................................................................8
Định hướng giải pháp ...............................................................................................10
Bố cục luận văn.........................................................................................................10
Chương 2 Khảo sát và phân tích yêu cầu ........................................................ 12
Khảo sát hiện trạng ...................................................................................................12
Khảo sát tình hình thực hành của sinh viên .................................................. 12
Khảo sát các giải pháp ảo hóa mơi trường thực hành .................................. 14
Tổng quan chức năng và quy trình nghiệp vụ...........................................................16
Tổng quan chức năng ................................................................................... 16
Quy trình nghiệp vụ ...................................................................................... 16
Chương 3 Cơng nghệ ảo hóa ............................................................................. 18
Tổng quan về ảo hóa và phần mềm tự do nguồn mở ................................................18
Cơng nghệ ảo hóa ......................................................................................... 18
Phân loại cơng nghệ ảo hóa .......................................................................... 19
Ưu điểm, nhược điểm sử dụng cơng nghệ ảo hóa ........................................ 23
Phần mềm tự do nguồn mở .......................................................................... 24
Cơng nghệ ảo hóa Docker (Container Engine) .........................................................25
Khái niệm containerization .......................................................................... 25
Docker .......................................................................................................... 27
Kiến trúc và quy trình thực thi một hệ thống sử dụng Docker ..................... 29
DockerImages và Dockerfile ........................................................................ 31
Docker compose ........................................................................................... 32
Kubernetes ................................................................................................................33
Khái niệm ..................................................................................................... 33
Kubernetes quản lý các container như thế nào ............................................. 34
Mơ hình và hoạt động của kubernetes .......................................................... 35
Rancher .....................................................................................................................37
Chương 4 Nghiên cứu và phát triển môi trường thực hành Cơng nghệ thơng
tin ......................................................................................................................... 39
Mơ hình ảo hóa tổng qt .........................................................................................39
Lựa chọn cơng nghệ ảo hóa .......................................................................... 39
Cơng nghệ đề xuất ........................................................................................ 40
1
Tính khả thi giải pháp ...................................................................................40
Mơ hình ảo hóa tổng qt .............................................................................41
Mơ hình triển khai .................................................................................................... 42
Mơ hình triển khai.........................................................................................42
Master Server ................................................................................................43
Worker Server ...............................................................................................45
Practice Computer.........................................................................................46
Cơ chế lưu trữ code và project của hệ thống ................................................47
Cài đặt thử nghiệm ................................................................................................... 48
Cài đặt Docker ..............................................................................................48
Cài đặt Kubernetes – Rancher ......................................................................48
Tạo môi trường container .............................................................................49
Kết quả đạt được ...................................................................................................... 50
Giao diện quản lý môi trường thực hành ......................................................50
Giao diện môi trường thực hành ...................................................................52
Đánh giá ................................................................................................................... 52
Đánh giá chức năng hệ thống........................................................................52
Đánh giá hiệu suất hệ thống ..........................................................................53
Chương 5 Kết luận và hướng phát triển .......................................................... 57
Kết luận .................................................................................................................... 57
Hướng phát triển ...................................................................................................... 58
TÀI LIỆU THAM KHẢO ................................................................................. 59
PHỤ LỤC ............................................................................................................ 60
2
DANH MỤC HÌNH VẼ
Hình 2.1 Sinh viên thực hành phịng lab Đại học Bách Khoa ....................................... 12
Hình 2.2 Phịng thực hành tại Trung tâm R&D Samsung.............................................. 13
Hình 2.3 Giao diện một trang web lập trình online........................................................ 14
Hình 2.4 Giá dịch vụ Cloud9 của AWS ......................................................................... 16
Hình 3.1 Ảo hóa là cơng nghệ giữa phần cứng và phần mềm máy tính ........................ 18
Hình 3.2 Containerization – cơng nghệ ảo hóa thời đại 4.0 ........................................... 21
Hình 3.3 Ứng dụng cơng nghệ ảo hóa............................................................................ 23
Hình 3.4 Cơng nghệ ảo hóa và Containers ..................................................................... 26
Hình 3.5 Container phân tách các ứng dụng trong cùng hệ điều hành .......................... 26
Hình 3.6 Các khái niệm liên quan đến Docker .............................................................. 29
Hình 3.7 Quy trình thực thi hệ thống sử dụng Docker ................................................... 30
Hình 3.8 Quy trình tạo Container từ Dockerfile ............................................................ 31
Hình 3.9 Ví dụ Dockerfile cơ bản .................................................................................. 31
Hình 3.10 Docker compose tạo file cấu hình YAML định nghĩa và chạy container ..... 33
Hình 3.11 Kubernetes như một orchestraion của Container .......................................... 34
Hình 3.12 Mơ hình hoạt động Kubernetes ..................................................................... 36
Hình 3.13 Rancher UI .................................................................................................... 37
Hình 3.14 Các thành phần Rancher................................................................................ 38
Hình 4.1 Mơ hình ảo q tổng qt................................................................................ 41
Hình 4.2 Mơ hình triển khai ........................................................................................... 42
Hình 4.3 Kiến trúc đề xuất áp dụng cơng nghệ Kubernetes trên Master Server ............ 44
Hình 4.4 Kiến trúc đề xuất trên Worker Server ............................................................. 46
Hình 4.5 Dockerfile chứa mơi trường thực hành Cloud9 IDE ....................................... 47
Hình 4.6 Sử dụng HĐH Ubuntu sẽ giúp tối ưu hoạt động các máy chủ ........................ 48
Hình 4.7 Command chạy trên Worker Server để đăng ký với Master Server ............... 49
3
Hình 4.8 Triển khai container trên Worker Server từ Rancher UI .................................50
Hình 4.9 Giao diện Rancher sau khi cài đặt thành cơng trên Master Server ..................50
Hình 4.10 Master Server cung cấp command để đăng ký Worker Server .....................51
Hình 4.11 Giao diện quản lý các container trên 1 Worker Server..................................51
Hình 4.12 Giao diện lập trình từ container chứa mã nguồn mở Cloud9 IDE .................52
Hình 4.13 Hiệu suất của Master Server trên Rancher UI ...............................................54
Hình 4.14 Hiệu suất của Worker Server 3 chạy 30 container chứa môi trường thực hành
Docker và NGINX ..........................................................................................................55
Hình 4.15 Biểu đồ thay đổi hiệu suất Master và Worker Server3 ..................................56
4
THUẬT NGỮ VÀ TỪ VIẾT TẮT
CNTT
Công nghệ thông tin
PC
Personal Computer
Máy tính cá nhân
UI
User Interface
Giao diện người dùng
LVTN
Luận văn tốt nghiệp
Browser
Trình duyệt
CSDL
Cơ sở dữ liệu
CPU
Central Processing Unit
Bộ xử lý trung tâm
Enviroment
Môi trường thực hành
Server
Máy chủ
Image
Bản sao của một môi trường phát triển
Ghost
Tệp (file) ghost là tệp nén tất cả thông tin của một ổ
đĩa trên máy tính lại thành một file duy nhất. Tệp ghost
này thường được dùng trong sao lưu và phục hồi ổ đĩa
dữ liệu và ổ đĩa cài đặt hệ điều hành.
RAM
Random Access Memory
Bộ nhớ truy cập ngẫu nhiên
Lab
Laboratory
5
Phòng nghiên cứu
Port
Cổng lắng nghe giao tiếp trong giao thức mạng
TCIP/IP
Docker file
Dockerfile là một file dạng text, giúp thiết lập cấu trúc
cho docker image nhờ chứa một tập hợp các câu lệnh
trong cơng nghệ ảo hóa Docker
Docker image
Docker image là một ảnh của môi trường phát triển
chứa các cài đặt môi trường (hệ điều hành, thư viện,
ứng dụng đã viết , …) được xây dựng từ Docker file
Container
Một máy ảo độc lập và tách biệt để khởi chạy và phát
triển ứng dụng. Sử dụng chung nhân với hệ điều hành
máy chủ.
Virtualization
Cơng nghệ ảo hóa dựa trên việc phân chia tài ngun
phần cứng máy tính
Containerization
Cơng nghệ ảo hóa phát triển sau Virtualization. Dựa
trên việc đóng gói các ứng dụng thành các container.
6
Chương 1 Giới thiệu đề tài
Đặt vấn đề
Hiện nay việc thực hành lập trình của các sinh viên ngành cơng nghệ thông tin
thường được thực hiện trên laptop, PC, hoặc các thiết bị cá nhân. Do việc cấu hình
và cài đặt mơi trường khác nhau, nên việc lập trình và xây dựng các dự án (project)
CNTT diễn ra không đồng bộ, khiến việc thực hành gặp phải nhiều khó khăn. Q
trình cài đặt trải qua nhiều cơng đoạn mất thời gian. Sau khi cài đặt xong, môi
trường thực hành cũng cần phải được kiểm tra trước khi cho sinh viên sử dụng.
Nguyên nhân là khi cài đặt môi trường lên máy tính thực hành, nếu khơng cẩn thận
có thể thiếu thư viện, thiếu các thành phần yêu cầu của môi trường sẽ gây nên sai
sót khi thực hành.
Việc sử dụng máy tính ở các phịng thực hành tại trường học hay máy tính cá nhân
khi ở nhà cũng khiến chi phí bỏ ra của các trường học và của mỗi sinh viên cao
hơn. Máy tính cấu hình tốt nếu chỉ phục vụ cho một người sẽ gây lãng phí, do
khơng tận dụng được hết tài nguyên máy.
Vấn đề bảo mật cũng tiềm ẩn nhiều rủi ro và nguy cơ. Trong q trình thực hành
sinh viên có thể thao tác, nghịch ngợm với các mơi trường ngồi. Nếu sinh viên
truy cập vào những địa chỉ khơng rõ nguồn gốc có mã độc sẽ gây ảnh hưởng đến
môi trường thực hành và thiết bị. Đối với môi trường thực hành trong nhà trường
hay các phịng nghiên cứu, trong q trình học tập sinh viên có thể cấu hình lại các
mơi trường thực hành đã cài đặt sẵn, dẫn đến làm hỏng môi trường, gây ảnh hưởng
đến những sinh viên thực hành sau đó. Để khắc phục, người bảo trì phịng thực
hành (lab) phải dành nhiều công sức và thời gian để cài đặt lại mơi trường.
Hiện tại có một số giải pháp có thể khắc phục vấn đề trên như sử dụng các bản
ghost 1 để cài đặt và đồng bộ các môi trường hàng loạt, hoặc thực hành trên các
môi trường trang mạng trực tuyến. Tuy nhiên những giải pháp này vẫn cịn nhiều
hạn chế. Ví dụ, khi sử dụng bản ghost để cài đặt các môi trường một cách đồng bộ,
ta vẫn chưa thể chia sẻ nguồn tài nguyên của một máy tính cho nhiều người. Việc
nâng cấp các mơi trường trong bản ghost đó cũng phức tạp và phải thực hiện lần
lượt. Bản ghost có thể khơng tương thích với các máy tính có những cấu hình khác
1
Tệp (file) ghost là tệp nén tất cả thông tin của một ổ đĩa trên máy tính lại thành một file duy nhất. Tệp ghost này
thường được dùng trong sao lưu và phục hồi ổ đĩa dữ liệu hoặc ổ đĩa cài đặt hệ điều hành
7
nhau. Trong khi đó, việc sử dụng các mơi trường được cung cấp bởi các trang
mạng trực tuyến có thể giải quyết được vấn đề khi máy tính thiếu tài nguyên, nhưng
người sử dụng sẽ phụ thuộc vào các môi trường được cung cấp sẵn mà không thể
đưa ra tùy chọn cài đặt cá nhân. Việc sử dụng các mạng trực tuyến cung cấp mơi
trường có sẵn chỉ hợp lý với các bài tốn mang tính cá nhân, nhỏ lẻ và khơng đảm
bảo về tính bảo mật, an tồn dữ liệu.
Hiện nay, một số giải pháp thương mại đã được cung cấp như trình biên dịch mã
nguồn Cloud9 2 của Amazon hay giải pháp điện tốn tích hợp tồn diện để phát
triển ứng dụng của Microsoft là Azure 3. Cloud9 cung cấp cho người sử dụng một
IDE lập trình trên nền tảng đám mây, chạy trên máy chủ của Amazon cung cấp.
Với quy mơ máy chủ lớn, Cloud9 có ưu điểm về tốc độ xử lý cực cao, cung cấp
nhiều công cụ hỗ trợ việc phát triển ứng dụng. Tuy nhiên, người dùng sẽ phải trả
phí theo thời lượng sử dụng hoặc trả phí theo gói. Việc thực hành của sinh viên
CNTT nếu sử dụng nền tảng Cloud9 gây lãng phí về chi phí và tài ngun mơi
trường. Dịch vụ Azure của Microsoft thường được các lập trình viên trong các
doanh nghiệp lựa chọn để phát triển ứng dụng thông minh. Từ nhận dạng hình ảnh
đến dịch vụ, Azure và trí thơng minh nhân tạo của Microsoft tạo ra những trải
nghiệm mới có quy mơ, hỗ trợ cơng nghệ Deep Learning 4 và phân tích thời gian
thực trên bất kỳ hình dạng và kích thước dữ liệu nào. Cũng giống như Cloud9 của
Amazon, Azure chỉ phù hợp với việc phát triển ứng dụng và công nghệ thuộc các
công ty công nghệ để triển khai sản phẩm và dịch vụ của họ. Việc sử dụng dịch vụ
Cloud9 hay Azure trong thực hành cho sinh viên CNTT đều gây lãng phí chi phí
và tài nguyên.
Đối tượng và phạm vi nghiên cứu
Trước thực trạng trên, luận văn này tập trung nghiên cứu giải pháp xây dựng môi
trường thực hành cho sinh viên CNTT với các vấn đề cần giải quyết như sau: (1)
Hệ thống cung cấp đầy đủ các loại môi trường thực hành CNTT, đảm bảo đầy đủ
các chức năng hỗ trợ cho việc học tập và nghiên cứu. (2) Hệ thống có tính năng
mở rộng theo u cầu, khi cần thiết có thể phục vụ được đồng thời hàng nghìn sinh
2
/>
3
/>
4
Deep Learning là định nghĩa thuộc về một phần các thuật toán trong Machine Learning (máy học) với đặc thù mang
độ phức tạp cao hơn. eep Learning bao gồm nhiều lớp ẩn trong một mạng lưới thần kinh và thuộc lớp sau cùng. Việc
đi qua nhiều số lượng lớp và mạng phức tạp được cho là độ sâu.
8
viên cùng thực hành. (3) Giải pháp phải tận dụng được hiệu quả nguồn tài nguyên
máy tính để giảm chi phí đầu tư, tránh tình trạng máy có cấu hình cao chỉ phục vụ
được một sinh viên tại một thời điểm. (4) Mơi trường thực hành có thể dễ dàng
được cấu hình, thêm bớt thư viên hoặc có thể được cài đặt lại về mặc định một
cách nhanh chóng. (5) Xây dựng một quy trình chuẩn trong việc thêm mơi trường
thực hành mới vào hệ thống, bao gồm các bước: xác định yêu cầu của môi trường,
lựa chọn phiên bản, cài đặt thử nghiệm, đánh giá chức năng và hiệu suất, đóng gói
bản cài đặt, triển khai mơi trường.
Xây dựng mơi trường thực hành trên cơng nghệ ảo hóa sẽ khắc phục được những
hạn chế so với việc cài đặt thủ công môi trường trên từng thiết bị. Với công nghệ
ảo hóa ta chỉ cần cài đặt trên một máy chủ duy nhất rồi phần chia môi trường thực
hành đến các máy tính khác. Việc phát triển mơi trường thực hành trên một máy
chủ sẽ giúp người quản lý hệ thống dành thời gian tập trung phát triển môi trường,
đảm bảo các tính năng cần thiết và dễ dàng nâng cấp cũng như tiện lợi khi sử dụng.
Việc dựa vào những lợi ích mà cơng nghệ ảo hóa mang lại, việc thực hành của sinh
viên được thực hiện dễ dàng, thuận lợi nhưng vẫn tiết kiệm chi phí.
Cơng nghệ ảo hóa được chia làm nhiều loại, trong đó nổi bật là hai công nghệ
Virtualization và Containerization. Virtualization là công nghệ ảo hóa phổ biến
nhất hiện nay, là cơng nghệ chia các máy chủ vật lý thành nhiều máy chủ đơn lẻ,
có đầy đủ thành phần, cấu trúc như một máy chủ thật. Virtualization giúp cho một
máy chủ có thể đảm bảo được nhiều chức năng cũng như nhiệm vụ khác nhau khi
thực hiện công việc. Containerization là công nghệ ảo hóa mới, thường được sử
dụng nhiều tại các doanh nghiệp CNTT để triển khai dịch vụ trên nền tảng ảo hóa.
Với cơng nghệ containerization các ứng dụng sẽ được đóng gói thành các
container. Các container này sử dụng chung nhân hệ điều hành với máy chủ chính
nên giúp tối ưu thời gian khởi động ứng dụng so với công nghệ Virtualization.
Ngồi ra cơng nghệ containerization cịn có nhiều ưu điểm trong q trình làm việc
nhóm, giúp cho các cấu hình phần mềm được triển khai thống nhất và đồng bộ.
Docker là một cơng cụ giám sát, quản lý ảo hóa trên nền tảng Containerization.
Với Docker, người sử dụng có thể triển khai các container một cách đơn giản và
nhanh chóng. Docker cũng cung cấp những tính năng để thực thi, giám sát và quản
lý các container một cách thuận tiện so với việc triển khai container một cách thủ
công. Việc áp dụng công nghệ Docker trong việc xây dựng môi trường thực hành
cho sinh viên CNTT là hướng tiếp cập khá mới mẻ và có lẫn nhiều ưu, nhược điểm
so với các giải pháp công nghệ khác. Luận văn này tập trung nghiên cứu cơng nghệ
Containerization nói chung và cơng cụ ảo hóa Docker nói riêng, đồng thời so sánh
9
Docker và các cơng nghệ ảo hóa Containerization khác. Từ đó, xây dựng mơ hình
thiết kế và triển khai cho hệ thống thực hành công nghệ thông tin dựa trên nền tảng
Docker cho sinh viên ngành CNTT tại các trường đại học, cao đẳng.
Định hướng giải pháp
Luận văn này trước tiên tìm hiểu các cơng nghệ và mơ hình ảo hóa để phân tích và
so sánh ưu nhược điểm của các công nghệ này. Sự phù hợp của công nghệ Docker
với bài toán đặt ra sẽ được làm rõ, qua đó giải thích cho việc lựa chọn đối tượng
và phạm vi nghiên cứu trong đề tài này.
Luận văn đề xuất mơ hình và kiến trúc cho hệ thống thực hành CNTT trên nền
tảng Docker, cùng với sự hỗ trợ của một số cơng cụ hỗ trợ quản lý ảo hóa như
Kubernetes, Rancher, … đảm bảo tạo lập được các môi trường thực hành CNTT
một cách đơn giản và thuận tiện, góp phần giảm chi phí đầu tư phịng thực hành
cho sinh viên và nâng cao chất lượng học tập. Mô hình kiến trúc sẽ được thực
nghiệm để đánh giá chức năng và hiệu suất hoạt động. Những vấn đề mô hình đề
xuất đã giải quyết được và chưa giải quyết được so với các giải pháp đang có hiện
nay sẽ được làm rõ. Các chức năng và yêu cầu cơ bản cần đáp ứng được bao gồm
cung cấp môi trường thực hành cho sinh viên, lưu trữ, chia sẻ việc lập trình, và tối
ưu được tài nguyên hệ thống.
Cuối cùng, luận văn sẽ nghiên cứu và đề xuất một hệ thống tiêu chuẩn hỗ trợ đơn
giản hóa việc thiết lập và sử dụng môi trường thực hành cho sinh viên nhắm giải
quyết các vấn đề đã nêu.
Bố cục luận văn
Phần còn lại của báo cáo luận văn tốt nghiệp này được trình bày như sau:
Chương 2 trình bày việc khảo sát và phân tích yêu cầu về thực tế triển khai môi
trường thực hành cho sinh viên CNTT. Chương này nêu rõ những hiện trạng về
việc thực hành của sinh viên hiện nay, bao gồm mô tả về các giải pháp đang được
sử dụng và phân tích các yêu cầu đặt ra khi tạo môi trường thực hành cho sinh
viên. Chương này đồng thời so sánh các giải pháp thông thường và các giải pháp
dựa trên cơng nghệ ảo hóa.
Trong Chương 3, tơi giới thiệu về các cơng nghệ chính được sử dụng khi xây dựng
một hệ thống thực hành cho sinh viên dựa trên nền tảng Docker. Chương này trình
bày so sánh các loại ảo hóa và lí do lựa chọn Docker làm giải pháp thực hiện, các
10
thành phần chính, kiến trúc của Docker và việc sử dụng hai công cụ là Kubenetes
và Rancer để quản lý Docker.
Trong Chương 4, tơi trình bày về đóng góp chính của đồ án, đó là đề xuất một hệ
thống tiêu chuẩn hỗ trợ đơn giản hóa việc thiết lập và sử dụng môi trường thực
hành cho sinh viên dựa trên nền tảng Docker. Hệ thống này kết hợp quản lý docker
container dựa trên hai công cụ hỗ trợ quản lý ảo hóa được sử dụng nhiều hiện nay
là kubernetes và Rancher. Chương này cũng trình bày tầm quan trọng của việc xây
dựng một file chứa các câu lệnh cài đặt mơi trường khi có một u cầu về mơi
trường thực hành cho sinh viên và việc chia cổng lắng nghe cho các container để
quản lý dựa trên giao diện mà cơng cụ Rancher cung cấp. Chương 4 cũng trình
bày đánh giá hệ thống đã đề xuất và cài đặt thử nghiệm dựa trên chức năng nhiệm
vụ cũng như hiệu suất.
Trong Chương 5, trình bày về kết luận và hướng phát triển. So sánh ưu nhược điểm
về hệ thống của mình so với những hệ thống sẵn có, những gì đã làm được và chưa
làm được. Chương này cũng trình bày về hướng nghiên cứu tiếp theo để mở rộng
và phát triển luận văn theo các hướng khác và nâng cấp các chức năng, nhiệm vụ
đã làm.
11
Chương 2 Khảo sát và phân tích yêu cầu
Trong Chương 2 này, tơi trước tiên sẽ trình bày các giải pháp hiện nay để triển
khai môi trường thực hành công nghệ thông tin tại các trường học cũng như các
doanh nghiệp. Tiếp đến là phần trình bày tổng quan chức năng và quy trình nghiệp
vụ cần thiết để triển khai môi trường thực hành như vậy.
Khảo sát hiện trạng
Khảo sát tình hình thực hành của sinh viên
Hiện tại các trường Đại học và cao đẳng, sinh viên ngành công nghệ thơng tin thực
hành lập trình dựa trên máy tính cá nhân hoặc máy tính của trường học – nơi đã
được cài đặt sẵn các công cụ, môi trường để lập trình.
Các sinh viên có thể chia sẻ các mơi trường thực hành, hoặc các dịng lệnh lập
trình với nhau bằng việc copy qua usb hoặc phần mềm chat trực tuyến. Trong
trường học việc cài đặt sẽ được đồng bộ trên tất cả các máy tính bằng một bản cài
đặt chung để đảm bảo tính thống nhất. Việc sử dụng mơi trường dựa trên cơng
nghệ điện tốn đám mây gần như khơng có hoặc xuất hiện rất ít.
Hình 2.1 Sinh viên thực hành phịng lab Đại học Bách Khoa
Ví dụ như một phịng thực hành của Viện Cơng nghệ thơng tin và truyền thông –
Trường Đại Học Bách Khoa Hà Nội (Hình 2.1) được đặt khoảng từ 25 – 40 máy
tính để bàn (PC). Các máy tính này được cài đặt trên hệ điều hành Window 7 và
12
được cài đặt một số IDE 5 hỗ trợ cho việc lập trình của sinh viên như : Microsoft
Visual Sudio C++, Dev C++, Eclipse, Android Studio, …
Việc cài đặt các mơi trường cho một phịng thực hành như thế này bước đầu khá
đơn giản. Với việc đầu tư các máy tính có cùng cấu hình, cùng mạng, ta chỉ cần
cài đặt các môi trường phù hợp đã chọn trước trên một máy tính. Sau đó tạo một
bản ghost window hoặc một bản đóng gói cài đặt và cài đặt đến tất cả các máy tính
cịn lại. Tuy nhiên trong q trình học tập sẽ xảy ra vấn đề. Vào mỗi giờ học số
lượng sinh viên và sinh viên sẽ khác nhau, việc sinh viên chỉnh sửa các môi trường
đã được thiết lập từ trước là điều không thể tránh khỏi tùy theo yêu cầu của các bài
tập, đặc biệt sau khi thực hành. Khơng có nhiều sinh viên sẽ cài đặt lại các thiết
lập như lúc ban đầu, điều đó có thể làm hỏng mơi trường thực hành.
Qua nhiều khóa sinh viên thực hành, các máy tính được nhà trường đầu tư sẽ hỏng
hóc về phần cứng và đặc biệt là đầu cắm dây mạng gây gán đoạn trong quá trình
học tập.
Hình 2.2 Phịng thực hành tại Trung tâm R&D Samsung
Một ví dụ khác về mơi trường thực hành tại Trung tâm nghiên cứu và phát triển
ĐTDĐ Samsung Việt Nam (Hình 2.2). Các nhân viên hay sinh viên thực tập tại
đây được cấp máy tính xách tay (laptop) để làm việc. Các laptop được đầu tư cấu
hình rất cao (Ví dụ: CPU core i7, ram 16gb, ổ cứng ssd 512GB, card đồ họa graphic
AMD 2GB, …). Các máy tính này sử dụng mạng khơng dây hoặc có dây nên đáp
ứng rất tốt các tiêu chí về mơi trường thực hành, mơi trường lập trình. Tuy nhiên
do thường xun phải làm việc nhóm, trao đổi các bài thuyết trình, hội họp, …
5
IDE (Integrated Development Environment): là mơi trường tích hợp dùng để viết code để phát triển ứng dụng
13
việc di chuyển các thiết bị cá nhân để trình bày cơng việc của mình diễn ra một
cách cồng kềnh, chưa tối ưu. Chi phí đầu tư thiết bị ban đầu lớn gây nên lãng phí,
có nhiều máy tính chỉ sử dụng để phục vụ một công việc duy nhất nên không tận
dụng được hết tài nguyên thiết bị.
Khảo sát các giải pháp ảo hóa mơi trường thực hành
Ngồi việc thực hành trên các máy tính ở trường học cung cấp hoặc trên các máy
tính, thiết bị cá nhân được cài đặt sẵn, hiện nay sinh viên có thể thực hành trên rất
nhiều các mơi trường ảo hóa trên mạng như các trang mạng trực tuyến cung cấp
môi trường thực hành các ngơn ngữ. Có thể kế đến các trang mạng trực tuyến được
nhiều người sử dụng như:
• />• />•
Hình 2.3 Giao diện một trang web lập trình online
Các trang mạng trực tuyến này cung cấp giao diện cho người thực hành có thể lập
trình online (Hình 2.3), chạy mọi lúc mọi nơi, thậm chí khơng chỉ trên máy tính
mà cả trên các thiết bị di động cầm tay có sẵn kết nối mạng internet. Ưu điểm của
việc sử dụng các mơi trường thực hành này là chi phí đầu tư thấp, có sẵn sàng mơi
trường để lựa chọn, ta có thể lập trình bất cứ ngơn ngữ nào thơng qua các trang
trực tuyến này (từ lập trình, biên dịch compile 6, quản lý dự án, …). Tuy nhiên, việc
6
Compile là chương trình dịch chuỗi các câu lệnh được viết bởi một ngơn ngữ lập trình thành ngơn ngữ
máy tính có thể hiểu được
14
thực hành trên các website trực tuyến này tiềm ẩn nhiều rủi ro và hạn chế. Trong
quá trình thực hành người dùng có thể bị gián đoạn bởi những quảng cáo và không
thể can thiệp hay tắt những quảng cáo đó. Việc cung cấp các mơi trường này hồn
tồn quyết định bởi nhà sản xuất, người thực hành không thể tùy ý chỉnh sửa các
thiết lập môi trường và không được chọn phiên bản môi trường để sử dụng. Vấn
đề an tồn thơng tin cũng rất đáng lo ngại, người sử dụng phải cung cấp các thông
tin cá nhân để có thể sử dụng, các website này thường có máy chủ đặt tại nước
ngoài nên khi xảy ra vấn đề pháp lý, người thực hành có thể hồn tồn chịu trách
nhiệm nếu không chú ý đến các quy định khi bắt đầu sử dụng chúng. Việc lưu trữ,
chia sẻ các dự án cũng sẽ khó khăn vì đa phần các website thực hành lập trình trực
tuyến chỉ cung cấp cho người sử dụng một khối lượng không gian lưu trữ nhất
định.
Ngồi ra có một số cơng ty cơng nghệ cung cấp các dịch vụ giúp cho các lập trình
viên có thể dễ dàng sử dụng để xây dựng dự án của mình như dịch vụ Cloud9 7 của
Amazon Web Service hay Azure 8 của Microsoft.
Cloud9 của AWS khơng hồn tồn khác biệt so với các IDEs 9 như Sublime Text,
nhưng AWS cũng nhấn mạnh những điểm mạnh của Cloud9, nó cho phép chỉnh
sửa cộng tác và được tích hợp sau vào trong hệ thống của AWS. Các công cụ của
Cloud9 đều có hỗ trợ các ngơn ngữ JavaScript, Python, PHP, … Cloud9 cũng có
cài đặt sẵn các debugging tools 10.
Cịn với Azure của Microsoft lập trình viên có thể sử dụng các cơng cụ có sẵn để
tạo ra các ứng dụng và triển khai chúng nhanh chóng mà khơng phải tốn thời gian
và chi phí để quản lý hạ tầng. Azure đề xuất sự bảo mật và phát triển linh hoạt,
triển khai và lựa chọn co giãn cho bất kỳ ứng dụng ở kích cỡ nào. Ứng dụng máy
chủ được xác nhận để chạy trên máy ảo.
Tuy nhiên cả 2 dịch vụ Cloud9 của AWS và Azure của Microsoft cung cấp một
quy mô phát triển dịch vụ rất lớn và phù hợp hơn khi dùng để phát triển ứng dụng
trong các doanh nghiệp. Với việc triển khai phức tạp và tốn kém chi phí duy trì,
7
/>
8
/>9
IDE (Integrated Development Environment) là mơi trường tích hợp dùng để viết code để phát triển ứng dụng
10
debugging tools: công cụ sửa lỗi khi lập trình
15
hai dịch vụ này chưa thực sự phù hợp để phát triển môi trường thực hành công
nghệ thông tin cho sinh viên. Bảng giá tham khảo dịch vụ Cloud9 của AWS có thể
tham khảo ở Hình 2.4.
Hình 2.4 Giá dịch vụ Cloud9 của AWS
Tổng quan chức năng và quy trình nghiệp vụ
Qua khảo sát thực tế môi trường thực hành của sinh viên CNTT hiện nay và các
giải pháp cung cấp mơi trường thực hành hiện có, tơi định hướng xây dựng môi
trường thực hành với các chức năng và quy trình nghiệp vụ như sau:
Tổng quan chức năng
Chức năng chính của việc phát triển một mơi trường thực hành cho sinh viên là
cung cấp các môi trường thực hành trên “Cloud”. Sinh viên ngồi việc thực hành
lập trình trên các mơi trường đó cịn có thể chia sẻ, lưu trữ và tạo các dự án liên
kết với nhau trên các mơi trường đó. Mơi trường giúp tiết kiệm thời gian và chi
phí cho sinh viên so với việc thực hành trên các thiết bị máy tính ở nhà trường hay
cá nhân.
Môi trường thực hành cũng giúp cho người quản lý môi trường dễ dàng trong việc
xây dựng các môi trường mới, cài đặt, nâng cấp chúng một cách đơn giản và thuận
tiện nhất. Đồng thời góp phần đánh giá tiến độ học tập của sinh viên một cách
chính xác, nhanh chóng và hiệu quả. Đảm bảo tính minh bạch trong các bài kiểm
tra cũng như an tồn thơng tin.
Quy trình nghiệp vụ
Các tác nhân chính tham gia trong hệ thống này là người tạo ra môi trường thực
hành, và người sử dụng các môi trường để thực hành.
Việc sử dụng môi trường của những người dung mới phải được sự cấp phép của
một hay nhiều người đang quản lý hệ thống đó.
Việc tạo một mơi trường mới được xử lý một cách đơn giản hóa. Người quản lý
hệ thống hay người phụ trách việc tạo môi trường sẽ dựa vào yêu cầu bài toán, nhu
16
cầu về môi trường thực hành đặc thù của từng mơn học để thiết kế nên mơi trường
cho sinh viên.
Ví dụ: Khi xây dựng một môi trường thực hành lập trình ngơn ngữ Java cần cài
đặt những thứ sau:
• Eclipse IDE for Enterprise Java Developers
• Java Oracke (jdk, jre, ...)
• Cấu hình eclip trong file eclip.ini
Xác định những yêu cầu trong việc cài đặt một môi trường là điều quan trọng nhất
với người thiết lập môi trường cho dù người đó có kiến thức ít hay nhiều về ảo
hóa. Việc thống nhất yêu cầu của một môi trường và cài đặt kiểm thử sẽ giúp đánh
giá lại chính xác những phân tích ban đầu của người quản lý. Từ đó sẽ đưa ra chỉnh
sửa phù hợp với nhu cầu của sinh viên hay người sử dụng về tính năng, phiên bản,
… Sau cùng người quản lý hệ thống sẽ đóng gói các yêu cầu đó lại và tiến hành
cài đặt trên các cụm máy chủ. Đóng gói bản cài đặt cũng giúp dễ dàng cho việc
nâng cấp môi trường sau này.
Việc triển khai, cài đặt các môi trường thực hành phổ biến hiện nay khiến cho quy
trình đóng gói và tạo các môi trường trở nên rời rạc và rất khó thực hiện so với
việc áp dụng cơng nghệ ảo hóa. Ngày nay, với sự phát triển mạnh mẽ của cơng
nghệ, rất nhiều các cơng nghệ ảo hóa đã được cung cấp, giúp người sử dụng có
nhiều lựa chọn trong việc triển khai hệ thống Tuy nhiên để lựa chọn được giải pháp
thích hợp, ta cần phân tích ưu, nhược điểm của từng loại công nghệ và chọn ra giải
pháp tốt nhất với vấn đề của mình. Tất cả những phân tích, so sánh đó tơi sẽ trình
bày trong Chương 3.
17
Chương 3 Cơng nghệ ảo hóa
Từ việc xác định các chức năng ở chương 2, tôi đã quyết định phát triển hệ thống
thực hành công nghệ thông tin dựa trên cơng nghệ ảo hóa. Chương 3 này trình bày
và so sánh các cơng nghệ ảo hóa hiện nay, đồng thời làm rõ lý do Docker là công
nghệ được chọn để phát triển mơi trường thực hành và vai trị của các công cụ hỗ
trợ Docker như Kubernetes và Rancher.
Tổng quan về ảo hóa và phần mềm tự do nguồn mở
Cơng nghệ ảo hóa
Ảo hóa là một cơng nghệ được thiết kế để tạo ra tầng trung gian giữa hệ thống
phần cứng máy tính và phần mềm chạy trên nó. Ý tưởng của cơng nghệ ảo hóa
máy chủ là từ một máy vật lý đơn lẻ có thể tạo thành nhiều máy ảo độc lập, như
minh họa trên Hình 3.1. Mỗi một máy ảo đều có một thiết lập nguồn hệ thống riêng
rẽ, hệ điều hành riêng và các ứng dụng riêng. Ảo hóa có nguồn gốc từ việc phân
chia ổ đĩa, chúng phân chia một máy chủ thực thành nhiều máy chủ logic. Một khi
máy chủ thực được chia, mỗi máy chủ logic có thể chạy một hệ điều hành và các
ứng dụng độc lập.
Hình 3.1 Ảo hóa là cơng nghệ giữa phần cứng và phần mềm máy tính 11
11
/>
18
Một máy ảo (VM - Virtual Machine) là một môi trường hoạt động độc lập – phần
mềm hoạt động cùng nhưng độc lập với hệ điều hành máy chủ. Nói cách khác, đó
là việc cài đặt phần mềm độc lập nền của một bộ xử lý trung tâm chạy mã biên
dịch. Các máy ảo được viết riêng biệt cho hệ điều hành mà chúng chạy trên đó.
Phân loại cơng nghệ ảo hóa
Có 2 loại cơng nghệ ảo hóa nổi bật và được sử dụng nhiều nhất hiện nay đó là
Virtualizaton và Containerization.
a) Virtualizaton
Cơng nghệ ảo hóa (Virtualization) [4] cho phép tạo ra thêm một phiên bản phụ
(phiên bản ảo) của một số phần mềm, linh kiện trong máy tính hay thậm chí là ảo
hóa tồn bộ chiếc máy tính. Ảo hóa Virtualization giúp cho chúng ta có thể chạy
được nhiều ứng dụng hơn trên một chiếc máy tính duy nhất, từ đó tiết kiệm chi phí
mua sắm thiết bị mới cho trường học và doanh nghiệp. Đặc biệt, công nghệ ảo hóa
Virtualization giúp người dùng có thể tận dụng tối đa tài nguyên máy tính, tài
nguyên mạng của hệ thống để đem lại hiệu quả xử lý cao hơn.
Hypervisor hay còn gọi là phần mềm giám sát máy ảo: Là một chương trình phần
mềm quản lý một hoặc nhiều máy ảo (VM). Nó được sử dụng để tạo, khởi động,
dừng và khởi động lại các máy ảo. Các hypervisor cho phép mỗi VM hoặc “khách”
truy cập vào lớp tài nguyên phần cứng vật lý bên dưới, chẳng hạn như CPU, RAM
và lưu trữ. Nó cũng có thể giới hạn số lượng tài nguyên hệ thống mà mỗi máy ảo
có thể sử dụng để đảm bảo cho nhiều máy ảo cùng sử dụng đồng thời trên một hệ
thống.
Cơng nghệ ảo hóa Virtualization chia thành 6 loại bao gồm: ảo hóa hệ điều hành,
ảo hóa phần cứng, ổ đĩa ảo, desktop ảo, RAM ảo, máy chủ ảo.
Ảo hóa hệ điều hành
Ảo hóa hệ điều hành hay tạo máy ảo là loại ảo hóa hay gặp nhất. Từ một máy tính
vật lý thơng thường có thể chạy song song 2 hệ điều hành: Mac và Windows, Win
XP và Win 7, Win 7 và Win 8, Windows và Linux, …
Ảo hóa phần cứng
Ảo hóa hệ điều hành là cách tạo máy ảo phổ thông nhất. Ở phân khúc cao cấp hơn
có thể tạo máy ảo bằng cách ảo hóa phần cứng để tạo máy ảo. Với phương pháp
19
ảo hóa phần cứng, máy thực dùng để ảo hóa khơng cần có hệ điều hành từ trước,
thay vào đó, sẽ ảo hóa trực tiếp trên phần cứng của máy thực.
Ổ đĩa ảo
Khái niệm ổ đĩa ảo không xa lạ với người dùng máy tính thường xuyên, nhất là
những người tải game hay tải đĩa DVD.
Ổ đĩa ảo giúp máy tính đọc được các file có đi .ios hay .img mà không cần phải
thêm các phần mềm hỗ trợ trên máy tính.
Desktop ảo
Desktop ảo thường được sử dụng trong hệ thống máy chủ của doanh nghiệp.
Desktop ảo giúp cho các nhân viên của doanh nghiệp có thể truy cập vào cùng một
màn hình làm việc chung ở bất kỳ đâu mà khơng cần phải mang chiếc máy tính đó
xem.
RAM ảo
RAM ảo cũng được dùng nhiều trong hệ thống máy chủ của doanh nghiệp. RAM
ảo được tạo ra bằng cách tập hợp chung hết các RAM thực có trên máy tính của
hệ thống và tạo thành một RAM tổng, RAM tổng này sẽ được sử dụng chung cho
tất cả các máy tính trong hệ thống. Các máy tính trong hệ thống máy chủ có thể
truy cập và sử dụng RAM tổng này mà không bị giới hạn phần cứng.
Máy chủ ảo ( VPS – Virtual Private Server)
Máy chủ ảo là loại ảo hóa hay gặp nhất của cơng nghệ ảo hóa. Máy chủ ảo được
tạo ra bằng phương pháp phân chia tài nguyên trên máy chủ vật lý thông thường.
Một máy chủ vật lý có thể tạo ra nhiều máy chủ ảo. Máy chủ ảo hoạt động như
một máy chủ vật lý thông thường với đầy đủ các chức năng: tạo môi trường lưu
trữ, kết nối và chia sẻ, …
b) Containerization
Containerization 12 là giải pháp ảo hố, tự động hóa thế hệ mới kế tiếp sau
Hypervisor Virtualization, được các hãng công nghệ hàng đầu thế giới
như Google, Facebook, Amazon áp dụng rộng rãi, đem lại hiệu quả đột phá với
12
/>
20