Как выбрать сервер для 1С, SQL и терминалов
Наверное, каждому сисадмину хоть раз в жизни приходилось решать задачи внедрения продуктов 1С, развёртывания SQL-баз и создания терминальных серверов. К нам регулярно обращаются заказчики с просьбой подобрать сервер под какую-нибудь из этих задач, а то и под все сразу. Здесь есть три возможных подхода, и мы хотим поделиться своим опытом в подборе оборудования, возможно, кому-то он сильно облегчит жизнь.
Основным критерием при выборе серверов для организации является набор сервисов, которые будут использоваться, и количество пользователей.
Сегодня мы рассмотрим выбор серверного «железа» для небольшой организации на 25–30 пользователей, с распределенной инфраструктурой (торговые точки, склад), которой требуются терминальный сервер и программа »1С: Предприятие». Этими сервисами будут пользоваться все сотрудники.
Большинство малых компаний, для удешевления стоимости оборудования, предпочитают минимизировать количество приобретаемой техники и просят администраторов «впихнуть» все запрошенные ими сервисы в один физический сервер. Желание понятное и простительное, но тут «есть нюансы».
Можно организовать терминальный сервер и использовать там файловую версию 1С, но при таком количестве пользователей компания-разработчик рекомендует переходить на клиент-серверный вариант. Поэтому нам потребуется еще сервер под »1С: Предприятие» и сервер баз данных. Уточним сразу, что организовать терминальный сервер, сервер SQL и сервер 1С на одной операционной системе возможно, но, с точки зрения безопасности и стабильности работы сервисов, это крайне не рекомендуется. А если всё-таки очень хочется использовать один физический сервер для всех трёх ролей, то рекомендуем использовать виртуализацию, например, VMWare ESXi или Hyper-V.
Таким образом, вырисовывается три варианта:
- Один сервер с файловой 1С. Плохой вариант, далее мы его рассматривать не будем.
- Один сервер с двумя виртуальными машинами.
- Два физических сервера, один терминальный, второй с БД и 1С.
Для решения этих задач можно предложить следующую конфигурацию серверов:
В случае с одним физическим сервером мы остановили выбор на Dell R710, с двумя шестиядерными процессорами Xeon X5650, 64 Гб оперативной памяти и шестью дисками: два SSD в RAID 1 и четыре SAS-диска в RAID 10.
В случае с двумя физическими серверами мы остановили выбор на таких конфигурациях:
- Терминальный сервер: IBM x3550 M3 с одним процессором Xeon E5620, 32 Гб оперативной памяти и двумя SSD в RAID 1, с дополнительной сетевой картой на два гигабитных интерфейса. У этого сервера также есть богатые возможности для апгрейда, так как он двухпроцессорный, имеет 18 слотов под модули памяти и поддерживает до 288 Гб ОЗУ.
- Сервер баз данных: IBM x3250 M5 с одним процессором Xeon E3–1220v3, 16 Гб ОЗУ, дополнительным RAID-контроллером SAS/SATA, четырьмя SAS-дисками в RAID 10, с дополнительной сетевой картой на 2 гигабитных интерфейса.
Почему мы выбрали именно такие конфигурации? Для ответа на этот вопрос давайте подсчитаем, что нам нужно для обеспечения комфортной работы пользователей в нашей небольшой организации на 25–30 сотрудников. Чтобы не было недопонимания: это лишь один из примеров недорогого внедрения 1С, и во многих случаях целесообразнее выбрать другие конфигурации.
Процессор
С точки зрения процессорного времени терминальные сессии занимают не очень большую долю. По опыту внедрения терминальных решений в различных организациях, для поддержания комфортной работы 30-ти пользователей достаточно будет 4–6 физических ядер процессора, по одному ядру на 6–8 сессий.
Для небольшой базы SQL-серверу понадобится одно ядро. Но мы будем ориентироваться на расширение базы в будущем (или увеличение количества баз) и возьмем два ядра на SQL.
Для сервера »1С: Предприятие» важно не столько количество ядер, сколько их тактовая частота и частота шины. Поэтому заложим еще два ядра на сервер 1С.
И не забудем, что в случае использовании виртуализации одно или два ядра нам пригодится для обеспечения работы хостовой операционной системы.
Итого у нас получается:
- для сервера с двумя виртуальными машинами нужно 12 физических ядер. Можно и меньше, но всегда должен оставаться запас по мощности. Сервер с двумя шестиядерными процессорами подходит для этого идеально.
- для терминального сервера достаточно одного процессора Xeon E5620 с шестью ядрами, для сервера баз данных — процессора Xeon E3–1220v3 с четырьмя ядрами.
Оперативная память
Сначала посмотрим, сколько нужно оперативной памяти под сервисы:
- Операционная система Windows Server только под себя требует 2 Гб ОЗУ.
- Для SQL и небольшой базы 1С достаточно будет 4–6 Гб ОЗУ.
- Сервер »1С: Предприятие» требует еще 2–3 Гб ОЗУ.
- Рассчитываем, что каждому пользователю потребуется 700 Мб ОЗУ в терминальной сессии, тогда на 30 пользователей потребуется 21 Гб.
Теперь применим это к нашим вариантам.
- Для одного сервера с двумя виртуальными машинами нужно около 40 Гб ОЗУ.
- Для терминального сервера достаточно будет 24 Гб или 32 Гб ОЗУ (возьмем с запасом, предполагая будущее расширение). Для сервера с базами данных нужно не менее 8 Гб, но это «впритык», поэтому 16 Гб с запасом. Память сейчас — один из самых дешевых компонентов сервера.
Дисковая подсистема
Это традиционное бутылочное горлышко многих систем. Правильный выбор жестких дисков очень важен для обеспечения быстродействия серверов. При работе 1С с базой SQL происходит множество операций чтения/записи в секунду (IOPS). Если пользователи работают на терминальном сервере с тонких клиентов (т.е. полноценно используют терминальный сервер как рабочую среду), это сильно нагружает дисковую систему сервера. Например, 30 пользователей терминального сервера на RAID 1, SATA 3 Гбит/с, с дисками WD Velociraptor чувствуют себя некомфортно при работе с почтой и активном сёрфинге в интернете. Для терминальных серверов мы рекомендуем использовать SSD-накопители. Для серверов баз данных — SAS-диски, собранные в отказоустойчивые массивы.
Помимо накопителей, следует уделить внимание и дисковому контроллеру. Современные серверы имеют на борту довольно хорошие контроллеры, например, HP SmartArray и DELL PERC. Однако некорректно будет использовать «набортные» решения при серьёзной нагрузке, когда требуется максимальная производительность. Немного сэкономив, вы легко можете получить мощный сервер, который совершенно не тянет нагрузку. Поэтому контроллер должен быть аппаратным, а не программным, со своей энергонезависимой памятью.
Рассмотрим варианты решения этой задачи.
- Для одного сервера с двумя виртуальными машинами желательно использовать два RAID-массива: на одном будут располагаться файлы виртуальной машины терминального сервера, на втором — файлы виртуальной машины сервера баз данных и »1C: Предприятия». Для создания первого массива лучше всего использовать два SSD-накопителя в RAID 1 (зеркало).
Второй массив лучше создать из четырёх SAS-диска в RAID 10 (зеркало + страйп), но можно и из двух SSD-накопителей в RAID 1. Выбор зависит только от стоимости дисков и модели сервера.
- Для двух серверов всё то же самое, только массивы будут разнесены по серверам. На терминальном — RAID 1 из двух SSD, на сервере баз данных — RAID 10.
Один или несколько серверов
Как сказано выше, у небольших организаций довольно велико желание разместить все сервисы на одном сервере.
К преимуществам использования одного сервера и виртуализации можно считать более низкое энергопотребление и более гибкое распределение ресурсов между виртуальными машинами. Ну и перенос виртуальных машин, в случае чего, гораздо удобнее, чем перенос физических ОС.
Однако два сервера имеют более широкие возможности по апгрейду. Например, в нашем варианте недорогой IBM x3550 M3 с добавлением еще одного процессора и ОЗУ превращается в элегантные шорты терминальный сервер на 50 и даже более пользователей.
Еще одно «узкое место» в нашем случае, которое необходимо учитывать при выборе двух физических серверов, это обмен данными между ними по сети. У виртуальных серверов обмен данными идёт через виртуальный коммутатор. Здесь же, для увеличения пропускной способности сети, можно установить в каждый сервер по сетевой карте с двумя гигабитными интерфейсами, которые можно агрегировать между собой и напрямую соединить оба сервера агрегированными 2-х гигабитными линками. Или же использовать сетевые карты с SPF+ 10GBASE, но это дорогое удовольствие.
Запас по мощности
При расчетах и выборе сервера необходимо принимать во внимание пиковые нагрузки. Также обязательно нужно помнить, что база данных будет только «пухнуть», объёмы данных на терминальном сервере будут расти, а количество пользователей может увеличиться. Многие предприятия экономят на запасе мощности и через полгода-год сталкиваются с перебоями в работе и жалобами пользователей. Это тот случай, когда чрезмерная экономия приводит к новым затратам в будущем — скупой платит дважды. Выбранные нами варианты рассчитаны с запасом мощности и возможностью апгрейда. Учтено, что в DELL R710 можно будет добавить еще два жестких диска и ОЗУ, а также заменить процессоры на более производительные.
Так что, если вам потребуется расширение, или количество сервисов увеличится, то тут есть большие перспективы, а существующие серверы еще долгое время будут эффективно выполнять свои задачи. Возможно, через год нам неожиданно потребуется увеличить количество пользователей в два раза, до 60 человек? Пожалуйста.
Если вы использовали один сервер DELL R710, то можно докупить недорогой IBM x3550 M3, поднять на нём гипервизор, перенести туда виртуальную машину с БД и 1С-сервером, а на DELL-е все ресурсы отдать виртуальной машине с терминалом. Это будет быстро, и не потребуется «всё выкинуть и купить новое».
Если же вы использовали два сервера IBM, то x3550 M3 с добавлением второго процессора и небольшого количества ОЗУ превращается из середнячка в довольно мощную машину. А в x3250 M5 можно обновить процессор с E3–1220v3 до E3–1285v3.
Заключение
Конечно, предложенные конфигурации — далеко не единственные варианты оборудования, например, для внедрения того же 1С. Тут очень многое зависит от текущей инфраструктуры, уровня нагрузки и её увеличения в будущем, а также бюджета. Поэтому всегда можно подобрать либо похожие модели серверов, либо более мощные и дорогие.
Комментарии (10)
19 июля 2016 в 10:44
0↑
↓
А бэкапы? Или предполагается, что уже есть, куда их делать?
Чем плох вариант с сервером на Xeon 2600 серии для двух виртуалок?
В идеале, отдельные диски надо под систему и отдельно диски под профили терминальных пользователей, базы 1С и прочее добро. С нормальной политикой хранения документов где-нибудь на файловом сервере. Даже в относительно дешёвых вариантах такое доступно (при условии, что файловый сервер уже есть). А если файлового сервера нет — нет и бэкапов?А ещё, хотелось бы узнать у тех, кто это использует: RAID 1 на SSD стоит этого? Диски не умирают одновременно?
19 июля 2016 в 10:57
0↑
↓
Конечно вариантов реализации сервиса 1С очень много. Мы рекомендуем делать бэкапы на отдельную железку, для удобства.
Вариант на Xeon 2600 не плох, но он значительно дороже, а для данной задачи достаточно и Xeon 5600 серии.
Про SSD диски наблюдали практику в дата центрах, когда диски ставили в Raid 1 из разных партий, но возможно это излишние предосторожности.
В практике не встречали чтобы SSD умирали одновременно.19 июля 2016 в 11:05
0↑
↓
А в случае выхода из строя отдельных компонентов — не будет потом проблем с поиском замены при использовании устаревающего железа?
Xeon 5600 уже лет 5 не производят же.19 июля 2016 в 11:08
0↑
↓
Данное железо очень ходовое и проблем с ним не будет еще лет 10.
19 июля 2016 в 10:57
0↑
↓
В основном используем Raid10, ещё не разу не умирали одновременно диски. Хотя стараемся ставить разных производителей (в основном samsung и intel) или разные модели одного производителя.
19 июля 2016 в 10:51
0↑
↓
Эм считаю что терминальный сервер это лишняя трата денег, если в качестве конечного сервиса это только 1С предприятие, гораздо дешевле и разумней поступить иначе:1. Все на одном сервере, для доступа клиентов используем Apache под Windows
2. Два сервера, 1с ОС Linux для доступа клиентов к бд, второй это наш SQL + 1C Предприятие.Конкретизировать конфигурации я не буду, для доступа 50 человек в базу нам хватит сервера с 2 ГБ ОЗУ, самым медленным диском и тд, для этих целей можно вообще арендовать сервер в облаке за 500 рублей в среднем в месяц. При этом для масштабирования системы в будущем, фронтэдом вешаем Nginx настраивая его как балансировщик по 443 порту, а бакэндом апач на этом же сервере, в случае роста компании добавляем еще один сервер с апачем и строчку в конфигурацию Nginx.
Если же все вешаем на 1 сервер то там просто виндовый апач, с опубликованной БД. И вот именно для БД я бы позаботился не только процессором, а именно SSD причем желательно разнести данные логи и tempdb на разные диски.
И не тратил бы деньги на сервер терминалов и терминальные лицензии и по 700 метров ОЗУ на каждого пользователя, мне кажется это в современных реалиях просто расточительство ресурсов и не достаточная глубина знаний предмета.
19 июля 2016 в 11:08
0↑
↓
Это при условии, что ваша конфигурация через веб работает как надо. Что, вообще говоря, не всегда правда (банально, сканер ШК подключить не получится, как и запустить конфигурацию, которая с «вебом» не другит).
19 июля 2016 в 11:06 (комментарий был изменён)
0↑
↓
Абсолютно верно, в том случае, если конечный сервис только 1С.
Еще очень важный момент в нормальной работе 1С — это частота процессора на сервере 1С.19 июля 2016 в 11:11
0↑
↓
А с количеством ядер не промахнулись? Насколько я знаю, при выполнении ресурсоёмких операций, клиент 1С будет всё ядро вешать.
Да и другие приложения при различных сбоях могут поступать аналогично.19 июля 2016 в 11:15
0↑
↓
По практике для данной задачи достаточно с запасом. И конечно, есть различные «но»