Создание виртуальных серверов с помощью VMControl REST API

Настройка виртуальных дисков и сетей

Создание логических разделов в консоли управления оборудованием (IBM Hardware Management Console — HMC) зачастую отнимает много времени и, безусловно, требует определенного навыка работы с технологией PowerVM. Используя удаленное выполнение команд на HMC и вызовы REST Web-сервисов VMControl, вы можете программным образом создавать логические разделы и распределять виртуальные ресурсы, упрощая тем самым управление виртуализацией.

Хосе Моисес, технический консультант, IBM

Хосе Моисес Ромо Корона (Jose Moises Romo Corona) — технический консультант отдела Solutions Enablement группы Systems and Technology Group IBM. Работает в IBM около пяти лет. Окончил университет Universidad del Valle de Atemajac по специальности «информатика и электроника». Сферы интересов включают разработку Web 2.0, Linux и администрирование систем IBM POWER.



02.10.2012

Обзор

IBM Systems Director предлагает набор готовых интерфейсов, доступных из любого языка, имеющего библиотеку клиента HTTP, например, Java, Perl, C# и т.п. Эти интерфейсы представляют собой Web-сервисы, опирающиеся на клиент-серверную архитектуру REST, причем каждый Web-сервис представляется в IBM Systems Director в виде ресурса. Каждый ресурс имеет привязанный к нему URI (унифицированный идентификатор ресурса). URI ресурса, метод HTTP, возможные параметры запроса и тело HTTP-запроса, отправляемые серверу IBM Systems Director, используются для определения сервиса, к которому осуществляется доступ (он же REST API), и операции, которую этот сервис должен выполнить.

VMControl — это менеджер с расширенными возможностями, поддерживающий Web-сервисы REST в IBM Systems Director. На момент написания этой статьи текущей версией VMControl была 2.3.1, которая, к сожалению, несколько ограниченна в том, что касается создания дисков в процессе создания виртуальных серверов. Версия 2.3.1 не поддерживает программного создания виртуальных дисков или логических томов, но это неудобство можно обойти: можно создавать виртуальные диски, используя удаленное выполнение команд в консоли управления оборудованием (IBM Hardware Management Console — HMC) и добавляя виртуальные диски и сети через REST Web-сервисы VMControl.

Разрешение удаленного выполнения команд на HMC

Интерфейс командной строки предоставляет простой метод выполнения простых и сложных операций и позволяет использовать команды HMC в скриптах для автоматизации общих операций управления системой. Чтобы разрешить и настроить удаленное исполнение команд на HCM, используйте информацию, приведенную в wiki-ресурсе по командной строке HMC.

Настроив командную строку для удаленного выполнения команд, вы сможете выполнять команды HMC из клиента SSH. Листинг 1 показывает, как подавать команды виртуального сервера ввода/вывода (VIOS). Позже мы используем команды VIOS для создания пула хранения и логических томов.

Листинг 1. Использование удаленной командной строки HCM
$ssh hscroot@<хост_hmc> viosvrcmd -m <Система_POWER> 
    -p <имя_vios> -c '"<команда_vios>"'

Здесь:
<хост_hmc> имя или IP-адрес хоста HMC
<Система_POWER> имя системы POWER, например, Server-9117-MMA-SN10ED68E
<имя_vios> имя VIOS, работающего в вашей системе POWER
<команда_vios> команда, которую вы хотите выполнить в VIOS

Если команда VIOS содержит аргументы, важно заключить ее в одинарные кавычки '; в противном случае вы получите примерно такое сообщение об ошибке:
"Указан недопустимый параметр. Параметры -virtual недопустимы. Проверьте синтаксис и повторите команду".

Создание пула хранения

Пул логических томов представляет собой набор из одного или нескольких физических томов. Для создания пула хранения должны быть выполнены следующие требования:

  • HMC должна иметь версию 7 и редакцию 3.4.2 или старше.
  • VIOS должен иметь версию 2.1.1.0 или старше.
  • Между HMC и VIOS должно существовать соединение для мониторинга ресурсов и управления.

