Резервирование и репликация Django через две учетные записи VPS - PullRequest
2 голосов
/ 02 декабря 2009

Я постепенно попадаю в положение, когда один из моих сайтов Django нуждается в некоторой надежности. В настоящее время я работаю на одном VPS в базе данных SQLite с memcached .. Это почти не масштабируется, насколько это возможно.

Если бы я купил другую учетную запись VPS, что бы я хотел сделать?

  • перейти на MySQL / PostgreSQL с репликацией? Что проще? Защищает ли репликация меня от взрыва одного сервера? Есть ли недостатки параллелизма?
  • Как мне сбалансировать нагрузку между двумя серверами?
  • Я бы также поместил memcached на новый сервер. Если я добавлю оба IP-адреса в конфигурацию, будет ли это хранить копию данных на обоих серверах? (Я думаю о том, что происходит с данными сеанса - в настоящее время хранится в memcached)
  • В настоящее время я использую Cherokee в качестве httpd - я уверен, что у него есть свои проблемы. Если у вас есть какие-либо советы, дайте мне знать.

Я поступаю неправильно? Есть ли более простой способ иметь более быстрые и надежные сайты на Django?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Первый шаг: переключиться с SQLite на реальную производственную базу данных (мне нравится Postgres). Это должно произойти задолго до того, как вы даже подумаете о втором VPS. SQLite по существу не поддерживает параллелизм вообще. Лично я бы даже не подумал о развертывании живого сайта на SQLite.

Если ваш сайт работает на SQLite и работает, я думаю, вы все еще далеки от того, чтобы фактически перерасти ваш единственный VPS (если он не загружен в противном случае).

Если / когда вам нужно добавить второй сервер, то, как вы настраиваете вещи, зависит от того, где вы на самом деле видите узкое место. Скорее всего, это будет база данных, и в этом случае хорошим шагом может быть простое перемещение базы данных на ее собственный сервер (при условии, что вы можете гарантировать низкую задержку между двумя VPS) и загрузка сервера базы данных с таким количеством оперативной памяти, которое вы можете себе позволить. , В целом производительность диска больше всего страдает в VPS, поэтому еще одним шагом, который следует рассмотреть, может быть размещение БД на сыром металле.

Я бы, вероятно, рассмотрел эти шаги, прежде чем подумать о репликации БД или нескольких серверах веб-уровня, но это действительно зависит от профилирования вашего реального случая (и того, как вы оцениваете производительность в сравнении с надежностью).

0 голосов
/ 17 мая 2011

Просмотр семинара по развертыванию Django Джейкоба Каплана-Мосса должен дать вам хороший обзор.

MySQL поддерживает настройки Master-Slave и Master-Master. Я не использую PostgreSQL.

Вы можете использовать nginx в качестве балансировщика нагрузки, HAProxy тоже вариант (ТАК используйте его).

Memcached распределяет объекты по серверам. В случае сбоя данные теряются.

Я не знаю Чероки, но nginx отлично.

...