История изменений
Исправление Black_Roland, (текущая версия) :
Так: https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-a...
Если сервер сломался, то отключаешь его на фронтенде (load balancer). После починки включаешь снова.
Фронтендов тоже может быть много, между ними нагрузку можно распределять через DNS-roudrobin. Либо можно просто использовать CloudFlare.
У фронтенда может быть один IP, но разные сервера. Делается с помощью динамической маршрутизации (в дата-центре, гуглить по ключевым словам: BGP, quagga).
Можно использовать Heartbeat. Тогда должен быть один белый IP и N серверов с серыми IP. При падении одного сервера, другой заберет его IP-адрес. В общем варианты разные, нужно уже выбирать под конкретную задачу.
Сам я с кластерами не работал никогда (весело будет, когда единственный сервер упадет). Потому про деплой приложения в кластер мало чего могу сказать. Но происходит это примерно так: по очереди сервера отключаются на фронтенде (балансировщике), обновляется код приложения, затем в конце все сервера снова включаются на фронтенде.
Только моя схема какая-то неправильная, потому что серверов будет становиться все меньше и меньше, и в итоге сайт пропадет на время. Не знаю если честно как эту проблему решают, но в принципе можно отключить на фронтенде половину серверов, обновить их, выключить другую половину и включить, обновленную.
Про деплой можно почитать в документации Ansible: http://docs.ansible.com/guide_rolling_upgrade.html Но тут очень мало, только базовые вещи.
А загруженные файлы (фоточки и прочее, не относящееся к коду) реплицируются через кластерные ФС, например GlusterFS.
Исправление Black_Roland, :
Так: https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-a...
Если сервер сломался, то отключаешь его на фронтенде (load balancer). После починки включаешь снова.
Фронтендов тоже может быть много, между ними нагрузку можно распределять через DNS-roudrobin. Либо можно просто использовать CloudFlare.
У фронтенда может быть один IP, но разные сервера. Делается с помощью динамической маршрутизации (в дата-центре).
Можно использовать Heartbeat. Тогда должен быть один белый IP и N серверов с серыми IP. При падении одного сервера, другой заберет его IP-адрес. В общем варианты разные, нужно уже выбирать под конкретную задачу.
Сам я с кластерами не работал никогда (весело будет, когда единственный сервер упадет). Потому про деплой приложения в кластер мало чего могу сказать. Но происходит это примерно так: по очереди сервера отключаются на фронтенде (балансировщике), обновляется код приложения, затем в конце все сервера снова включаются на фронтенде.
Только моя схема какая-то неправильная, потому что серверов будет становиться все меньше и меньше, и в итоге сайт пропадет на время. Не знаю если честно как эту проблему решают, но в принципе можно отключить на фронтенде половину серверов, обновить их, выключить другую половину и включить, обновленную.
Про деплой можно почитать в документации Ansible: http://docs.ansible.com/guide_rolling_upgrade.html Но тут очень мало, только базовые вещи.
А загруженные файлы (фоточки и прочее, не относящееся к коду) реплицируются через кластерные ФС, например GlusterFS.
Исходная версия Black_Roland, :
Так: https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-a...
Если сервер сломался, то отключаешь его на фронтенде (load balancer). После починки включаешь снова.
Фронтендов тоже может быть много, между ними нагрузку можно распределять через DNS-roudrobin. Либо можно просто использовать CloudFlare.
У фронтенда может быть один IP, но разные сервера. Делается с помощью динамической маршрутизации (в дата-центре).
Можно использовать Heartbeat. Тогда должен быть один белый IP и N серверов с серыми IP. При падении одного сервера, другой заберет его IP-адрес. В общем варианты разные, нужно уже выбирать под конкретную задачу.
Сам я с кластерами не работал никогда (весело будет, когда единственный сервер упадет). Потому про деплой приложения в кластер мало чего могу сказать. Но происходит это примерно так: по очереди сервера отключаются на фронтенде (балансировщике), обновляется код приложения, затем в конце все сервера снова включаются на фронтенде.
Только моя схема какая-то неправильная, потому что серверов будет становиться все меньше и меньше, и в итоге сайт пропадет на время. Не знаю если честно как эту проблему решают, но в принципе можно отключить на фронтенде половину серверов, обновить их, выключить другую половину и включить, обновленную.
Про деплой можно почитать в документации Ansible: http://docs.ansible.com/guide_rolling_upgrade.html Но тут очень мало, только базовые вещи.
А загруженные файлы (фоточки и прочее, не относящееся к коду) реплицируются через кластерные ФС, например Ceph.