Для создания пула хранения, основанного на группе томов, в первую очередь нужно знать, какие физические тома вашей системы свободны. Для получения списка свободных физических томов можно использовать VMControl REST API, как показано в листинге 2.

Листинг 2. Использование VMControl REST API для получения параметров настройки
VMControl/hosts/{hostOID}/virtualServers/customization

Этот API показывает все доступные параметры настройки при создании нового виртуального сервера на данном хосте. Для определения идентификатора объекта (OID) вашего хоста можно использовать API, показанный в листинге 3.

Листинг 3. VMControl REST API для определения имеющихся хостов
VMControl/hosts/

Передав запрос GET в API, показанный в листинге 2, вы получите перечень доступных физических томов в свойстве diskphysicalvolumes, как показано на рисунке 1.

Рисунок 1. Физические тома, доступные на указанном хосте
Physical volumes available in the host system

Для каждого физического тома нужно знать его идентификатор (id) и размер. Размер указан внутри объекта property. Вам нужно решить, какой физический том будет использоваться, а затем удаленно выполнить команду на HMC из клиентского приложения REST для создания пула хранения. В листинге 4 показана удаленно выполняемая команда VIOS.

Листинг 4. Удаленное создание пула хранения
$ssh hscroot@<хост_hmc> viosvrcmd -m <хост-система> 
    -p <имя_vios> -c '"mksp -f <имя_пула_хранения> 
    <физический_диск>"'

Обратите внимание, что из идентификатора физического тома нужно взять только имя, опустив текст ":vios".

Создание логического тома

Логический том будет представлен в VMControl в виде виртуального диска, и когда пул хранения будет создан, вы сможете создать любое требуемое число дисков. Для удаленного создания виртуального диска можно использовать команду, показанную в листинге 5.

Листинг 5. Удаленное создание виртуального диска
$ssh hscroot@<хост_hmc> viosvrcmd -m <хост-система> 
    -p <имя_vios> -c '"mklv -lv <имя_диска> 
    <имя_пула_хранения> <размер>"'

Видимые VMControl виртуальные ресурсы

Чтобы добавить пул хранения и виртуальные диски в IBM Systems Director как ресурсы, нужно передать задание на составление перечня ресурсов, указав в качестве целевой системы хост-систему POWER. Для передачи POST-запроса на создание перечня ресурсов используется API, как показано в листинге 9:

Листинг 6. Задание на составление перечня ресурсов
resources/{ObjectType}/{OID}/inventoryprofiles/{ProfileID}/inventory/jobs

Где:

{ObjectType} = Сервер
{OID} = Идентификатор объекта сервера
{ProfileID} = Идентификатор профиля перечня ресурсов. Можно использовать стандартный идентификатор всех ресурсов: default.All

Содержание запроса, которое можно использовать с API в листинге 6, показано в листинге 7:

Листинг 7. Содержание задания на составление перечня ресурсов
{
  "DisplayName": "Задание на составление перечня моих ресурсов",
}

Состояние и ход выполнения задания на составление перечня ресурсов можно контролировать с помощью имеющегося в IBM Systems Director провайдера Java Messaging Service (JMS), в роли которого выступает Apache ActiveMQ. IBM Systems Director использует этого провайдера для передачи событий и других важных сообщений заинтересованным клиентским приложениям. Обзор JMS и примеры можно найти в IBM Systems Management SDK. Для этого вам нужно подписать своего клиента на тему Director.jobs.activation и проверить состояние и ход выполнения задания.

Для мониторинга событий и получения информации о доступности в IBM Systems Director новых ресурсов, таких как пулы хранения и виртуальные диски, можно создать новую подписку на тему JMS. Используйте тему Director.manageableelementservice.manageableelement. Свойства сообщения, полученного при добавлении в IBM Systems Director нового управляемого элемента, показаны в листинге 8.

