Категорії
FreeBSD

Рекомендации по настройке нового сервера FreeBSD

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

Кстати, статья будет дополнятся, обновляться.

1) Установка ОС

Рекомендую ставить 64-битные версии, даже если вы используете меньше 4 Гб памяти. Естественно, ваш процессор должен поддерживать 64-битный режим.

Так же хочу добавить рекомендации при разбивке дисков:

– старайтесь разносить базу данных, ОС, сайт на разные физические устройства.
– если предыдущий пункт невозможен, то необходимо выделять отдельные разделы для базы, сайта. Это связано с увеличением безопасности (к примеру, отключаем на таких разделах выполнение)

Хочу отдельно отметить информацию о RAID. Если вы решились на RAID, то внимательно изучите/посчитайте производительность, которую вы получите в таком случае. Диски в составе одного рейда и подключенных к одному контроллеру будут только способствовать снижению производительности I/O. Лучше подключать диски к разным физическим контроллерам, но желательно одинаковым.

Если вы сторонник ZFS, то можно например вообще отказаться от аппаратного рейда и делать RAID с помощью ZFS. Бытует мнение, что так будет быстрее и проще управлять. Обязательно прочтите эту статью.

Есть патч для ускорения работы ƒzfs при некоторых условиях

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

Если ваши диски поддерживают работу с секторами, обязательно выровняйте их при создании разделов. Это повысит производительность дисков в несколько раз.

2) Пересборка ядра

Здесь рекомендую добавить в ядро поддержку такого функционала

– файервол (даже если это можно сделать и через модули)
– Dtrace (поможет трассировать приложения)
– Увеличение размера буферов (в дальнейшем будет использоваться для изменения различных параметров для sysctl)

maxusers 512
options NBUF=4096

– Accept-фильтры (ТОЛЬКО для веб-сервера)

options ACCEPT_FILTER_HTTP
options ACCEPT_FILTER_DATA

– Мультироутинг (для шлюзов, роутеров)

options ROUTETABLES=15

– По желанию убрать ненужный функционал

3) Файловая система и диски

Для файловых хранилищ можно использовать zfs (которую нужно подтюнить под ваши задачи). Для жёстких дисков (если позволяют) выключить контроль ошибок (об этом можно прочесть здесь) Использовать данную рекомендацию можно тогда, когда диски находятся в любом избыточном рейде. При использовании zfs, рекомендую отключать упреждающее чтение (prefetch) через /boot/loader.conf:

vfs.zfs.prefetch_disable="1"

Если планируется хранить много маленьких файлов на разделе, рекомендую заранее создавать ФС с нужным числом inode’s. В противном случае можете столкнуться с тем, что место на разделе есть, а файл создать нельзя. Подробнее, описано здесь.

4) Sysctl

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

Для систем с малым объёмом памяти рекомендую прочесть это (это касается FreeBSD 9.1 и выше)

5) Увеличение безопасности

Вот некоторые методы, которые помогут вам защитить сервер на 99%

– установка для папки /etc/ прав 0600
– использование анализаторов логов (fail2ban, bruteblock, sshit) для борьбы с подбором паролей
– использование внутренней защиты ПО (не использовать пустые пароли, отключить доступ рута через ssh, chroot, и т.д.)
– Использования различных IDE (rkhunter и другие)
– Аудит и пересылка логов на удалённый сервер
– Увеличение безопасности через файервол (описано здесь )

6) Мониторинг ресурсов.

Хорошим тоном является мониторинг ресурсов сервера, а так же просто мониторинг серверов. Для этих целей подойдёт cacti, nagios, zabbix

7) make.conf

Так же лучше добавить в /etc/make.conf нужные вам значения. К пример, отключить поддержку X-ов и прочего, что не требуется на сервере

WITHOUT_X11=YES
WITHOUT_GAMES=yes
NO_GAMES=true
NO_GUI=yes
NO_X11=yes
NO_X=yes

8 ) Тюнинг от команды FreeBSD.org

Вот пару ссылок в которых есть рекомендации

http://wiki.freebsd.org/ZFSTuningGuide
http://wiki.freebsd.org/SystemTuning
http://wiki.freebsd.org/NetworkPerformanceTuning

9) Для роутеров

Не забудьте вкомпиллировать файервол в ядро – файервол будет работать быстрее. И самое главное – не забывайте добавлять

gateway_enable="YES"

в /etc/rc.conf, так как это является очень частой ошибкой при настройке шлюзов, роутеров.

Не лишним будет предусмотреть возможность включения шейпера (dummynet/altq), а так же таблиц маршрутизации с метрикам (RADIX_MPATH/ROUTETABLES). Предусмотрите максимальное количество сессий NAT, что бы не было переполнения и прочий тюнинг.

10) Software

По возможности избегайте использования “тяжёлого” ПО – старайтесь использовать аналоги, которые потребляют намного меньше ресурсов. Здесь можно найти табличку аналогов “тяжеловесов”

11) Performance

Рекомендую обратить внимание на сборник рецептов для выявления узких мест в вашей ОС, а так же

  • http://skeletor.org.ua/?p=4807
  • https://klarasystems.com/articles/freebsd-tcp-performance-system-controls/

12) Ограничение ресурсов.

Начиная с 9 появилось управление ресурсами rctl (начиная с 10.2 уже включено в ядро). Подробнее об этом можно прочесть:

  • https://www.freebsd.org/doc/handbook/security-resourcelimits.html
  • http://myfreebsd.ru/overview/racct-na-praktike
  • https://www.bsdstore.ru/ru/11.0/wf_jrctl_ssi.html

Пример:

rctl -a user:clamav:vmemoryuse:deny=512M

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff