Мы ранее уже писали о политиках балансировки и о том, как их настроить через скрипт. Но к сожалению, с течением времени часть хостов меняются, хранилища также меняются на другие и актуальность этих настроек может быть потеряна.
К примеру, я точно помню, что настраивал Round Robin для своего кластера и своей СХД HP EVA пару лет назад.
Однако, текущий вывод скрипта по балансировке показывает, что это далеко не так:
Get-Cluster cluster| Get-VMHost | Get-ScsiLun -LunType disk | group multipathpolicy
1 2 3 4 |
Count Name Group ----- ---- ----- 7 RoundRobin { 93 MostRecentlyUsed { |
А вот так 🙂
Поэтому родилась идея запускать задание, которое будет выполняться раз в неделю и выставлять политику балансировки для дисковых устройств.
Если рассмотреть вывод команды Get-ScsiLun -LunType disk | fl
, то там есть два параметра, к которым можно привязаться: это vendor и model дискового устройства. Соответственно, если вы используете несколько СХД с различными рекомендуемыми настройками, то вам потребуется настраивать хитрую логику работы скрипта. На текущий момент я использую в качестве СХД HP 3Par7200 и HP EVA 6000. С обеими СХД рекомендуется использовать политику балансировки Round Robin.
EVA 6000:
Vendor : HP
Model : HSV200
3PAR:
Vendor : 3PARdata
Model : VV
Нам остается запрограммировать логику скрипта, меняющую политику балансировки для дискового устройства с такими параметрами.
(get-date -format dd.MM.yyyy) | out-file C:\scripts\multipath\log.txt -append -encoding unicode
Данный скрипт помимо смены режима балансировки еще и сделает пометку о том, какое дисковое устройство было изменено и когда.
connect-viserver vCenter
Get-Cluster Cluster| Get-VMHost | Get-ScsiLun -LunType disk | %{if(($_.multipathpolicy -eq "MostRecentlyUsed")-and((($_.vendor -eq "HP")-and($_.model -match "HSV200"))-or(($_.vendor -eq "3PARdata")-and($_.model -match "VV")))){
$_.runtimename | out-file C:\scripts\multipath\log.txt -append -encoding unicode
set-ScsiLun -scsilun $_ -MultipathPolicy RoundRobin
}
}
Теперь этот скрипт готов для запуска в виде задания.
Создаем задание и указываем в строке для запуска следующую команду:
C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -psc "C:\Program Files\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -c ". \"C:\scripts\multipath.ps1\""
Задание обязательно запускайте от имени той учетной записи, что имеет права на смену политики балансировки.
Напоследок повторим скрипт, анализирующий тип балансировки:
1 2 3 |
Count Name Group ----- ---- ----- 100 RoundRobin { |
А вроде же можно задавать правило дефолтное для определенного устройства/вендора с политикой балансировки по умолчанию как раз для таких случаев. Например:
esxcli storage nmp satp set –s VMW_SATP_CX –P VMW_PSP_RR
Можно, но эту же настройку придется повторить на всех серверах. И при добавлении нового сервера ставить себе галочку “ага, не забыть выполнить вон тот скрипт конфигурации”…
А еще для HP EVA в “HP ENTERPRISE VIRTUAL ARRAY FAMILY WITH VMWARE VSPHERE 4.0 , 4.1 AND 5.0 CONFIGURATION BEST PRACTICES” (http://www.vmware.com/files/pdf/techpaper/hp-enterprise-virtual-array-family-vsphere-configuration.pdf, где-тго был такой же для 5.5 вроде бы, сходу не нашел..) есть:
esxcli nmp roundrobin setconfig -t iops -I 1 -d naa.xxxxxxxxx
Используете?
И еще, у нас MSCS кластер с RR на HP EVA при переключении дисков с узла на узел (с хоста на хост) не всегда снимал резервацию SCSI-3 PR, и ресурс не поднимался.
Думал ставить IOPS=1, но командлет воспринимать не захотел.
Спорная рекомендация.
Лучшие практики считают, что настройка “маст хэв”. Duncan Epping – что нет или надо еще подумать
http://www.yellow-bricks.com/2010/03/30/whats-the-point-of-setting-iops1/
Да и вообще, положа руку на HCL, EVA 6000 не поддерживается с VMware vSphere 5.0 🙂
Поэтому я решил на эту настройку забить…
С кластером все неоднозначно.
До относительно недавнего времени для кластеров была рекомендация делать MRU.
http://kb.vmware.com/kb/2052238
In vSphere 5.5, round robin policy is now supported for disks engaged in MSCS clustering.
However, these restrictions apply:
•Supported on Windows 2008, Windows 2012 and Windows 2012 R2 server guest operating systems only.
•Supported on Cluster Across Boxes (CAB) and N+1 configurations (виртуальные машины на разных хостах). Cluster in a box uses Virtual Reservations.
•Shared disk (Quorum OR Data) must be provisioned to guest in pass-through RDM mode only.
•Windows 2012 and Windows 2012 R2 cluster validation may fail with “resource busy” error while using PSP_RR. This error can be ignored.
•Windows 2012 and Windows 2012 R2 cluster validation may fail with «resource busy» error while using PSP_RR. This error can be ignored.
Вот этого пункта не помню.. или не было его там тогда, когда ставили и настраивали MSCS на VMware. Видимо из-за этого же и при переключении ресурсов (а не только при cluster validate) проиходит ошибка. Поэтому так и остался MRU. Пробовали прорваться через кейс, но, как Вы правильно заметили, HCL дал от ворот поворот.
(Из-за этого же кстати закрыли долгий кейс в полгода. Когда VMware подключала разные уровни поддержки, и добрались до глубинных проблем внутри, на последнем уровне отметили – о, а вы ж не в HCL. И хотя поведение ESXi не совсем правильное, кейс закрыли и предложили открыть Feature Request… пока руки до него не дошли, Но это совсем другая история :))
И да, за ссылку iops=1 спасибо, чуть позже почитаю 🙂
$esxcli.storage.nmp.psp.roundrobin.deviceconfig.set($null,$null,$device.CanonicalName,1,”iops”,$null)
Алексей, простите, но не врубился 🙂
esxcli storage nmp satp rule add -s “VMW_SATP_ALUA” -P “VMW_PSP_RR” –O “iops=1″ -c “tpgs_on” -V
“3PARdata” -M “VV” -e “HPE 3PAR Custom Rule”
Точная команда по включению Round Robin на хосте, меняющая тип балансировки для вновь подключаемых устройств. Уже подключенные – только руками или после перезагрузки.