Листинг 8. Пример свойств события добавления управляемого элемента
properties = {EventType=CREATED_EVENT, OID=91256, 
ObjectType=StorageVolume, Version=1.0.0}

Значение свойства ObjectType означает тип вновь добавленного ресурса. Если это пул хранения, ObjectType принимает значение StoragePool. В случае виртуальных дисков, созданных как логические тома в разделе VIOS, ObjectType принимает значение StorageVolume.

Если задание на составление перечня ресурсов завершено без ошибок и управляемые элементы добавлены, вы можете убедиться в том, что новые ресурсы доступны для VMControl в IBM Systems Director, используя тот же VMControl REST API, показанный в листинге 2. На рисунке 2 показан набор виртуальных дисков, отображаемый внутри свойства disks.

Рисунок 2. Виртуальные диски, доступные в хост-системе
Virtual disks available in the host system

В объекте property каждого виртуального диска вы найдете дополнительную информацию: размер (МБ), пул хранения и сервер хранения. В данном случае в роли сервера хранения выступает VIOS. Для привязки дисков к новому виртуальному серверу используется идентификатор виртуального диска id.

Создание нового виртуального сервера

Листинг 9. Использование VMControl REST API для создания виртуального сервера
/VMControl/hosts/{hostOID}/virtualServers

POST-запросу необходимы данные объекта JSON, в которых вы указываете параметры виртуального сервера, как объясняется в статье IBM Systems Director VMControl SDK.

В листинге 10 показан пример JSON-данных, содержащих следующие параметры:

  • Тип виртуального сервера IBM Power - AIXLINUX
  • Имя виртуального сервера vserver
  • Режим ЦП SHARED
  • Число ЦП 2
  • Объем памяти 2048
  • Единицы измерения объема памяти MB
  • Диски vmdisk1:rootvg_vm:vios;vmdisk2:rootvg_vm:vios. Это означает, что и vmdisk1, и vmdisk2 будут привязаны к виртуальному серверу.
  • Сети, значение 1. Это означает, что к виртуальному адаптеру Ethernet будет привязана VLAN с идентификатором 1.
  • Сети, значение 80. Это означает, что к виртуальному адаптеру Ethernet будет привязана VLAN с идентификатором 80.
Листинг 10. Пример JSON-запроса на создание виртуального сервера
{
   "virtualServer":{
      "properties":[
	     {
            "name":"gos", "value":"IBM Power - AIXLINUX"
         },
		 {
            "name":"name", "value":"vserver"
         },
		 {
            "name":"cpumode", "value":"SHARED"           
         },
		 {
             "name":"cpushared", "value":2
         },
		 {
            "name":"memsize", "value":2048
         },
		 {
            "name":"memunitsize", "value":"MB"
         },
		 {
            "name":"disks", "value":"vmdisk1:rootvg_vm:vios;vmdisk2:rootvg_vm:vios"
         },
		 {
            "name":"networks", "value":"1"
         },
		 {
            "name":"networks", "value":"80"
         }

      ]
   }
}

На рисунке 3 показана передача запроса в API в листинге 9, выполняемая с помощью плагина Poster для FireFox. Poster позволяет непосредственно взаимодействовать с REST API и просматривать тело ответного сообщения и информацию о состоянии. Вы можете передать запрос на любую операцию, поддерживаемую в REST API, не написав ни единой строчки кода; при этом вы можете передать такой же запрос, используя язык программирования с библиотекой клиента HTTP, например Java.

Рисунок 3. Создание виртуального сервера с помощью VMControl REST API
Create virtual server with VMControl REST API

Обратите внимание, что в момент передачи запроса активируется задание, сообщающее вам о состоянии и ходе исполнения операции Create Virtual Server (Создание виртуального сервера). Если все пройдет хорошо, вы увидите новый виртуальный сервер в VMControl. Для проверки состояния задания можно передать в API запрос GET, как показано в листинге 11.

