Sử dụng Chef cho các hoạt động đa nút


7

Tôi có một ứng dụng tôi muốn cấu hình bằng Chef bao gồm nhiều nút. Hãy nói rằng quá trình thực hiện nó bao gồm

  1. Làm một điều trên nút A chụp đầu ra
  2. Làm một điều khác trên nút B với đầu ra đó
  3. Quay lại nút A ngay bây giờ để thực hiện một số thao tác
  4. Bây giờ trên nút B một lần nữa
  5. ...

Một cách để làm điều này là viết một công thức lưu trữ giai đoạn trên mỗi nút và cứ chạy liên tục trên cả hai nút cho đến khi cuối cùng nó có cơ hội thực hiện tất cả các hoạt động trên tất cả các nút. Nhưng điều này thật vụng về và sẽ không mở rộng nếu có nút C, D, v.v. Tôi biết về việc thông báo cho các phụ thuộc chuỗi trong một nút, nhưng điều đó sẽ không hoạt động trên nhiều nút. Tôi không thể là người duy nhất cần điều này, vậy có cơ chế hoặc mẫu thiết kế / thực hành tốt nhất / TTP cho phong cách hoạt động này không?

Câu trả lời:


6

Nói tóm lại, Chef có thể không phải là công cụ để sử dụng ở đây.

Đầu bếp là một mô hình hội tụ, vì vậy bạn phải viết công thức nấu ăn của mình một cách bình thường, chẳng hạn như sau một số lần chạy, nó sẽ ở trạng thái mong muốn theo các nút khác xung quanh.

Cách tiếp cận của bạn về việc lưu trữ trạng thái có vẻ hợp lý và bạn sẽ phải sử dụng một dàn nhạc bên ngoài để lên lịch cho đầu bếp-khách hàng chạy xen kẽ trên A và B.
Nếu bạn có một máy chủ đầu bếp, công việc đẩy có thể là cách để Đi theo hệ sinh thái đầu bếp, lợi thế chính tôi thấy với nó so với các dàn nhạc khác là một mô hình kéo không cần cổng quản trị đến cũng như ssh trên các nút mục tiêu.


3

Đây là một ví dụ trong sách giáo khoa về điều phối máy chủ và là điều mà Chef vốn không có ý định làm. Theo ghi nhận của Tensibai, một máy chủ chạy Chef là một hệ thống hội tụ đạt được trạng thái mong muốn của riêng nó dựa trên các cài đặt cấu hình được đặt bởi công thức nấu ăn, thuộc tính, túi dữ liệu, v.v. có thể lấy là:

Tạo các hoạt động idempotent độc lập

Như bạn đã nêu trong câu hỏi của mình, việc tạo trạng thái hoạt động trong đó các nút của bạn có thể chạy liên tục cho đến khi tất cả các nhiệm vụ hoàn thành không có quy mô tốt. Tuy nhiên, có thể thiết kế lại các nút của bạn để nó không thành vấn đề. Nếu các nút a và b chạy các tác vụ để xuất các bản ghi của chúng song song và b hoàn thành trước a, thì nó có thể chạy tác vụ mà nút a thường chạy và ngược lại.

Sử dụng một dàn nhạc bên ngoài cho đoàn

Sử dụng một nút đại biểu chắc chắn sẽ mở rộng quy mô tốt hơn nhiều nếu bạn dự định có nhiều nút để phối hợp. Tuy nhiên, điều này có thể tạo ra xung đột với khách hàng đầu bếp của bạn chạy trên các nút được quản lý bởi người ủy quyền. Sẽ rất khó để xác minh rằng các cấu hình nút của bạn và các tác vụ nút của đại biểu không xung đột với nhau. Một cách thông minh để quản lý điều này có thể là kết hợp các tác vụ trong cấu hình của từng nút và yêu cầu người ủy nhiệm đặt một giá trị trong túi dữ liệu hoặc thuộc tính của máy chủ để báo hiệu cách nó tự cấu hình (nghĩa là nó cần thực hiện nhiệm vụ gì ).

Kết hợp cơ sở hạ tầng của bạn

Nếu mỗi nút chạy nó, các tác vụ phụ thuộc vào các nút khác và bạn không có phụ thuộc về chi phí / kỹ thuật khi chạy các tác vụ trên các nút khác nhau, Bạn có thể muốn xem xét kết hợp các cấu hình nút của mình thành một nút. Điều này sẽ loại bỏ bất kỳ xung đột cấu hình nào bạn có giữa bất kỳ nút nào. Tôi tưởng tượng có ý định rõ ràng để chạy các tác vụ của bạn trên các nút khác nhau, nhưng đây chắc chắn là một tùy chọn để xem xét (thậm chí có thể mất thời gian để viết lại các tác vụ cho các nút khác nhau).


Có lẽ. Tôi có xu hướng nghĩ về việc phối hợp nhiều hơn về việc vận hành mọi thứ hơn là thực hiện thiết lập ban đầu của chúng.
Gaius

1

Sử dụng SaltStack để sắp xếp các đầu bếp của bạn chạy.

Logic phối hợp nút chéo của bạn ở đây https://docs.saltstack.com/en/latest/topics/orchestrate/orchestrate_runner.html#more-complex-orchestration

Và bạn có thể khai báo https://docs.saltstack.com/en/latest/ref/states/all/salt.states.chef.html

hoặc bắt buộc https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.chef.html

lái các nút Chef đến trạng thái mong muốn của họ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.