2015-02-16 51 views
17

Tôi có một máy chủ api đang chạy Node.js đang sử dụng mô đun cụm và thử nghiệm của nó trông khá tốt. Bây giờ bộ phận CNTT của chúng tôi muốn chuyển sang sử dụng các thùng chứa Docker mà tôi hài lòng nhưng tôi chưa bao giờ thực sự sử dụng nó ngoài việc chỉ chơi xung quanh. Nhưng tôi đã có một suy nghĩ, ứng dụng Node.js chạy trong một quá trình Docker duy nhất để mô-đun cluster sẽ không thực sự tốt nhất vì quá trình Docker duy nhất có thể là một điểm chậm của thiết lập cho đến khi yêu cầu được chia ra trong quá trình đó bởi mô-đun cụm.Vùng chứa Docker và các cụm Node.js

Vì vậy, thực sự một cụm các vùng chứa Docker đang chạy có thể bắt đầu và dừng chúng khi đang hoạt động là quan trọng hơn việc sử dụng mô-đun cụm Node.js chính xác?

Nếu tôi có một cụm container, việc sử dụng mô-đun cụm của Node.js có thể giúp tôi bất kỳ thứ gì không? Các điểm cuối api mất ít hơn 0,5 giây để trở lại (thường là hơi ít hơn một chút).

Tôi đang sử dụng MySQL (tin rằng đó là một máy chủ duy nhất, hiện không có gì hơn) nên không có lý do gì để sử dụng giải pháp toàn vẹn dữ liệu.

+0

Im bắt đầu xuống con đường này và tò mò về cách làm việc này cho bạn - tôi cũng tò mò nếu bạn đang sử dụng pm2 làm người bình luận bên dưới được đề cập hoặc chỉ mãi mãi – maehue

+0

Tôi đang sử dụng AWS ElasticBeanstalk vì vậy nếu lệnh nút bị lỗi và thoát các docker container dừng lại và EB sau đó tự động khởi động khác do cấu hình mở rộng của tôi. Không sử dụng mô-đun cụm đã được tuyệt vời cho đến nay và trường hợp của chúng tôi chạy khoảng 10% -15% CPU sử dụng. –

Trả lời

13

Bạn sẽ phải đo lường chắc chắn, nhưng linh cảm của tôi sẽ chạy với mô-đun cụm của nút sẽ là đáng giá. Nó sẽ giúp bạn sử dụng CPU nhiều hơn với số tiền chi phí thấp nhất. Không có thêm container để quản lý (bắt đầu, dừng, giám sát). Cộng với các công nhân cụm có một cơ chế giao tiếp hiệu quả. Sự phát triển hợp lý nhất (đừng bỏ qua bước) dường như với tôi:

  1. 1 container, 1 quá trình nút
  2. 1 container, một số công nhân nút cụm
  3. vài container, mỗi với một số công nhân nút
+1

[PM2] (https://github.com/Unitech/pm2) khá phổ biến. Nó sử dụng clustering và đã có một số hình ảnh docker cho PM2. – tsturzl

+0

Vì vậy, tôi có quyền nói rằng các container sẽ có quyền truy cập vào đa lõi của CPU? –

+0

có. nếu docker không phải là đa lõi tương thích đó sẽ là một thiếu sót rất lớn. –

3

Điều tôi đã xem là giải pháp tốt nhất khi sử dụng Docker là giữ càng ít quy trình cho mỗi vùng chứa càng tốt vì container có trọng lượng nhẹ; bạn không muốn các quá trình cố gắng sử dụng nhiều hơn một CPU. Vì vậy, chạy một cụm trong vùng chứa sẽ không thêm bất kỳ giá trị nào và có thể có độ trễ thấp hơn.

Ở đây https://medium.com/@CodeAndBiscuits/understanding-nodejs-clustering-in-docker-land-64ce2306afef#.9x6j3b8vw Chad Robinson giải thích ý tưởng nói chung.

Kubernetes, Rancher, Mesos và các lớp quản lý vùng chứa khác xử lý cân bằng tải. Họ cung cấp "lập kế hoạch" (di chuyển các vùng chứa Docker này xung quanh các CPU và máy khác nhau để sử dụng tốt trên cụm) và "nối mạng" (tải cân bằng các yêu cầu gửi đến các thùng chứa đó) các lớp bên trong.

Các vấn đề liên quan