Листинг 11. Состояние активизации задания в REST API
jobs/{jobID}/activations/{activationID}

Заменив значения, возвращенные в данном примере в ответ на запрос create virtual server, мы получим jobID = 36 и activationID = 12. Когда состояние выполнения задания примет значение Complete (завершено), а ход выполнения достигнет 100%, вы увидите сообщение, показанное на рисунке 4.

Рисунок 4. Подробная информация об активации задания
Job activation details

На рисунке 4 показано сообщение, которое выводится при выполнении задания на 50%: "Запрос на создание виртуального сервера DNZVMP509I для хоста Server-9117-MMA-SN10ED68E завершен успешно. Новый виртуальный сервер может отобразиться в Systems Director не сразу. Отображение нового виртуального сервера может занять несколько минут". Когда активация задания завершится, вы увидите примерно такое сообщение: "Состояние задания клиента сервера {имя_хоста} изменено на "Завершено".

Еще раз рекомендуем использовать JMS для получения сообщений, генерируемых при обновлении состояния задания или при создании, удалении или изменении нового управляемого элемента. В данном случае управляемым элементом является вновь созданный виртуальный сервер.

Создание виртуального сервера программным способом

Исходный код нескольких хороших примеров вызова IBM Systems Director REST API приведен на сайте IBM Systems Management SDK. В листинге 12 показан пример передачи POST-запроса на создание виртуального сервера на языке Java.

Листинг 12. Пример вызова VMControl REST API на языке Java
1)public String ceateVirtualServer(){
2)		String METHODNAME = "ceateVirtualServer";
3)		String requestPayload = "сюда вставляются данные JSON из листинга 10"; 

4)      String uri = sdc.getConnectionContextURI() + 
                "/VMControl/hosts/48098/virtualServers";		
5)		RESTUtilities.log(Level.INFO, logger, CLASSNAME, METHODNAME, 
		"requestPayload: " + requestPayload);
6)	RESTUtilities.log(Level.INFO, logger, CLASSNAME, METHODNAME, 
        "Вызываемый (POST) URI: " + uri);        
7)        try{
8)        	HttpsURLConnection dataConnection = sdc.processRequest(uri, 
        	"POST", requestPayload);
9)            int rc = dataConnection.getResponseCode();
10)            if (rc != 201) {
11)             RESTUtilities.log(Level.SEVERE, logger, CLASSNAME, METHODNAME, 
                "ОШИБКА: Возвращен неожиданный код: Ожидался 201, но получен" + rc);
12)              return "-1";
13)         }
14)         String response = RESTUtilities.getResponseString(dataConnection);
15)     }catch(Exception e){
16)	    	e.printStackTrace();
17)     }		
18)	return "0";
19)	}

Строка 14 листинга 12 дает вам URL, необходимый для проверки состояния и хода исполнения созданного задания, точно так же, как мы получали его на рисунке 3.

Проверка конфигурации виртуального сервера

Корректность сохранения настроек виртуального сервера в IBM Systems Director можно проверить с помощью следующей процедуры:

  1. Перейдите в меню System Configuration > VMControl > Virtual Servers and Hosts(Конфигурация системы > VMControl > Виртуальные серверы и хосты)
  2. Выберите новый виртуальный сервер, выберите в контекстном меню (правая кнопка мыши) System Configuration > Edit Virtual Server (Конфигурация системы > Редактирование виртуального сервера), затем выберите Virtual Disk (Виртуальный диск) и убедитесь в том, что выбраны назначенные виртуальные диски, как показано на рисунке 5.
  3. Выберите Network (Сеть) и убедитесь, что назначенные сети отображаются, как показано на рисунке 6.

На рисунке 5 показаны назначенные виртуальному серверу виртуальные диски.

Рисунок 5. Виртуальные диски, назначенные виртуальному серверу
Virtual disks assigned to virtual server

