В статье описаны не все параметры, а только те, которые обычно требуется изменять при конфигурировании новых облаков CloudStack. Параметры для всей системы применяются после перезагрузки каждого сервера управления CloudStack.
Версия CloudStack: 4.11.1
Поменять параметры можно в разделе: Global Settings
Вид Global Settings
alert.email.addresses
- Предлагаемое значение: e-mail
- Перечень e-mail адресов, которым направляются важные системные сообщения.
alert.email.sender
- Предлагаемое значение: e-mail
- E-mail отправитель сообщений об ошибках, например, noreply@mycloud.com.
alert.smtp.*
- Семейство параметров для настройки SMTP при отправке важных системных сообщений.
allow.public.user.templates
- Предлагаемое значение: false
- Если вы не планируете создавать среду, в которой пользователи могут делиться своими шаблонами, лучше поставить в false. В противном случае, среда может превратиться в “мусорку”, а невнимательные пользователи могут раскрыть важные данные третьим лицам, пометив шаблоны как публичные.
allow.user.create.projects
- Предлагаемое значение: false
- Могут ли обычные пользователи создавать проекты. Достаточно опасная опция, если установлена в true, поскольку проекты имеют отдельный учет ресурсов. Таким образом, при недостаточно проработанном биллинге, пользователи могут скрывать машины в проектах, пользуясь ими бесплатно. Другой способ ограничить возможности пользователей в части проектов, отключить создание проектов через динамические роли, если есть категории пользователей, которым вы планируете оставить такую возможность.
allow.user.expunge.recover.vm
- Предлагаемое значение: true
- По-умолчанию, когда пользователь удаляет VM, она переходит в состояние destroyed и полностью удаляется (expunge) через expunge.delay. Если этот флаг включен, то при удалении пользователь может сразу указать, что VM необходимо удалить полностью. Аналогично, с помощью этого параметра, пользователь может восстановить машину, которая находится в состоянии destroyed. При работе с данным параметром необходимо обратить внимание на: expunge.delay, expunge.interval, expunge.workers, поскольку при больших значениях пользователи могут съесть много ограниченных ресурсов кластера (например, белых IPv4) с помощью таких машин.
allow.user.view.destroyed.vm
- Предлагаемое значение: true
- Определяет, может ли пользователь видеть не полностью удаленные (destroyed) виртуальные машины. Если
allow.user.expunge.recover.vm
указан как true, то данный параметр тоже логично указать как true.
api.allowed.source.cidr.list
- Предлагаемое значение для приватного облака: CIDR корпоративной сети
- Предлагаемое значение для приватного облака: по-умолчанию
- Определяет с каких IP возможно выполнять запросы к API. Поскольку часто серверы управления развертываются за Nginx, то можно оставить данный параметр по-умолчанию и выполнить тонкую настройку на уровне Nginx.
api.throttling.enabled
- Предлагаемое значение: true
- Данный параметр указывает, будет ли сервер CloudStack ограничивать количество вызовов API для каждого пользователя. Если облако доступно для неограниченного круга лиц, стоит указать как true. В любом случае, подобную настройку рекомендуется выполнить еще и на Nginx, если он закрывает сервер управления от внешнего доступа.
api.throttling.interval
- Предлагаемое значение: 1
- Параметр задает окно, в котором осуществляется ограничение. В данном случае, 1 секунда, то есть мы ограничиваем количество запросов в секунду.
api.throttling.max
- Предлагаемое значение: 500
- Параметр задает сколько запросов в
api.throttling.interval
может поступить до блокировки API в интервале. Меньше 500 ставить не рекомендуется, UI может работать нестабильно.
capacity.check.period
- Предлагаемое значение: 300000
- Период времени, когда происходит перерасчет доступных ресурсов CPU, RAM, хранилища в облаке. В данном случае перерасчет происходит 1 раз в 300 секунд. Если облако маленькое и ресурсы находятся в дефиците, то рекомендуется уменьшать этот параметр, чтобы избежать ситуации, когда машины остановлены, но ресурсы еще не освобождены. По-существу, данный параметр важен только в совокупности с параметром
capacity.skipcounting.hours
, который позволяет для остановленных машин “возвращать” ресурсы в облако. Таким образом, остановленные машины (пока остановлены) не занимают ресурсы CPU и RAM, что можно учесть в биллинге. Однако, эти машины могут не запуститься, если ресурсы уже были заняты другими машинами.
capacity.skipcounting.hours
- Предлагаемое значение: 3600
- Данный параметр семантически неправилен, поскольку время задается все же в секундах, а не часах. Тем не менее, он определяет, через какое время остановленная машина считается не занимающей CPU и RAM облака. Это может быть полезно, если в облаке ресурсов меньше, чем необходимо для всех машин, однако, часть машин все время остановлена. К примеру, тестовые окружения могут запускаться и останавливаться по требованию.
cluster.cpu.allocated.capacity.disablethreshold
Это параметр по умолчанию для глобальных конфигурационных переменных уровня кластера. Все создаваемые кластеры будут наследовать этот параметр.
cluster.cpu.allocated.capacity.notificationthreshold
Это параметр по умолчанию для глобальных конфигурационных переменных уровня кластера. Все создаваемые кластеры будут наследовать этот параметр.
cluster.localStorage.capacity.notificationthreshold
Это параметр по умолчанию для глобальных конфигурационных переменных уровня кластера. Все создаваемые кластеры будут наследовать этот параметр.
cluster.memory.allocated.capacity.disablethreshold
Это параметр по умолчанию для глобальных конфигурационных переменных уровня кластера. Все создаваемые кластеры будут наследовать этот параметр.
cluster.memory.allocated.capacity.notificationthreshold
Это параметр по умолчанию для глобальных конфигурационных переменных уровня кластера. Все создаваемые кластеры будут наследовать этот параметр.
cluster.storage.allocated.capacity.notificationthreshold
Это параметр по умолчанию для глобальных конфигурационных переменных уровня кластера. Все создаваемые кластеры будут наследовать этот параметр.
cluster.storage.capacity.notificationthreshold
Это параметр по умолчанию для глобальных конфигурационных переменных уровня кластера. Все создаваемые кластеры будут наследовать этот параметр.
cluster.threshold.enabled
- Предлагаемое значение: true
- Параметр определяет будут ли использовать уровни предупреждения и исключения из алгоритма выбора узлов для кластеров.
consoleproxy.service.offering
- Предлагаемое значение: uuid
- Параметр определяет какое сервисное предложение использовать для машины CPVM. Необходимо указать UUID сервисного предложения. Для малых или приватных облаков этот параметр менять смысла нет, поскольку по-умолчанию ресурсов сервисного предложения для CPVM, которое использует CloudStack достаточно. Однако, если вы хоите предоставить CPVM больше ядер или разместить его на конкретных узлах, то данный параметр позволяет вам это осуществить.
consoleproxy.sslEnabled
- Предлагаемое значение: true
- Параметр определяет будет ли CPVM использовать SSL для виртуальной консоли. Если вы планируете размещать сервер управления за https, то необходимо указать true, иначе, при вызове консоли к виртуальным машинам вы все время будете получать ошибку безопасности. Загрузить цепочку сертификатов можно в разделе Infrastructure, кнопкой SSL Certificate. Если этого не сделать, доступ к консолям VM при включенном
consoleproxy.sslEnabled
корректно работать не будет. Сертификат должен быть wildcard, то есть поддерживать *.domain.com.
consoleproxy.url.domain
- Предлагаемое значение: *.domain.com
- CPVM представляет собой практически обычную VM, которая запускается в кластере. Сервер управления узнает, с каким гостевым IP запустилась CPVM и при попытке доступа к консоли виртуальной машины использует FQDN в форме: 1-2-3-4.domain.com, где 1-2-3-4 – гостевой ipv4 CPVM. Таким образом, для корректной работы CPVM вам необходимо поддерживать wildcard домен *.domain.com.
custom.diskoffering.size.max
Если планируется использовать дисковые предложения типа Custom Disk Size, то этот параметр необходимо установить в разумное значение, больше которого диски не будут, например, 1024 (1 TB).
custom.diskoffering.size.min
Если планируется использовать дисковые предложения типа Custom Disk Size, то этот параметр необходимо установить в разумное значение, меньше которого диски не будут, например, 10 (10 GB).
expunge.delay
- Предлагаемое значение: 300
- Параметр определяет через какое время машины в состоянии “destroyed” окончательно удалятся.
expunge.interval
- Предлагаемое значение: 60
- Параметр определяет как часто будет запускаться процедура поиска машин для удаления среди отмеченных как “destroyed”.
expunge.workers
- Предлагаемое значение: 1
- Параметр определяет сколько потоков будет удалять машины.
host
Параметр используется для указания ip-адреса сервера управления CloudStack, который используется для соединения агентами. Этот параметр может потребоваться изменить в нескольких случаях:
- используется балансируемый между серверами управления адрес, например, с помощью keepalived
- сервер CloudStack после установки определил свой адрес неправильно и агенты соединяются с неправильными адресами.
host.capacityType.to.order.clusters
- Предлагаемое значение: CPU
- Данный параметр используется аллокатором FirstFitAlocator для сортировки узлов по меньшему количеству занятых ресурсов. Можно указать CPU или RAM, в случае CPU, виртуальные машины будут создаваться на хостах с минимально занятым CPU (именно занятым, а не нагруженным), в случае RAM – на узлах с наибольшей свободной памятью.
instance.name
- Предлагаемое значение: vm
- Определяет префикс имени вновь создаваемой VM при незаданном имени. В итоге, машина будет называться
vm-<uuid>
.
kvm.snapshot.enabled
- Предлагаемое значение: true
- Поддержка полных снимков виртуальной машины для гипервизора KVM. Полные снимки для KVM – достаточно новая возможность. Если вы стремитесь к большей стабильности, данную возможность можно отключить.
ldap.*
Группа параметров определяет настройки LDAP при использовании LDAP для аутентификации пользователей.
mac.identifier
- Предлагаемое значение: 0
- Значение второго октета для генерируемых MAC-адресов виртуальных машин. Смотрите метод createSequenceBasedMacAddress. Первый октет в MAC всегда 0x1e
private final static long prefix = 0x1e;
(см. там же). Таким образом, по-умолчанию, все MAC-адреса машин генерируются в пространстве 1e:00:B3:B4:B5:B6. B3 – случайное число, B4-B6 генерируются на основании идентификатора IP-адреса в БД MySQL CloudStack. Данный параметр актуален, если происходит смешение пространств IP/MAC нескольких систем и возможны коллизии.
management.network.cidr
Данный параметр позволяет задать сеть, в которой размещаются серверы управления. Это помогает CloudStack верно определить сеть для связи агентов с серверами, особенно в случае нескольких интерфейсов на серверах управления.
max.account.*
Лимиты ресурсов, которые наследует каждый вновь создаваемый аккаунт.
max.domain.*
Лимиты ресурсов, которые наследует каждый вновь создаваемый домен.
max.project.*
Лимиты ресурсов, которые наследует каждый вновь создаваемый проект.
max.template.iso.size
- Предлагаемое значение: 50
- Задает максимальный размер шаблона или ISO, который может быть загруже в систему с помощью скачивания по URL или загрузки.
ping.interval
- Предлагаемое значение: 60
- Параметр определяет как часто сервер управления связывается с агентом на предмет проверки его состояния. Если значение параметра большое, то сервер управления будет идентифицировать аварийные состояния с существенной задержкой. Используется совместно с
ping.timeout
.
ping.timeout
- Предлагаемое значение: 2.5
- Параметр определяет коэффициент, на который умножается
ping.interval
для расчета периода времени, после которого агент считается недоступным. Например, 60 x 2.5= 150, таким образом, через два интервала проверки агент будет считаться недоступным. Если указать, к примеру 3.5, то агент будет считаться недоступным после трех интервалов проверки.
resourcecount.check.interval
- Предлагаемое значение: 300
- Параметр определяет время рекурсивного пересчета аллоцированных ресурсов по иерархии доменов. Дело в том, что CloudStack не осуществляет многоуровневый пересчет по иерархии вверх при каждом изменений в аккаунтах или субдоменах, находящихся в домене. Периодическая функция производит эту процедуру один раз в 300 секунд.
router.aggregation.command.each.timeout
- Предлагаемое значение: 600
- Важный параметр, который определяет сколько времени сервер управления ожидает ответа от VR при посылке ему команды. Рекомендуем поставить этот параметр повыше, в данном случае, 10 минут, поскольку при медленном запуске VR (что может произойти из-за различных факторов, например, нагрузки) сервер управления будет регистрировать таймаут и перезапускать VR, в итоге, он может быть недоступен в течение долгого времени, а может быть никогда не запустится.
router.cpu.mhz
Какую частоту CPU установить при запуске VR. В случае нагруженных VR с большим количеством сервиса может иметь смысл увеличить данный параметр, однако, не ставьте его выше, чем позволяет CPU узлов, иначе, CloudStack не сможет найти подходящий узел и VR не запустится.
secstorage.encrypt.copy
- Предлагаемое значение: true
- Определяет будет ли SSVM использовать HTTPS. Используется совместно с
secstorage.ssl.cert.domain
. Сертификат должен быть wildcard, то есть поддерживать *.domain.com.
secstorage.ssl.cert.domain
- Предлагаемое значение: *.yourdomain.com
- Важный параметр, который определяет какое FQDN имя будет генерировать CloudStack для SSVM. Данный параметр используется для реализации загрузки томов и шаблонов с локального сервера в CloudStack. Без правильной настройки данная функция работать не будет. Вы должны поддерживать wildcard домен вида *.yourdomain.com для корректной работы функции.
secstorage.service.offering
- Предлагаемое значение: uuid
- Параметр определяет какое сервисное предложение использовать для машины SSVM. Необходимо указать UUID сервисного предложения. Для малых или приватных облаков этот параметр менять смысла нет, поскольку по-умолчанию ресурсов сервисного предложения для SSVM, которое использует CloudStack достаточно. Однако, если вы хоите предоставить SSVM больше ядер или разместить его на конкретных узлах, то данный параметр позволяет вам это осуществить.
secstorage.vm.mtu.size
- Предлагаемое значение: 1500, 9000
- Если сеть связи с Secondary Storage сконфигурирована с использованием Jumbo Frame и вторичное хранилище тоже поддерживает Jumbo Frame, здесь необходимо указать MTU, равное установленному Jumbo Frame.
snapshot.max.*
Раздел определяет сколько пользователи облака могут создавать часовых, дневных, недельных, месячных снимков дисков по расписанию. Рекомендуем отключить часовые снимки полностью, поскольку всегда есть пользователи, которые будут этим злоупотреблять, что приведет к нестабильной работе их виртуальных машин из-за того, что каждый час они будут несколько секунд пребывать в замороженном состоянии.
Рекомендуем рассмотреть отключение Scheduled Snapshots через динамические роли, поскольку они создают ложную иллюзию консистентного резервного копирования.
storage.max.volume.size
- Предлагаемое значение: 2000
- Максимальный размер тома, поддерживаемый облаком. В данном примере указан как 2 ТБ. Поскольку виртуальная машина позволяет присоединить несколько томов, то, как правило, нет потребности использовать один очень большой том. По большей части, данный параметр должен расчитываться, исходя из возможностей хранилища и сети передачи данных хранилища. К примеру, по сети 10Gbit/s снимок с тома размером 2TB, при отсутствии ограничений по IO будет копироваться на Secondary Storage не менее 35 минут, создавая большую IO нагрузку на дисковую систему.
Всегда существуют взаимоисключающие настроечные параметры, которые требуется учитывать.
storage.max.volume.upload.size
- Предлагаемое значение: 500
- Максимальный размер тома, который можно импортировать в систему. Параметр достаточно безопасный, однако, конкретное значение определяется возможностями вашей сети, SSVM и Secondary Storage.
storage.overprovisioning.factor
- Предлагаемое значение: 4
- Параметр переподписки места первичного хранилища. Мы предлагаем устанавливать данный параметр в достаточно большое значение, если Вы планируете реализовать модель роста хранилища “Pay as you go” и используете средства мониторинга доступного пространства. Если же хранилища добавляются в облако полностью укомплектованными, лучше установить в “1”.
vm.allocation.algorithm
- Предлагаемое значение: firstfitleastconsumed
- Данный параметр используется планировщиком FirstFitDeploymentPlanner для выбора стратегии отбора узлов-кандидатов для размещения новых виртуальных машин. Значение “firstfitleastconsumed” соответствует алгоритму отбора узлов с наименьшим объемом занятых ресурсов. Данная стратегия работает в связке с параметром
host.capacityType.to.order.clusters
.Вообще, тема планировщиков достаточно сложна, рекомендуется руководствоваться исходным кодом для детального понимания принципов работы.
Набор параметров:
vm.deployment.planner=FirstFitPlanner
vm.allocation.algorithm=firstfitleastconsumed
host.capacityType.to.order.clusters=RAM
будет соответствовать стратегии размещения новых машин на узлах, где занят минимальный объем памяти, а набор параметров
vm.deployment.planner=FirstFitPlanner
vm.allocation.algorithm=firstfitleastconsumed
host.capacityType.to.order.clusters=CPU
стратегии размещения новых машин на узлах с минимально выделенным CPU.
vm.deployment.planner
- Предлагаемое значение: FirstFitPlanner
- Планировщик размещения новых виртуальных машин на узлах. Размещает машины на первом подходящем узле, согласно стратегии отбора (см. предыдущий пункт). Существуют и другие планировщики, которые вы можете рассмотреть к применению, например,
UserDispersingPlanner
,UserConcentratedPodPlanner
. Для случайного распределения машин используетсяFirstFitPlanner
с соответствующей стратегией.
vm.disk.throttling.*
Группа параметров задает ограничения IO и пропускной способности дисков по-умолчанию. Рекомендуем использовать как механизм для защиты от ошибок конфигурирования, связанного с человеческим фактором.
vm.network.throttling.rate
Параметр задает ограничение по сетевой пропускной способности по-умолчанию. Рекомендуем использовать как механизм для защиты от ошибок конфигурирования, связанного с человеческим фактором.
vmsnapshot.expire.interval
- Предлагаемое значение: -1
- Через какое время полный снимок машины становится недействительным и автоматически удалится. По-умолчанию, никогда.
vmsnapshot.max
- Предлагаемое значение: 1
- Какое максимальное количество снимков пользователь может создать для машины. В данном случае, значение установлено в 1, то есть, для создания нового снимка машины пользователь должен удалить предыдущий.
Вид Hypervisor Capabilities
KVM:default
- Max Guest Limit: 150
- Современные узлы позволяют запускать множетсво виртуальных машин. Значение по-умолчанию консервативно (50), то есть, даже если на узле есть доступные ресурсы, больше 50 машин на нем не запустится. Если вы используете узлы с 128-256 GB RAM, то Max Guest Limit = 150-200 вполне разумное значение.
Поскольку каждое облако имеет индивидуальный дизайн и свойства, то другие параметры могут быть важными для вас, однако, у нас есть информация только по тем параметрам, с которыми мы имеем дело в наших проектах. Если у вас имеются другие важные параметры, о которых вы хотите что-то сообщить, пожалуйста поделитесь с нами по e-mail: info (at) bitworks.software и мы добавим их в статью.