Даже если сервер SQL, сервер 1С и клиенты 1С физически находятся на одной железяке - настраивайте их взаимодействие так, как будто они разнесены по разным серверам.
Теперь чуть-чуть подробнее.
Допустим, у нас есть один мощный свободный сервер и 5-7 пользователей 1С, для которых нужно организовать нормальную работу программы.
Пользователей немного, но через время ожидается их существенное увеличение, плюс будут выделены деньги на покупку новых серверов.
Но пока что - сервер один и всё надо сделать прямо сейчас.
То есть, смысл задачи понятен: настроить всё так, чтобы впоследствии безболезненно разнести разные серверные роли по разным железякам.
Наши пользователи будут работать в терминале.
Почему терминал
Во первых, такое решение стабильнее.
Простая ситуация: заглючил свич. Или бухгалтер активно шевелил ногами под столом и выдернул с корнями сетевой провод (да, это бред - ставить системники под стол, но чаще всего так и бывает). Не важно.
Что происходит в случае, когда клиент 1С установлен на компьютере бухгалтера? Правильно - как минимум все несохранённые данные накрываются известным органом и в сторону системного администратора летит смачный кусок гуано.
В решении с терминалом такой проблемы нет, бухгалтеру достаточно переподключиться к серверу и продолжить с того места, на котором он остановился.
Во вторых, на рабочих местах могут быть не Windows, а другие операционные системы. И это две большие разницы - заставить 1С работать в «неродном» WINE или работать напрямую с сервера Windows, используя любой клиент RDP.
В-третьих, мощность рабочей станции несопоставима с мощностью сервера. Ресурсы сервера будут распределяться между всеми пользователями, ресурсоёмкие операции будут проходить быстрее.
Выбор схемы работы 1С
Для определённости будем рассматривать только классическое Windows-решение.
Пользователей будет много, поэтому понадобится SQL-сервер, 1С-сервер (кластер серверов) и терминальный сервер с клиентской частью 1С.
Реализация
Делаем на мощном сервере RAID5 (напоминаю, там будет SQL, которому критична высокая скорость чтения-записи).
Ставим Windows 2003/2008, называем сервер «srv», это имя не будет иметь значения.
Устанавливаем SQL, сервер 1С, клиент 1С и настраиваем роль терминального сервера.
Теперь самое интересное.
1. В DNS сети сопоставляем имена «sql», «1c» и «ts» ip-адресу нашего единственного сервера.
sql, 1с и ts - это выбранные имена для будущих выделенных серверов SQL, 1С и терминального сервера соответственно.
Таким образом, обратившись по любому из этих имён, мы попадём на сервер srv.
2. Настраиваем взаимодействие ролей и служб так, как будто они работают на физически разных железяках.
Например, 1С будет обращаться к SQL-серверу не на localhost, а по сетевому имени sql, и т.д.
3. Дописываем файл hosts на srv.
Чтобы не дёргать каждый раз сетевой DNS.
Файл %windir%\system32\drivers\etc\hosts:
... 127.0.0.1 sql 127.0.0.1 1c 127.0.0.1 ts ...
Если кто не знает, этот файл - локальный аналог DNS. Перед обращением к сетевому DNS соответствие имени с ip-адресом ищется именно здесь.
Кстати, этим активно пользуются вирусы, сопоставляя серверы для обновлений антивируса с адресом 127.0.0.1.
После этой процедуры, к примеру, сетевые SQL пакеты даже не будут попадать в локальную сеть, а будут сразу нагибаться на виртуальный интерфейс localhost.
4. Настраиваем терминальные клиенты пользователей на подключение к серверу ts.
Когда приедет новый сервер SQL
- Даём ему имя «sql», копируем базу с srv
- В DNS локальной сети изменяем A-запись для sql (ставим ip новой железяки вместо ip srv)
- На srv убираем из файла %windir%\system32\drivers\etc\hosts строчку:
<>127.0.0.1 sql <>
С остальными серверами - по аналогии.
Комментарии
Артем
#cid19605
Ответить
Доброго времени суток...Идея хорошая... быстрый переход на новое оборудование.. но я бы поспорил по поводу RAID5. это не самый быстрый массив, и чем в нем больше дисков тем меньше скорость записи на него.. чтение там конечно же на высоте... под базы данный да под файловые сервер на мой взгляд RAID10 массив будет более производительнее.
#cid19628
Ответить
#cid19605, Артем
Скорость рейда очень сильно зависит от конкретной реализации на конкретном контроллере.
Но по документации — RAID5 самый быстрый (из тех, в которых реализована избыточность).
Это не так.
Вот пример.
Для конкретики возьмём 4 терабайтных (ТБ) винчестера со скоростью чтения 100 мегабайт в секунду (МБ/с) и скоростью записи 50 МБ/с.
RAID10 — чересстрочный массив из зеркал.
Попарно соединяем винчестеры в зеркала (RAID1), получившиеся два зеркала соединяем в чересстрочник (RAID0).
Объём: 2 ТБ (каждое зеркало по 1 ТБ, чересстрочник объёмы суммирует)
Скорость чтения: 400 МБ/с (данные читаются со всех дисков одновременно)
Скорость записи: 100 МБ/с (двойная скорость за счёт чересстрочника)
Надёжность: теоретически, в нашем примере безболезненно может вылететь 2 винчестера: по одному из каждого зеркала. На практике, если из зеркала вылетает один из винчестеров, нагрузка на второй возрастает многократно. И если оперативно не восстановить неполное зеркало, разрушится ВЕСЬ десятый рейд.
RAID5 — (утрируя) чересстрочник с контрольными суммами.
В нашем примере на каждые 3 порции информации будет записываться 1 порция контрольных сумм. то есть, схема 3+1.
Объём: 3 ТБ (1 ТБ "теряем" на избыточность)
Скорость чтения: 400 МБ/с (данные читаются со всех дисков одновременно!)
Скорость записи: 150 МБ/с (полезные данные пишутся на 3 диска)
Надёжность: безболезненно может вылететь 1 винчестер.
В итоге, у пятого рейда, по сравнению с десятым — в полтора раза больше объём и скорость записи.
Но это, повторюсь, в теории. На практике, перед тем, как поднимать рабочий сервер на реальном железе — надо в обязательном порядке протестировать работу контроллера в разных режимах. Ну и, конечно, RAID10 больше подходит для 4 винчестеров (2+2), а RAID5 — для 5 (4+1). И про винт для горячего восстановления (hotspare) не забываем.