Эта статья будет интересна администраторам облачной платформы OpenStack. Мы поговорим об отображении консоли виртуальных машин в дашборде.
Дело в том, что OpenStack по умолчанию использует консоль noVNC, которая с приемлемой скоростью работает внутри локальной сети, но плохо подходит для работы с виртуальными машинами, работающими в удаленном дата-центре.
При этом отзывчивость консоли, мягко говоря, удручает. В этой статье мы поговорим о том, как настроить гораздо более быстрый OpenStack в вашей установке.
OpenStack имеет два протокола графической консоли виртуальных машин — VNC и SPICE. Из коробки поставляется веб-реализация клиента VNC — noVNC. Гораздо меньше людей знают о SPICE. В общем, SPICE — это протокол удаленного доступа, поддерживающий массу полезных вещей, таких как потоковое видео, передача звука, копирование-вставка, переадресация по USB и многое другое.
Однако панель управления Openstek использует SPICE-HTML5 веб-клиент, который не поддерживает все эти функции, но очень качественно и быстро отображает консоль виртуальной машины, то есть делает именно то, что нужно.
В официальной документации ( ссылка1 , ссылка2 ) OpenStack имеет довольно много информации по настройке консоли SPICE. Кроме того, там написано, что «для получения доступа к консоли SPICE необходимо явно отключить VNC».
Это не совсем так, скорее дело в том, что если включена консоль VNC, вы не сможете использовать консоль SPICE из дашборда (но API, то есть «nova get- spice-console», используя python-novaclient).
Кроме того, консоль SPICE будет доступна только для новых виртуальных машин; старые, до полной перезагрузки, изменения размера или миграции, по-прежнему будут использовать только VNC. Итак, в этой статье я использовал две версии OpenStack от Mirantis: Kilo (Mirantis OpenStack 7.0) и Mitaka (Mirantis OpenStack 9.0).
Как и во всех корпоративных дистрибутивах, используется конфигурация с тремя узлами контроллера и HTTPS на внешнем интерфейсе.
Гипервизор qemu-kvm, везде операционная система Ubuntu 14.04, развертывание в облаке осуществлялось через Fuel. Конфигурация влияет как на узлы контроллера, так и на компьютер.
На узлах контроллера делаем следующее.
Установите сам пакет spice-html5:
Вписываем в конфиг Новы следующие значения: /etc/nova/nova.confapt-get install spice-html5
[DEFAULT]
ssl_only = True
cert = '/path/to/SSL/cert'
key = '/path/to/SSL/key'
web=/usr/share/spice-html5
[spice]
spicehtml5proxy_host = ::
html5proxy_base_url = https://<FRONTEND_FQDN>:6082/spice_auto.html
enabled = True
keymap = en-us
где — это полное доменное имя вашей информационной панели Horizon. Очевидно, что сертификат и ключ, указанные выше, должны соответствовать FRONTEND_FQDN, иначе современный браузер не позволит виджету SPICE работать.
Если ваш Horizon не использует HTTPS, вам не нужно настраивать SSL.
Чтобы одновременно запустить noVNC и SPICE, вам нужно проделать следующий трюк: cp -r /usr/share/novnc/* /usr/share/spice-html5/
Для работы по HTTPS необходимо использовать Secure Websockets, для этого вам придется отредактировать файл /usr/share/spice-html5/spice_auto.html. В этом разделе кода вам нужно изменить «ws://» на «wss://».
/usr/share/spice-html5/spice_auto.html function connect()
{
var host, port, password, scheme = "wss://", uri;
Опять же, для одновременной работы noVNC и SPICE нужно подправить скрипты-выскочки /etc/init/nova-novncproxy.conf и /etc/init/nova-spicehtml5proxy.conf. В обоих скриптах нужно закомментировать одну строку: /etc/init/nova-spicehtml5proxy.conf script
[ -r /etc/default/nova-consoleproxy ] && .
/etc/default/nova-consoleproxy || exit 0
#[ "${NOVA_CONSOLE_PROXY_TYPE}" = "spicehtml5" ] || exit 0
/etc/init/nova-novncproxy.conf script
[ -r /etc/default/nova-consoleproxy ] && .
/etc/default/nova-consoleproxy || exit 0
#[ "${NOVA_CONSOLE_PROXY_TYPE}" = "novnc" ] || exit 0
Собственно, это позволяет убрать проверку типа консоли из файла /etc/default/nova-consoleproxy.
Теперь нужно поправить конфиги Haproxy: /etc/haproxy/conf.d/170-nova-novncproxy.cfg listen nova-novncproxy
bind <PUBLIC_VIP>:6080 ssl crt /var/lib/astute/haproxy/public_haproxy.pem no-sslv3 no-tls-tickets ciphers AES128+EECDH:AES128+EDH:AES256+EECDH:AES256+EDH
balance source
option httplog
option http-buffer-request
timeout http-request 10s
server controller1 192.168.57.6:6080 ssl verify none check
server controller2 192.168.57.3:6080 ssl verify none check
server controller3 192.168.57.7:6080 ssl verify none check
/etc/haproxy/conf.d/171-nova-spiceproxy.cfg listen nova-novncproxy
bind <PUBLIC_VIP>:6082 ssl crt /var/lib/astute/haproxy/public_haproxy.pem no-sslv3 no-tls-tickets ciphers AES128+EECDH:AES128+EDH:AES256+EECDH:AES256+EDH
balance source
option httplog
timeout tunnel 3600s
server controller1 192.168.57.6:6082 ssl verify none check
server controller2 192.168.57.3:6082 ssl verify none check
server controller3 192.168.57.7:6082 ssl verify none check
где PUBLIC_VIP — IP-адрес, на котором висит FRONTEND_FQDN.
Наконец, давайте перезапустим службы на узлах контроллера: service nova-spicehtml5proxy restart
service apache2 restart
crm resource restart p_haproxy
здесь p_haproxy — ресурс Pacemaker для Haproxy, через который работают многочисленные сервисы OpenStack.
На каждом вычислительном узле нужно внести изменения в конфиг Nova: /etc/nova/nova.conf [spice]
spicehtml5proxy_host = ::
html5proxy_base_url = https://<FRONTEND_FQDN>:6082/spice_auto.html
enabled = True
agent_enabled = True
server_listen = ::
server_proxyclient_address = COMPUTE_MGMT_IP
keymap = en-us
здесь COMPUTE_MGMT_IP — адрес интерфейса управления данного вычислительного узла (у Mirantis OpenStack есть разделение на сети общего пользования и сети управления).
После этого необходимо перезапустить сервис nova-compute: service nova-compute restart
Теперь один важный момент. Выше я уже писал, что VNC не отключаем, потому что.
в этом случае существующие виртуальные машины потеряют консоль в Дашборде.
Однако если мы разворачиваем облако с нуля, то имеет смысл полностью отключить VNC. Для этого нужно в конфиге Новы на всех узлах установить следующее: [DEFAULT]
vnc_enabled = False
novnc_enabled = False
Но так или иначе, если мы активируем VNC и SPICE вместе в облаке, в котором уже запущены виртуальные машины, то после всех описанных выше действий внешне ничего не изменится ни для уже работающих виртуальных машин, ни для новых - консоль noVNC. все равно откроется.
Если вы посмотрите в настройках Horizon, тип используемой консоли контролируется следующей настройкой: /etc/openstack-dashboard/local_settings.py # Set Console type:
# valid options would be "AUTO", "VNC" or "SPICE"
# CONSOLE_TYPE = "AUTO"
По умолчанию установлено значение AUTO, то есть тип консоли выбирается автоматически.
Но что это значит? Дело в одном файле, где выставлен приоритет консолей: /usr/share/openstack-dashboard/openstack_dashboard/dashboards/project/instances/console.py .
CONSOLES = SortedDict([('VNC', api.nova.server_vnc_console), ('SPICE', api.nova.server_spice_console), ('RDP', api.nova.server_rdp_console), ('SERIAL', api.nova.server_serial_console)]) .
Как видите, консоль VNC, если она доступна, имеет приоритет. Если его нет, то будет производиться поиск консоли SPICE. Имеет смысл поменять местами первые два пункта, тогда существующие виртуальные машины продолжат работать с медленным VNC, а новые — с новым быстрым SPICE. Именно то, что вам нужно!
Субъективно можно сказать, что консоль SPICE очень быстрая.
В режиме без графики тормозов вообще нет, в графическом режиме все работает так же быстро, а по сравнению с протоколом VNC просто небо и земля! Так что рекомендую всем!
На этом настройку можно считать завершенной, но в конце я покажу, как на самом деле выглядят обе эти консоли в XML-конфиге libvirt: <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='en-us'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<graphics type='spice' port='5901' autoport='yes' listen='::' keymap='en-us'>
<listen type='address' address='::'/>
</graphics>
Очевидно, что если у вас есть сетевой доступ к вычислительному узлу виртуальной машины, вы можете использовать любой другой клиент VNC/SPICE вместо веб-интерфейса, просто подключившись к указанному выше TCP-порту в конфигурации (в данном случае 5900 для VNC и 5901).
для СПАЙСА).
Теги: #Виртуализация #Системное администрирование #Облачные вычисления #Конфигурация Linux #kvm #openstack #Spice #openstack nova
-
Авторизация С Помощью Qr
19 Oct, 24 -
Всплывающий Патент
19 Oct, 24 -
Yahoo Inc. Очистилась Перед Законом Гонконга
19 Oct, 24 -
Автор «Страницы На Миллион» Запустил Лотерею
19 Oct, 24