Назад | Перейти на главную страницу

uwsgi + Django с nginx: настройка высокой доступности

Переехал из : https://stackoverflow.com/questions/25304968/uwsgi-django-with-nginx-high-availability-setup сюда.

Я настраивал высокую доступность на RHEL 6.5. Мой стек

1. uwsgi  
2. nginx  
3. django 
4. Pacemaker 

Теперь я понимаю, что nginx можно легко настроить, отслеживая nginx_status.

    location /nginx_status {
        # Turn on nginx stats
        stub_status on;
        access_log   off;
        # Security: Only allow access from 192.168.1.100 IP #
        allow 127.0.0.1;
        # Send rest of the world to /dev/null #
        deny all;
    }

Это обеспечит мониторинг пульса для nginx.

Но мой вопрос в том, как обеспечить, чтобы uwsgi будет в рабочем состоянии, поэтому когда появляется вторая машина nginx, она распознает uwsgi процесс и быть привязанным к нему. Или если uwsgi идет вниз, как обеспечить его поднять и перепривязать к nginx

Настройка происходит следующим образом

предполагая кластерные машины:

1. x.x.x.x (main machine)
2. y.y.y.y (slave machine)

Общее хранилище в

1. /apps (SAN)

/ apps доступны на обеих машинах как общее хранилище

Приложение под управлением django + uwsgi в

1. virtualenv : /apps/venv
2. applicaiton in : /apps
3. uwsgi configuration in : /apps/config.d
4. running application : /apps/project

конфигурация uwsgi

[uwsgi]

# the base directory (full path)
chdir           = /apps/project

# Django's wsgi file
module          = project.wsgi

# the virtualenv (full path)
home            = /apps/venv

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 4

# the socket (use the full path to be safe
socket          = /tmp/project.sock

# ... with appropriate permissions - may be needed
chmod-socket    = 666

# clear environment on exit
vacuum          = true

#daemonize
daemonize       = true

#logging
logger          = file:/tmp/uwsgi.log

Я не понимаю, как uwsgi будет работать в настройке HA?

Я бы не стал запускать uwsgi в настройке высокой доступности. Просто заставьте nginx взаимодействовать с локальным uwsgi и запустите nginx в настройке высокой доступности с кардиостимулятором или балансировщиком нагрузки.