Бессмертное приложение

(TL;DR: последний абзац). Я управляю онлайн-сервисом и, таким образом, делаю резервные копии в автономном режиме и простой мониторинг для обеспечения устойчивости и доступности.

Устойчивость скорее ручная, но я уверен, что данные выживут. Я немного беспокоюсь о том, что данные менее безопасны, потому что я должен активно делать из них резервные копии. Сайт несколько раз закрывался на полдня, потому что мне нужно было время для ответа, и раз в несколько дней из-за сбоя ИБП и сети.

Мне это не нравится

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

Мне не требуется чрезвычайная масштабируемость (пока, я надеюсь:) или идеальное время безотказной работы, но я, естественно, хотел бы их. Остановка на несколько минут приемлема. Потеря активной памяти отстой. Потеря данных на диске недопустима. Нарушение безопасности (опубликованные данные) недопустимо. Я забочусь только о том, чтобы выжило одно приложение, а не о заданиях cron или операционной системе, в которой оно работает (если оно параноидально защищено, предпочитайте OpenBSD).

Вопрос: как запустить приложение (совместимое с Linux и BSD) таким образом, чтобы оно никогда не погибало на кластере серверов?

изменить: в ответ на ваши запросы ясности: это веб-сервис для безопасного хранения личных ключей, то есть API, который доступен через Интернет и выполняет операции с закрытым ключом после очистки. Закрытые ключи являются ценными и не должны быть потеряны. Эти ключи синхронизируются с диском, поэтому поддерживаемая память не требуется. Под бессмертным я подразумеваю, что оно может быть приостановлено, но оно должно быть в состоянии продолжить после этого приостановления. Обновления ядра не будут существенной проблемой, потому что это может привести к запланированным простоям. Это начинает выглядеть как реплицированный диск и проблема автоматического переключения при сбое.

2 ответа

Решение

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

Из того, как вы описываете свои требования к доступности, похоже, что достаточно просто добавить один VPS на ваш существующий сервер.

Если для работы с высокой скоростью достаточно одного сервера - у вас может быть низкая скорость на VPS. Если одного вашего сервера недостаточно для high-sec - вам нечего делить.

Нетрудно иметь приложение, которое "никогда не умрет" на двух серверах - просто синхронизируйте все ваши данные в реальном времени между серверами, используйте некоторую кластерную базу данных (я слышал о cassandra, но есть МНОГО кластерных баз данных, которые подойдут). Если это ДОЛЖНЫ быть файлы файловой системы, есть DRDB, но я бы посоветовал в любом случае попытаться использовать базу данных и избежать осложнений. Как насчет двух столбцов таблицы: 1. имя файла и путь и 2. содержимое. Затем вы заменяете все ваши файлы сохранения на store-to-DB, а ваши файлы чтения на get-from-DB.

Это в основном все. Нет ничего очень сложного и дорогого в том, чего вы пытаетесь достичь.

Отказ от ответственности: вы сами решаете, какой уровень безопасности вам нужен, я не советовал хранить ваши конфиденциальные данные на размещенных серверах, и я не советовал иначе.

Вы задаете много вопросов, все в одном большом мяче. Я подозреваю, что вы даже не знаете, что спрашиваете некоторых из них.
Я попытался выбрать важные предметы и предложить вам некоторые рекомендации.


Я немного беспокоюсь о том, что данные менее безопасны, потому что я должен активно делать из них резервные копии.

Зашифруйте свои резервные копии. Любое программное обеспечение для резервного копирования, которое стоит использовать (например, Bacula), будет поддерживать это.


Сайт несколько раз закрывался на полдня, потому что мне нужно было время для ответа, и раз в несколько дней из-за сбоя ИБП и сети.

Мне это не нравится

Никто не делает, но это случается. Если вы хотите избежать этого, вам нужны распределенные избыточные копии вашего сайта, предпочтительно параллельная избыточность (когда запросы постоянно поступают ко всем копиям, а данные магически синхронизируются между ними.
Подумайте, Google, потому что об этом бюджете мы говорим здесь. В продолжительной игре Девятки стоили Доллары.


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

Похоже, вы смотрите на неправильные решения, потому что если I do not require extreme scalability (yet, I hope :) or perfect uptime, but I'd naturally like them. Правда, наиболее экономичным решением было бы найти другой центр обработки данных (с лучшей инфраструктурой и более строгим SLA).
Вы гонитесь за вещами, разработанными для быстрого, чтобы достичь надёжности - они не взаимоисключающие (на самом деле они несколько симбиотичны), но они также не соединенные близнецы.


Остановка на несколько минут приемлема. Потеря активной памяти отстой. Потеря данных на диске недопустима. Нарушение безопасности (опубликованные данные) недопустимо. Я забочусь только о том, чтобы выжило одно приложение, а не о заданиях cron или операционной системе, в которой оно работает (если оно параноидально защищено, предпочитайте OpenBSD).

в порядке, Halting for minutes is acceptable значит ты разумный Это хорошо. Нам здесь нравятся разумные люди.

Losing active memory sucks - Я согласен с тобой там, Скиппи, я просто не думаю, что у тебя есть причина для действий.
Сбои серверов. Это происходит даже в средах с наилучшим обслуживанием, и когда сервер перезагружается или теряет питание, активная память (RAM) исчезает. С этим мало что можно поделать - это то, что должно произойти.

Losing disk data is unacceptable - Оу, чувак, теперь ты не разумен.
В реальном мире диски выходят из строя. Когда это происходит, они забирают все свои данные, и вы теряете все, что было сделано с момента последнего резервного копирования. Вот почему мы делаем резервные копии (достаточно часто, чтобы не потерять слишком много важных данных).
Поскольку вы уже делаете резервные копии, вы делаете все возможное, чтобы смягчить это, поэтому, когда происходит неизбежный сбой диска (или сбой и повреждение ОС), я советую ударить котенка по лицу и начать процесс восстановления.
(У вас есть процесс восстановления, и вы регулярно его тестируете, верно?:-)

Breach of security (publicized data) is unacceptable - Я просто собираюсь сказать "Ну, черт" на это и двигаться дальше. Я не могу придумать ни одного сервиса, где экранирование данных считается "приемлемым".

[I don't care] about . . . the OS . . . (as long as it's paranoidly secure, prefer OpenBSD) - Безопасность - это НЕ функция операционной системы, это функция конфигурации, которую вы применяете поверх нее. Я могу сделать небезопасную машину OpenBSD примерно за 5 секунд.
Забудьте всю маркетинговую шумиху и забудьте о впечатляющей репутации OpenBSD: выберите ОС, соответствующую вашим потребностям, а затем потратьте время на ее обеспечение. Да, вы все еще должны сделать это для коробки OpenBSD тоже.


Вопрос: как запустить приложение (совместимое с Linux и BSD) таким образом, чтобы оно никогда не погибало на кластере серверов?

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


изменить: в ответ на ваши запросы ясности: это веб-сервис для безопасного хранения личных ключей, то есть API, который доступен через Интернет и выполняет операции с закрытым ключом после очистки.

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

Другие вопросы по тегам