2008-09-23 23 views
7

Bất kỳ ai biết cách khởi động lại cụm mongrel thông qua capistrano theo kiểu "lăn", ví dụ: một con lai tại một thời điểm. Sẽ là tuyệt vời để có một chút thời gian chờ đợi ở đó cũng như cho mỗi, để cho mongrel tải các ứng dụng đường ray lên là tốt.Làm thế nào để thực hiện khởi động lại một cụm mongrels

Tôi đã thực hiện một số tìm kiếm và không tìm thấy quá nhiều, vì vậy, hãy tìm kiếm trợ giúp trước khi tôi đi sâu vào đá quý mongrel_cluster.

Cảm ơn!

Trả lời

1

Seesaw là một viên ngọc được tìm thấy trong số Rails Oceania Rubyforge Project cung cấp loại chức năng này cho các cụm mongrel. Tuy nhiên, dự án này có thể bị một số bit thối không havain đã phát hành kể từ năm 2007. Tuy nhiên giá trị một cái nhìn thậm chí chỉ để véo những ý tưởng :)

1
#!/bin/bash 
for PIDFILE in /tmp/mongrel.*; do 
    PID=$(cat ${PIDFILE}) 
    kill ${PID} 
    ${RUN_MONGREL_CMD} ${PID} 
    sleep 2 
done 
3

Tôi đồng ý với cách tiếp cận bập bênh hơn so với phương pháp lăn bạn đang tìm kiếm. Vấn đề là bạn kết thúc trong các tình huống mà cân bằng tải có thể ném người dùng qua lại giữa các phiên bản khác nhau của ứng dụng trong khi bạn đang chuyển đổi.

Các giải pháp mà chúng tôi đã đưa ra (trước khi tìm thấy SeeSaw, mà chúng tôi không sử dụng) là lấy một nửa của mongrels off line từ cân bằng tải. Tắt chúng đi. Cập nhật chúng. Bắt đầu chúng. Đặt những mongrels trở lại trực tuyến trong cân bằng tải và lấy nửa kia đi. Đóng nửa thứ hai xuống. Cập nhật nửa thứ hai. Bắt đầu chúng. Điều này giảm thiểu đáng kể thời gian mà bạn có hai phiên bản khác nhau của ứng dụng đang chạy đồng thời. Tôi đã viết một tập tin cửa sổ bat để làm điều này. (Triển khai trên Windows không được khuyến nghị, btw)

Điều quan trọng cần lưu ý là việc di chuyển cơ sở dữ liệu có thể làm cho toàn bộ phương pháp tiếp cận nguy hiểm một chút. Nếu bạn chỉ có các di chuyển phụ gia, bạn có thể chạy chúng bất cứ lúc nào trước khi triển khai. Nếu bạn đang xóa cột, bạn cần thực hiện sau khi triển khai. Nếu bạn đổi tên các cột, tốt hơn là chia nó thành một cột mới và sao chép dữ liệu vào trong đó di chuyển để chạy trước khi triển khai và một tập lệnh riêng biệt để loại bỏ cột cũ sau khi triển khai. Trên thực tế, có thể nguy hiểm khi sử dụng di chuyển thường xuyên của bạn trên cơ sở dữ liệu sản xuất nói chung nếu bạn không cố gắng tổ chức chúng. Tất cả điều này chỉ để thực hiện việc giao hàng thường xuyên hơn, do đó mỗi bản cập nhật đều có rủi ro thấp hơn và ít phức tạp hơn, nhưng đó là một chủ đề cho một phản ứng khác.

+0

Cảm ơn matt, vâng, tôi đã không nghĩ đến nó, nhưng tôi chắc chắn sẽ sai về phía an toàn và hầu như bất kỳ di chuyển nào chỉ thực hiện một quá trình shutdown-migrate-startup hoàn chỉnh hơn –

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