Как видно на рисунке 5, виртуальные диски, созданные удаленно в разделе VIOS через HMC, корректно привязаны к виртуальному серверу. Кроме того, здесь отображаются и все другие неназначенные виртуальные диски.

После создания виртуального сервера VMControl автоматически привязывает к разделу VIOS виртуальный адаптер SCSI. Перезагрузка при этом не требуется.

На рисунке 6 показаны сети, назначенные виртуальному серверу. Эти сети были заранее созданы в разделе VIOS, который управляет аппаратными ресурсами виртуальных серверов.

Рисунок 6. Сети, назначенные виртуальному серверу
Networks assigned to virtual server

На рисунке 6 показаны две сети с уникальными идентификаторами. Эти идентификаторы представляют собой внутренние идентификаторы виртуальных сетей (VLAN), которые используются для взаимодействия с виртуальными серверами.

Вызов команд HMC из клиента REST

Этот документ представляет собой краткое руководство по созданию виртуального сервера с помощью VMControl REST API. Вы можете вызывать свои скрипты для удаленного выполнения команд HMC из клиентского приложения REST (см. разделы Создание пула хранения и Создание логического тома). Например, если вы используете код Java, а ваш клиент работает в системе Linux/Unix, вы можете вызвать скрипты HMC так, как показано в листинге 13.

Листинг 13. Пример вызова системных команд на языке Java
1) String s = null;
        try{
2) Process p = 
   Runtime.getRuntime().exec("ssh hscroot@myhmc.austin.ibm.com viosvrcmd" +
     		" -m Server-9117-MMA-SN10ED68E -p myvios" +
     		" -c '\"mklv -lv vmdisk2 rootvg_vm 10G\"'");
            
3)        BufferedReader stdInput = new BufferedReader(new
        InputStreamReader(p.getInputStream()));

4)        BufferedReader stdError = new BufferedReader(new 
        InputStreamReader(p.getErrorStream()));
        // чтение выходного значения команды
5)        System.out.println("Стандартное выходное значение команды:\n");
6)        while((s = stdInput.readLine()) != null) {
7)             System.out.println(s);
8)        }            
        // чтение ошибок выполненной команды
9)        System.out.println("Стандартная ошибка команды (если таковая произошла):\n");
10)        while ((s = stdError.readLine()) != null) {
11)            System.out.println(s);
12)        }            
13)           System.exit(0);
14)        }
15)  catch (IOException e) {
16)       System.out.println("произошла ошибка – это все, что я знаю: ");
17)       e.printStackTrace();
18)       System.exit(-1);
19) }

Заключение

b) Приведенные в этом документе рекомендации можно использовать для создания пулов хранения и виртуальных дисков в процессе создания виртуального сервера с помощью VMControl 2.3.1. Важно отметить, что виртуальному серверу можно назначить только полный размер диска, и этот же процесс можно использовать для назначения физических дисков. В этом случае вам достаточно извлечь идентификатор физического диска из ответа REST API, как показано в листинге 2.

В декабре 2011 года были выпущены новые версии IBM Systems Director 6.3 и VMControl 2.4, позволяющие добавлять существующий диск и тома с помощью REST API, однако они не поддерживают создание нового диска и привязку его к существующему виртуальному серверу. Вы можете создать виртуальный диск за пределами VMControl, придерживаясь процедуры, описанной в настоящем руководстве, а затем отредактировать существующий виртуальный сервер, добавив в него новые диски с помощью API: hosts/{hostOID}/virtualServers/{vsOID}.

Ресурсы

Научиться

Обсудить

  • Форум по IBM Systems Director задавайте вопросы по IBM System Director, давайте комментарии и делитесь мыслями, идеями и решениями с другими пользователями.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=SOA и web-сервисы
ArticleID=838704
ArticleTitle=Создание виртуальных серверов с помощью VMControl REST API
publish-date=10022012