Данная статья основана на опыте по развитию и поддержке решений на платформе 1С:Предприятия. В статье описаны некоторые довольно часто встречающиеся ситуации, вызывающие сложности при настойке отказоустойчивой системы (Зеркалирование баз данных на MS SQL).
Ставилась задача по настройке автоматической отказоустойчивости и отсутствию возможности утраты данных для 1С — была рализована с настройкой кластера 1С и кластера MS SQL.
Но хотелось, чтобы базы на MS SQL — были зеркальные, потому что :
Основные достоинства Database Mirroring
- Восстановление менее 3 секунд
- Полноценный резерв
- Два отдельных сервера
- Две отдельных копии данных
- Взаимодействие между серверами через стандартное сетевое соединение
- Нет специальных требований на аппаратное обеспечение
- Самоконтроль
- Высокая доступность для базы данных
Но 1С сама не может переключиться на другую базу-тогда пришло такое решение.
В проекте были задействованы 6 серверов: 2 сервера 1С, 3 SQL сервера и 1 веб-сервер (рис.1).
Был настроен кластер серверов 1С: Центральный и резервный (на рис.1) T1C и T1Сс, затем настроено зеркальное отображение базы данных. Сделав это — будет не просто улучшена возможность аварийного восстановления вашего приложения, вы будете использовать высокий уровень доступности зеркального отображения базы данных — функция, которую вы найдете в SQL Server 2005 и выше, это означает, что отказоустойчивость базы данных, в случае если потеряете ваш главный SQL сервер. Нам понадобиться 3 SQL сервера (TSQL1, TSQL2, TSQL3). 2 SQL сервера (Principal и Mirror) должны быть идентичными, например, это означает версия (Standard или Enterprise), пакеты обновлений должны быть одинаковы на обоих серверах. Третий сервер может быть SQL Server Standard, Enterprise, Workgroup или Express. Свидетель (Witness) сервер будет, пинговать 2 других серверах, если есть что-то неправильно, это сервер имеет способность узнавать о начале автоматического перехода на другой, он не будет содержать базу данных, поэтому бессмысленно использовать SQL Server, кроме Express Edition.
Создав базы на серверах 1С и SQL – серверах опубликуем из конфигуратора веб-сервис на сервере TIIS.
Подробно как настраивать ваше написанное, описывать не стал, в сети много ресурсов, которые дают подробную инструкцию об этом.
Сама 1С не может переключиться на другой SQL сервер, при остановке главного. Выход — было написано приложение для запуска 1С.(рис.2)
Приложение проверяет работу SQL серверов — включен ли сервер физически, потом происходит проверка работоспособности самого SQL-сервера, а затем запускает 1С через введенный адрес для IE.
Тема конечно интересная, но очень слабое описание…
Что бы посмотреть как настраивается зеркалирование SQL и для чего «следящий» сервер нужно искать «в сети много ресурсов, которые дают подробную инструкцию».
И что за приложение написано, оно пингует эти сервера или как-то по другому проверяет?
Работа через веб-сервер это один из вариантов или в данной ситуации необходимость?
Было бы еще очень интересно посмотреть на скриншоты настроек SQL-сервера.
Что то как то сыро. Вы бы могли поподробней рассказать как делали настройку со стороны 1С?
Не пробовали ли ставить 1с на следящий сервер, а остальные добавить к нему в виде рабочих машин.
Тогда все подключались бы к нему, а он уже распределял кого куда.
Поставить это можно на веб сервер, так как фактически через него идет подключение, и если он ляжет, то толку от следящего сервера никакого.
Я уже точно этого всего не помню, но хотелось бы разобраться 🙂
Эта технология обеспечивает отказоустойчивость системы.
Но, насколько помню есть особенности:
1.Данный способ требует трех SQL серверов. Для MSSQL есть решение когда работают только
два. Правда в этом случае автоматическое переключение не работает, но экономия на лишнем сервере.
2.Более важно то что в предложенном способе при выполнении транзакции она будет завершена, только после записи в базы обоих серверов SQL. То есть будет «просадка» производительности. При использовании же двух серверов, есть режим отложенной записи, который выполняет запись на второй сервер, не задерживая транзакцию на основном.
(3) aspirator23, По пункту 1 вашего комментария: Выбор отказоустойчивого решения зависит от стратегического развития информационных технологий,бюджета. А по пункту 2: конечно есть выбор между более высокой производительностью и более высокой надежностью: Database Mirroring имеет два уровня надежности:
-FULL – фиксация при записи лога на Mirror(Допускает автоматическое восстановление,нет потери данных)
-OFF – фиксация при записи лога на Principal
(1) (1) Подробную инструкцию со скриншотами по настройке такой системы,заканчиваю оформлять, прикреплю к данной публикации.
Не совсем понятны две вещи:
Останется ли система работоспособной, если откажет вебсервер или следящий сервер?
И можно ли совсестить эти два сервера на одной машине? На сколько высока на них нагрузка?
(6) Said, при отказе следящего-партнеры могут формировать кворум самостоятельно, самое главное в системе,что данные не потеряются,а развернуть вебсервер думаю не составит такого труда,как в сравнении с восстановлением данных.Нагрузка на следящий сервер очень мала:отвечает на запрос проверки связи,отвечает на вопрос “Жив ли другой сервер?”.
(2) DitriX, Идея хорошая — попробую…
При таком обильном задействовании серверов(железа) напрашивается полная виртуализация(Hyper-V) безотказного кластера:
сервачок а-ля blade
базо-помойка nat storage
И всегда помним главную вещь: сколько времени уйдет, чтобы осмыслить на какой момент времени у нас всё поднялось после аварийного краша. 🙂
(9) zzz_natali, Такое решение имеет место быть… 🙂
maverick76 Когда меняете конфигурацию и требуется изменение структуры БД (например добавили новый справочник и т.п. …) Зеркалирование нужно останавливать? (иначе конфигурацию не поменять), а после смены конфигурации восстанавливать полный бэкап на зеркале и подымать зеркалирование? при большом размере БД и частых изменения конфигурации весмьма затратный
(0) А сколько ключей для Сервера 1С: Предприятия требуется, на каждый?
И чем хуже настройка кластера серверов Предприятия и и кластера windows и SQL на 2-х машинах с общим дисковым массивом RAID 10?
(13) Den_D, время простоя < 3 сек.,у кластера 20 сек.+ восстановление БД,у зеркала — устойчивость к сбою дисковой подсистемы, у кластера -нет…
(11) max44, Зачем останавливать? Работайте,как если бы был один SQL сервер.
(14) восстановление БД потребуется только если накроется отказоустойчивая дисковая подсистема. При этом она же является независимой от самих серверов. Переключение будет автоматическим, меньше будет разнообразных отдельных машин.
(14) и все же А сколько ключей для Сервера 1С: Предприятия требуется?
(16) Den_D, Такую систему я уже реализовывал,а это новая реализация с использованием зеркала
(17) Den_D, 2 аппаратных ключа,1-10 лицензий,2-100 лицензий
Задум автора интересный но для практической реализации нужно более детальное описание. Автору спасибо за проделаную работу, золотое зерно в ней есть
(14) Время простоя серверов может и меньше 3 сек, только вот судя по описанию, пользователю понадобится перезапускать 1С если вдруг SQL переключится во время работы. В итоге время простоя будет больше. У кластера с общим хранилищем переключение SQL серверов проходит вообще незаметно для пользователей.