пятница, 2 февраля 2018 г.

PowerCLI. Heartbeat Datastore

В прошлой статье PowerCLI. Использование API. Get-VIObjectByVIView я исследовал объекты, применяя Get-VIObjectByVIView, а тажке Get-Member с фильтром -MemberType Properties.
И обещал рассмотреть командлет получения хранилищ, используемых для Heartbeat Datastore.

Поэтому на этот раз все же рассмотрю вопрос с 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.

Комментариев нет:

Отправить комментарий