О некоторых полезных командах в Nutanix aCli

Пожалуй, каждый администратор систем Nutanix знает про командный интерфейс aCli (Acropolis Command Line Interface), который позволяет выполнять ряд задач по управлению кластером, а также предоставляет довольно неплохие возможности по автоматизации и ускорению некоторых рутинных процессов.

Несмотря на то, что основным инструментом администрирования является интерфейс Prism Element и Prism Central, в данной заметке хочется обратить внимание на некоторые интересные команды aCli, которые позволяют выполнять операции, зачастую недоступны через Web (но это не точно).

Получить доступ к aCli просто. Достаточно подключиться к любой CVM из кластера и ввести команду acli. Зеленое приглашение <acropolis> сообщит о том, что мы на месте. Интерфейс поддерживает автодополнение с помощью клавиши Tab и крайне облегчает процесс ввода команд.

Начнем с самого важного – справка

Справка в aCli вызывается достаточно просто – командой help. И, если понимать, как ей пользоваться, можно разобраться во всех доступных командах интерфейса.

Введя команду, мы получим отправную точку в виде Namespaces:

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

Если ввести help namespace_name, мы получим справку по доступному для данного Namespace списку команд.

Посмотрим доступный список команд для Namespace с названием vm:

Посмотреть, что делает любая из команд? – легко.

help namespace_name.command

Узнаем, какую операцию выполняет команда get из Namespace vm:

Таким образом мы можем посмотреть справку по всем командам из всех Namespaces.

Теперь, разобравшись со справкой, я перейду непосредственно к тому, ради чего все и начиналось – некоторым интересным командам.

1. Получить список всех снапшотов виртуальных машин в кластере;

snapshot.list:

Одной командой мы получаем список всех снапшотов. С помощью команды snapshot.get span_name можно получить детальную информацию о снимке, а snapshot.delete позволяет его удалить.

2. Подать trunk на сетевой интерфейс виртуальной машины;

Данная необходимость (по крайней мере у меня) возникает не так часто, но иногда может и понадобиться.

Настраивается транкинг в рамках сетевого интерфейса виртуальной машины. Имеется возможность либо создать новый интерфейс с поддержкой vlan trunking, либо перевести существующий интерфейс из режима Access в режим Trunking.

Создать новый интерфейс можно командой vm.nic_create vm_name network=ntnx_network_name vlan_mode=kTrunked trunked_networks=vlan_list ( список через запятую)

Основные параметры в данном случае – vlan_mode, которым мы сообщаем, что интерфейс будет работать в режиме trunk, а не access, а также trunked_networks – в котором через запятую мы перечисляем номера vlan с которыми будет оперировать сетевой интерфейс виртуальной машины.

Посмотрим, как выглядит настроенный сетевой интерфейс с помощью vm.nic_get:

Обратите внимание, что выбор сетевого адаптера виртуальной машины происходит по mac адресу.

В случае, если необходимо внести изменения в сетевой интерфейс, можно использовать vm.nic_update:

3. Выбрать сетевой интерфейс E1000 вместо стандартного virtio;

Один раз мне пришлось столкнуться с подобной проблемой в очень старой версии гостевой операционной системы, которая упорно не хотела определять стандартный сетевой интерфейс virtio.

В интерфейсе Prism Element отсутствует возможность выбора типа сетевого интерфейса, однако, данная возможность присутствует в aCli.

Для решения данной задачи может помочь параметр model, который необходимо указать в значении e1000 при создании сетевого интерфейса:

При запросе информации по сетевому интерфейсу виртуальной машины, можно увидеть новое поле model:

В гостевой операционной системе у нас ожидаемо появился новый сетевой интерфейс:

4. Настройка VM-VM anti-affinity;

Достаточно частая задача при развертывании отказоустойчивых систем. Настройка anti-affinity позволяет ограничить одномоментное пребывание указанных в правиле виртуальных машин на одном и том же хосте, что позволит исключить одновременное пропадание виртуальных машин в случае выхода из строя гипервизора.

У меня имеется два DNS сервера, и мне хотелось бы избежать ситуации, при которой обе машины расположатся на одном сервере, и могут быть одномоментно потеряны:

Включение antiaffinity состоит из трех шагов:

Создание группы для VM, которые не должны находиться рядом, с помощью vm_group.create group_name:

Добавление виртуальных машин в группу. vm_group.add_vms group_name vm_list=vms_name (через запятую):

Третьим шагом мы включаем anti-affinity для всех виртуальных машин в группе. vm_group.antiaffinity_set group_name:

После активации правила, ADS (Acropolis Dynamic Scheduler) исправит ситуацию:

Требуемый результат достигнут:

Интересный факт: Если в последующем выполнить ручную миграцию виртуальных машин на один хост уже после настройки правил, ADS также разнесет машины по разным хостам при следующем своем запуске.

Кстати, командой ads.update enable=false, можно остановить работу планировщика (только непонятно зачем), а командой ads.update enable=true запустить обратно.

5. Перевод хоста в режим обслуживания (Maintenance Mode);

Если необходимо вывести хост на обслуживание, например, в рамках работ по модернизации, или в процессе решения каких-либо проблем с оборудованием, нам также может помочь aCli.

Для перевода гипервизора в Maintenance Mode используется команда host.enter_maintenance_mode host_ip:

В рамках данной операции, с гипервизора в автоматическом режиме будут мигрированы все виртуальные машины (кроме CVM, конечно), а также будет выставлен флаг Schedulable = False, который будет препятствовать запуску других в VM на данном хосту.

В интерфейсе Prism можно будет увидеть статус перехода в режим обслуживания, а также виртуальные машины, которые были мигрированы:

Команда host.list выведет текущий список хостов в кластере, а также их состояние:

В списке хостов мы можем увидеть столбец Schedulable и хост с меткой False. При попытке мигрировать машину на такой хост, система откажет, что логично:

Выводится хост из режима обслуживания командой host.exit_maintenance_mode host_ip.

6. Бонус. Полезная команда по монтированию и отмонтированию образа CD у виртуальной машины;

Увидел в чате подобный вопрос и не смог удержаться, чтобы не зафиксировать 🙂

Подключим образ CD:

vm.disk_update vm_name clone_from_image=image_name disk_addr=ide.0

Легким движением руки образ CentOS монтируется в CD-ROM виртуальной машины.

Теперь отключаем:

vm.disk_update vm_name disk_addr=ide.0 empty=true

В качестве заключения:

aCli – крайне удобный интерфейс по управлению некоторыми элементами кластера, обладает хорошей справкой и навигацией, а в сочетании со скриптами позволяет ускорять и автоматизировать некоторые рутинные процессы.

Если нужно решить какую-то задачу, при этом в интерфейсе Prism Element нет ничего похожего, вполне возможно, что решение есть в aCli.

Leave a Reply

Your email address will not be published. Required fields are marked *