Có một số công cụ bạn có thể sử dụng.
Thứ nhất, Supervisord
Supervisord là một "hệ thống điều khiển quá trình", bạn cấu hình các quá trình của bạn và để giám sát quản lý chúng, nó sẽ khởi động lại chúng nếu họ thất bại, làm cho việc quản lý chúng dễ dàng hơn và giữ cho chúng chạy ở chế độ nền
Dưới đây là một giám sát viên mẫu cấu hình tập tin
[program:myprogram]
process_name=MYPROGRAM%(process_num)s
directory=/var/www/apps/myapp
command=/var/www/apps/myapp/virtualenv/bin/python index.py --PORT=%(process_num)s
startsecs=2
user=youruser
stdout_logfile=/var/log/myapp/out-%(process_num)s.log
stderr_logfile=/var/log/myapp/err-%(process_num)s.log
numprocs=4
numprocs_start=14000
Với cấu hình đó, giám sát sẽ bắt đầu 4 (numprocs
) trường hợp của index.py trên các cổng 14.001-14.004 (numprocs_start
). Chúng tôi vượt qua các --PORT=%(process_num)s
để có được mỗi quá trình để bắt đầu trên một cổng khác nhau. Bạn nên thay đổi numprocs
và numprocs_start
để phù hợp với môi trường/thiết bị của bạn. Nói chung, chúng tôi chạy các quy trình lõi 2xCPU (vì vậy bộ xử lý lõi tứ sẽ có 8 quy trình) nhưng có thể thay đổi rất lớn dựa trên những gì các quy trình của bạn thực hiện và mức độ chặn trong mã của bạn.
Tiếp theo, cấu hình nginx để chuyển tiếp yêu cầu tới trang web
upstream myappbackend {
server 127.0.0.1:14001 max_fails=3 fail_timeout=1s;
server 127.0.0.1:14002 max_fails=3 fail_timeout=1s;
server 127.0.0.1:14003 max_fails=3 fail_timeout=1s;
server 127.0.0.1:14004 max_fails=3 fail_timeout=1s;
}
server {
listen 4.5.6.7:80;
server_name example.com;
access_log /var/log/nginx/myapp.log main;
location/{
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_pass http://myappbackend/;
}
}
của bạn Đó là cấu hình nên được sửa đổi phụ thuộc vào ứng dụng của bạn và cách nó hoạt động, đó là một cấu hình rất tối thiểu và sẽ gần như chắc chắn cần phải mở rộng trên nhưng đó là đủ để giúp bạn bắt đầu
Có phải nginx hoặc giám sát xử lý quy trình nào được sử dụng khi URL được truy cập không? Hay tôi cần nhiều phần mềm hơn để quản lý điều này. –
và bạn có thể giải thích lý do tại sao bạn bắt đầu quá trình ở mức 14000 không? –
nginx chuyển yêu cầu đến một trong các phụ trợ. Giám sát viên chỉ quan tâm đến việc quản lý quy trình (trực tiếp/đã chết/khởi động lại). Đối với cổng, bạn có thể chọn bất cứ thứ gì bạn muốn trừ khi nó va chạm với một số ứng dụng khác đang lắng nghe một trong các cổng –