Giới thiệu về các thành phần hệ thống CoreOS
Cơ chế khám phá dịch vụ này có thể được các dịch vụ khác sử dụng để truy vấn thông tin nhằm điều chỉnh chi tiết cấu hình của chúng. Ví dụ: một bộ cân bằng tải sẽ có thể truy vấn
etcd
cho địa chỉ IP của nhiều web server backend khi nó khởi động. Daemon fleet
về cơ bản là một hệ thống init phân tán. Nó hoạt động bằng cách kết nối vào systemd
init trên từng server riêng lẻ trong một cụm. Nó xử lý việc lập lịch dịch vụ, ràng buộc các mục tiêu triển khai dựa trên các tiêu chí do user xác định. User có thể khái niệm cụm như một đơn vị duy nhất với fleet
, thay vì phải lo lắng về từng server riêng lẻ.
Đến đây bạn đã có một ý tưởng chung về toàn bộ hệ thống, ta hãy đi qua một số chi tiết hơn về từng thành phần cụ thể. Hiểu được role của mỗi vở kịch này là quan trọng.
Tổng quan cơ bản về Docker
Docker là một hệ thống chứa sử dụng LXC, còn gọi là containers Linux, và sử dụng không gian tên kernel và cgroups để cô lập các quy trình.
Sự cách ly giúp giữ cho môi trường chạy của ứng dụng sạch sẽ và có thể dự đoán được. Một trong những lợi ích chính của hệ thống này là nó làm cho việc phân phối phần mềm trở nên tầm thường. Một containers Docker phải có thể chạy giống hệt nhau dù môi trường hoạt động. Điều này nghĩa là một containers được xây dựng trên notebook có thể chạy liền mạch trên một cụm toàn trung tâm dữ liệu.
Docker cho phép bạn phân phối một môi trường phần mềm làm việc với tất cả các phụ thuộc cần thiết. Các containers Docker có thể chạy song song với các containers khác, nhưng hoạt động như một server riêng lẻ. Ưu điểm của Docker container so với ảo hóa là Docker không tìm cách mô phỏng toàn bộ hệ điều hành, nó chỉ triển khai các thành phần cần thiết để ứng dụng chạy. Bởi vì điều này, Docker có nhiều lợi ích của ảo hóa, nhưng không có chi phí tài nguyên lớn.
CoreOS tận dụng containers Docker cho bất kỳ phần mềm nào bên ngoài bộ nhỏ có trong cài đặt cơ sở. Điều này nghĩa là hầu hết mọi thứ sẽ phải chạy trong một containers . Mặc dù thoạt đầu điều này có vẻ phức tạp, nhưng nó làm cho việc điều phối cụm dễ dàng hơn đáng kể. CoreOS được thiết kế để chủ yếu được thao tác ở cấp cụm, không phải ở cấp của các server riêng lẻ.
Điều này làm cho việc phân phối dịch vụ và phân tán tải của bạn trên CoreOS trở nên dễ dàng. Các công cụ và dịch vụ đi kèm sẽ cho phép bạn bắt đầu các quy trình trên bất kỳ nút nào có sẵn trong các ràng buộc được cung cấp của bạn. Docker cho phép các dịch vụ và tác vụ này được phân phối dưới dạng các phần riêng lẻ thay vì các ứng dụng phải được cấu hình trên mỗi nút.
Tổng quan cơ bản về Etcd
Để cung cấp một tập hợp dữ liệu global nhất quán cho từng nút trong một cụm và để kích hoạt chức năng khám phá dịch vụ, một dịch vụ có tên là etcd
đã được phát triển.
Dịch vụ etcd là một repository key-value khả dụng cao được dùng bởi mỗi nút để lấy dữ liệu cấu hình, truy vấn thông tin về các dịch vụ đang chạy và xuất bản thông tin mà các thành viên khác biết.Mỗi nút chạy ứng dụng client etcd của riêng nó. Chúng được cấu hình để giao tiếp với các client khác trong cụm để chia sẻ và phân phối thông tin.
Các ứng dụng muốn lấy thông tin từ cửa hàng chỉ cần kết nối với giao diện etcd
trên máy local của họ. Tất cả dữ liệu etcd
sẽ có sẵn trên mỗi nút, dù nó thực sự được lưu trữ ở đâu và mỗi giá trị được lưu trữ sẽ được phân phối và sao chép tự động trong toàn bộ cụm. Các cuộc bầu cử lãnh đạo cũng được xử lý tự động, khiến việc quản lý kho khóa trở nên khá đơn giản.
Để tương tác với dữ liệu etcd, bạn có thể sử dụng API HTTP / JSON đơn giản (có thể truy cập tại http://127.0.0.1:4001/v2/keys/
theo mặc định) hoặc bạn có thể sử dụng trình đi kèm có tên là etcdctl
để thao tác hoặc đọc dữ liệu. Cả lệnh etcdctl
và HTTP API đều là những cách tương tác với cửa hàng đơn giản và dễ đoán.
Điều quan trọng cần nhận ra là API HTTP cũng có thể truy cập được đối với các ứng dụng chạy trong containers Docker. Điều này nghĩa là cấu hình cho các containers riêng lẻ có thể tính đến các giá trị được lưu trữ trong etcd.
Tổng quan cơ bản về Hạm đội
Để thực sự sắp xếp các cụm CoreOS mà bạn đang xây dựng, một công cụ gọi là fleet
được sử dụng. Một khái niệm khá đơn giản, hạm đội hoạt động như một hệ thống init toàn cụm.
Mỗi nút riêng lẻ trong một môi trường phân cụm vận hành hệ thống init systemd
thông thường của riêng nó. Điều này được sử dụng để khởi động và quản lý các dịch vụ trên máy local . Theo nghĩa đơn giản, những gì hạm đội làm là cung cấp một giao diện để điều khiển từng hệ thống systemd
của các thành viên trong cụm.
Bạn có thể bắt đầu hoặc dừng các dịch vụ hoặc nhận thông tin trạng thái về các quy trình đang chạy trên toàn bộ cụm của bạn. Tuy nhiên, hạm đội thực hiện một số điều quan trọng để làm cho điều này trở nên hữu dụng hơn. Nó xử lý cơ chế phân phối quy trình, vì vậy nó có thể bắt đầu dịch vụ trên các server ít bận hơn.
Bạn cũng có thể chỉ định điều kiện vị trí cho các dịch vụ bạn đang chạy. Bạn có thể nhấn mạnh rằng một dịch vụ phải hoặc không được chạy trên một số server nhất định tùy thuộc vào vị trí của chúng, những gì chúng đang chạy và hơn thế nữa. Vì hạm đội tận dụng systemd để khởi động các quy trình local , mỗi file xác định dịch vụ là file đơn vị systemd (với một vài tùy chọn tùy chỉnh). Bạn có thể chuyển các file cấu hình này vào group một lần và quản lý chúng cho toàn bộ cụm.
Tính linh hoạt này làm cho việc thiết kế các cấu hình có tính khả dụng cao trở nên đơn giản. Ví dụ: bạn có thể yêu cầu mỗi containers web server của bạn phải được triển khai trên các node riêng biệt. Tương tự, bạn có thể đảm bảo containers trợ giúp chỉ được triển khai trên các node đang chạy containers mẹ.
Bất kỳ nút thành viên nào cũng được dùng để quản lý cụm bằng tiện ích fleetctl
. Điều này cho phép bạn lập lịch dịch vụ, quản lý các node và xem trạng thái chung của hệ thống . Chương trình fleetctl
sẽ là giao diện chính của bạn với cụm của bạn.
Kết luận
CoreOS có thể khác với hầu hết các bản phân phối Linux khác mà bạn có thể quen thuộc. Mỗi quyết định thiết kế đều được đưa ra để dễ dàng quản lý cụm và tính di động của ứng dụng.Điều này dẫn đến việc phân phối tập trung, mạnh mẽ được xây dựng để giải quyết nhu cầu của cơ sở hạ tầng hiện đại và mở rộng ứng dụng.
Để tìm hiểu thêm về cách bắt đầu, hãy xem hướng dẫn của ta về cách cài đặt và chạy một cụm CoreOS trên DigitalOcean .
Các tin liên quan