PowerCLI. Heartbeat Datastore

PowerCLI. Heartbeat Datastore

В прошлой статье PowerCLI. Использование API. Get-VIObjectByVIView я исследовал объекты, применяя Get-VIObjectByVIView, а тажке Get-Member с фильтром -MemberType Properties.
И обещал рассмотреть командлет получения хранилищ, используемых для Heartbeat Datastore.
Получить информацию о том, какие хранилища используются для Heartbeat Datastore можно с помощью данных равнозначных командлетов:
$Cluster = Get-Cluster -Name Cluster_Name
$cluster.ExtensionData.RetrieveDasAdvancedRuntimeInfo().HeartbeatDatastoreInfo.Datastore | Get-VIObjectByVIView
$cluster = get-view -ViewType ClusterComputeResource -filter @{«Name»=»Cluster_Name»}
$cluster.Configuration.DasConfig.HeartbeatDatastore | Get-VIObjectByVIView
Ниже приведено немного теории про Heartbeat Datastore и описан процесс получения командлетов.
Получить искомое можно с помощью Get-Member с фильтром -MemberType Method, а также с помощью Get-View.

Heartbeat Datastore.
Когда master хост в vSphere HA не может связаться со slave хостом по сети управления, master использует Heartbeat Datastore  чтобы определить тип сбоя:
— выход из строя. Master не может получить сигналов доступности от хоста ни по сети управления, ни по сети хранилищ;
— разделение сети. Master видит хосты через Heartbeat Datastores, но не видит хосты через сеть управления. В этом случае в каждом сегменте у нас получится два хоста Master;
— изоляция хоста. Хост полностью выпадает из сети управления, не может пинговать Isolation Address, но видит хранилища (а значит не вышел из строя).
vCenter Server выбирает предпочтительный набор хранилищ для Heartbeat Datastore. Этот выбор делается исходя из максимального количества хостов, которые имеют доступ к хранилищу. По умолчанию хранилища два, а максимальное допустимое значение — пять. vSphere HA создает каталог в корне каждого хранилища, который используется как для Heartbeat Datastore, так и для сохранения набора защищенных виртуальных машин. Имя каталога — .vSphere-HA. Только master может читать и писать в этот каталог. Дисковое пространство, используемое vSphere HA, зависит от нескольких факторов, включая версию VMFS, и количество хостов, использующих хранилище для Heartbeat Datastore. С VMFS3 максимально может использоваться приблизительно 2 ГБ, а обычно используется  приблизительно 3 МБ. С VMFS5 максимальный и обычный размер составляет приблизительно 3 МБ.
Virtual SAN не может использоваться для Heartbeat Datastores.
В целом же хоть настройка Heartbeat Datastore и не применяется при обычном администрировании, но для продвинутого использования как VMware vSphere вообще, так и vSphere HA в частности понимание работы данного механизма просто необходимо.
А теперь посмотрим на процесс их создания

Итак, выполним

 $Cluster.ExtensionData | Get-Member -MemberType Method

Мы видим RetrieveDasAdvancedRuntimeInfo, что отражает конфигурацию vSphere HA. Значит этот метод то нам и нужен.
Но работа с методами имеет одну особенность — после их имен всегда следует пара скобок. Некоторые методы принимают аргументы, которые указываются в скобках, отделенные запятыми. Другим методам аргументы не нужны, поэтому скобки пустые, но они обязательно должны быть.

Выполним
$cluster.ExtensionData.RetrieveDasAdvancedRuntimeInfo()

Здесь мы видим поле (объект) HeartbeatDatastoreInfo.
Набираем последовательно

$cluster.ExtensionData.RetrieveDasAdvancedRuntimeInfo().HeartbeatDatastoreInfo
$cluster.ExtensionData.RetrieveDasAdvancedRuntimeInfo().HeartbeatDatastoreInfo.Datastore

Теперь нам даже нет необходимости исследовать данный объект, по виду вывода мы предполагаем что это объект API. Значит используем командлет Get-VIObjectByVIView. Поскольку в данном случае мы получаем не дочерний объект, а производим конвертацию объекта, то не забываем использовать знак конвейера.

$cluster.ExtensionData.RetrieveDasAdvancedRuntimeInfo().HeartbeatDatastoreInfo.Datastore | Get-VIObjectByVIView


Теперь посмотрим как создать командлет на get-view.

Мы можем воспользоваться конструкцией

($cluster | Get-View)

Либо присвоить нашей переменной $cluster новый объект

$cluster = get-view -ViewType ClusterComputeResource -filter @{«Name»=»ИМЯ»}

Используем второй вариант.
Теперь выполним последовательно

$cluster | Get-Member -MemberType Method
$cluster.RetrieveDasAdvancedRuntimeInfo()
$cluster.RetrieveDasAdvancedRuntimeInfo().HeartbeatDatastoreInfo
$cluster.RetrieveDasAdvancedRuntimeInfo().HeartbeatDatastoreInfo.Datastore
$cluster.RetrieveDasAdvancedRuntimeInfo().HeartbeatDatastoreInfo.Datastore | Get-VIObjectByVIView

Вывод идентичный.
Итак, мы изучили и закрепили использование при работе с PowerCLI методов.
Посмотрим как еще можно получить информацию о HeartbeatDatastore.
Теперь мы можем одинаково успешно работать с API двумя способами, но в данный момент в переменной $cluster у нас объект get-view, да и не забываем про рекомендацию, поэтому вводим

$cluster | Get-Member -MemberType Property

Видим Configuration

$cluster.Configuration

А вот и DasConfig

$cluster.Configuration.DasConfig
$cluster.Configuration.DasConfig.HeartbeatDatastore
$cluster.Configuration.DasConfig.HeartbeatDatastore | Get-VIObjectByVIView

Снова видим интересующую нас информацию.

Используя разные способы, и не ограничивая себя чем-то одним, мы существенно повышаем наши возможности и увеличиваем гибкость при использовании PowerCLI для администрирования нашей виртуальной инфраструктуры VMware vSphere.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *