2.1.1 Khám phá dịch vụ
Trong các cách tiếp cận cơ sở hạ tầng dùng để triển khai dịch vụ, cách thức xem các máy như nhau thường được dùng trong các hệ thống vi dịch vụ sử dụng container. Với cách tiếp cận này, các máy được đối xử một cách công bằng và người vận hành
dưới dạng container). Tuy nhiên, yêu cầu đặt ra là làm cách nào người vận hành biết
được container nào được triển khai trên máy nào bởi bộ lập lịch. Các công cụ khám
phá dịch vụ được giới thiệu để giúp giải quyết vấn đề này.
Đối với các Docker container, vấn đề được thu gọn lại thành làm thế nào để có
thể ánh xạ giữa container đang chạy và vị trí của nó. Vị trí ở đây chính là địa chỉ IP và cổng trên máy mà container được triển khai. Việc ánh xạ này cần được thực hiện một cách nhanh chóng và chính xác, bởi các container có thể được tắt hay bật lại trên các máy khác nhau trong cluster tại bất cứ thời điểm nào tùy thuộc vào môi trường.
Một giải pháp khám phá dịch vụ cần cung cấp được hai chức năng chính: [11]
• Đăng kí: thiết lập ánh xạ giữa container và vị trí chạy khi container được triển
khai. Bởi chỉ có bộ lập lịch biết chính xác vị trí mà container chạy, bộ lập lịch
được xem như là nguồn đáng tin cậy duy nhất về vị trí container.
• Tìm kiếm: Cho phép các container hay các dịch vụ ngồi tìm kiếm các ánh xạ
của các container khác để có thể giao tiếp với chúng. u cầu đối với việc tìm kiếm là thơng tin cần chính xác và thời gian phản hồi nhanh.
2.1.2 Bộ lập lịch
Một bộ lập lịch cho hệ thống phân tán sẽ dựa vào yêu cầu của người dùng để xác
định ứng dụng và triển khai nó trên một hoặc nhiều máy đang khả dụng.
Ví dụ: người dùng có thể gửi u cầu chạy nhiều bản sao của một ứng dụng nhất
định, bộ lập lịch sẽ dựa vào thông tin về tài nguyên của các máy để phân bố triển khai ứng dụng một cách hợp lí. Đối với Docker, việc này địi hỏi ảnh của ứng dụng phải có
sẵn trên máy chuẩn bị triển khai và Docker phải được cài trên các máy đó.
Hình 2.1: Bộ lập lịch
Hình 2.1 thể hiện một ví dụ của lập lịch: người dùng yêu cầu triển khai ba bản sao của ứng dụng, bộ lập lịch sẽ quyết định máy cụ thể để triển khai dựa trên thông tin
về trạng thái cluster, cách tận dụng tài nguyên các máy để đảm bảo bật đủ số lượng
bản sao yêu cầu và làm thế nào để thỏa mãn các ràng buộc khác từ người dùng (Ví dụ: chỉ triển khai ứng dụng trên máy có sử dụng ổ chứa SSD). Ngoài ra, chất lượng dịch
vụ cũng là một yếu tố để đưa ra quyết định lựa chọn máy triển khai.
2.1.3 Điều phối container
Bộ lập lịch và chức năng khám phá dịch vụ đóng vai trị quan trọng trong việc quản lý container. Trên thực tế, hai thành phần này gần như luôn được sử dụng cùng nhau và nằm trong một khái niệm rộng hơn gọi là điều phối container [11].
Hình 2.2: Điều phối container và các thành phần
Hình 2.2 thể hiện các thành phần cơ bản của một nền tảng điều phối container
như thành phần kiểm tra sức khỏe, tự động scale, thành phần khám phá dịch vụ, bộ lập lịch hay thành phần nâng cấp hệ thống. Nền tảng điều phối container sẽ thực hiện qúa trình khởi tạo, lập lịch, lựa chọn máy cho tới giám sát, cập nhật và đảm bảo giao tiếp
Các nền tảng điều phối container khác nhau thường có nhiều đặc điểm khác
nhau, nhưng tất cả những nền tảng này đều phải đảm bảo cung cấp được các tính năng cơ bản như:
• Cách thức cấu hình đơn giản: Những nền tảng điều phối container thường cho
phép người dùng khai báo các thông tin về cấu hình ứng dụng, kho ảnh, cấu
hình về mạng và các cổng được mở trên máy, thông tin về bộ lưu trữ ... một
cách đơn giản, trực quan thông qua các định dạng JSON hoặc YAML.
• Có các API để bật tắt container: Nền tảng điều phối container sẽ có API cho
phép việc cung ứng hay xếp lịch để bật container. Dựa vào các ràng buộc về tài nguyên, về mối tương quan của container cần bật với các container đang chạy
khác mà các nền tảng điều phối sẽ chọn máy phù hợp để triển khai.
• Có cơ chế khám phá dịch vụ: Khi triển khai một hệ thống gồm rất nhiều dịch
vụ, các dịch vụ được đóng gói theo dạng ảnh container và chạy trên nhiều máy khác nhau thì việc một container có thể nhận biết các thông tin về container khác sẽ trở nên khó khăn và đây là một trong những việc quan trọng hàng đầu trong qúa trình quản lý tồn bộ cluster. Các nền tảng điều phối container đều
cung cấp giải pháp để giải quyết vấn đề này cho người dùng, chẳng hạn thông
qua các dịch vụ dạng DNS, dịch vụ proxy, ...
• Cơ chế giám sát và sửa lỗi: Nền tảng điều phối container có trách nhiệm theo
dõi, giám sát container cũng như các máy mà chúng đang chạy. Nếu container bị lỗi, việc bật một container mới để thay thế được thực hiện gần như ngay lập tức. Nếu một máy trong cluster bị lỗi, các container đang chạy trên máy đấy sẽ
được phân phối để bật lại trên những máy còn lại. Thường thì người sử dụng sẽ
miêu tả trạng thái container mong muốn thơng qua file cấu hình (phổ biến nhất là dạng JSON hoặc YAML) còn nền tảng điều phối sẽ giám sát để luôn đảm
bảo điều này.
Để đảm bảo xây dựng được hệ thống triển khai liên tục cho các phần mềm dựa
trên vi dịch vụ, yêu cầu đầu tiên chính là việc lựa chọn nền tảng điều phối container
thỏa mãn những tính chất đã nêu trên, phù hợp với cơ sở hạ tầng mà tổ chức đang sử
dụng, có nhiều cơng cụ hỗ trợ cũng như có khả năng mở rộng tốt trong tương lai.