OpenNebula: различия между версиями
Pav (обсуждение | вклад) |
|||
(не показаны 22 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
= | {{Stub}} | ||
OpenNebula | {{Attention|В разработке! Статья не закончена! Инструкции неполные!}} | ||
__NOTOC__ | |||
== OpenNebula == | |||
OpenNebula — это платформа облачных вычислений для управления разнородными инфраструктурами распределенных центров обработки данных. Платформа OpenNebula управляет виртуальной инфраструктурой центра обработки данных для создания частных, общедоступных и гибридных реализаций инфраструктуры как службы. | |||
== Архитектура == | == Архитектура == | ||
Облачная архитектура определяется 3-мя | Облачная архитектура определяется 3-мя элементами: хранилищем данных, сетью и системой виртуализации. | ||
OpenNebula состоит из: | |||
* Front-end | OpenNebula состоит из следующих компонентов: | ||
* Сервер управления (Front-end) — на нём выполняются сервисы OpenNebula. | |||
* Серверы с виртуальными машинами. | * Серверы с виртуальными машинами. | ||
* Хранилище данных | * Хранилище данных — содержит образы виртуальных машин. | ||
* Физическая сеть | * Физическая сеть — обеспечивает связь между хранилищем данных, серверами с виртуальными машинами, поддерживает VLAN-ы для виртуальных машин, а также управление сервисами OpenNebula. | ||
== Планирование ресурсов == | |||
===== Минимальные требования к серверу управления ===== | |||
{| class="wikitable" | |||
|- | |||
! Ресурс !! Минимальное значение | |||
|- | |||
| Оперативная память || 2ГБ | |||
|- | |||
| CPU || 1 CPU (2 ядра) | |||
|- | |||
| Диск || 100ГБ | |||
|- | |||
| Сеть || 2 интерфейса | |||
|} | |||
Максимальное количество серверов, управляемых одним front-end-ом, зависит от инфраструктуры, особенно от производительности хранилища. Обычно рекомендуется не управлять более чем 500-ми серверами из одной точки, хотя существуют примеры с более чем 1000 серверами. | |||
===== Сервера виртуализации ===== | |||
* CPU: в обычных условиях каждое ядро, предоставляемое виртуальной машине (ВМ), должно быть реальным ядром физического процессора, например, для обслуживания 40 ВМ с 2-мя процессорами в каждой, облако должно иметь 80 физических ядер. Они могут быть распределены по разным серверам: 10 серверов с 8-ю ядрами или 5 серверов с 16-ю ядрами на каждом. В случае перераспределения недостаточных ресурсов используются атрибуты CPU и VCPU: CPU означает физические ядра, выделенные для ВМ, а VCPU - виртуальные ядра для гостевой ОС. | |||
* Память: по умолчанию, OpenNebula не предоставляет памяти для гостевых систем больше, чем есть на самом деле. Желательно рассчитывать объём памяти с запасом в 10% на гипервизор. Например, для 45 ВМ с 2ГБ памяти на каждой, необходимо 90ГБ физической памяти. Важно количество физических серверов: каждый сервер должен иметь 10% запас для работы гипервизора, так, 10 серверов с 10ГБ памяти на каждом могут предоставить по 9ГБ для виртуальных машин и смогут обслужить 45 машин из этого примера (10% от 10ГБ = 1ГБ на гипервизор). | |||
===== Хранилище данных ===== | |||
OpenNebula работает с двумя видами данных в хранилище: образцами виртуальных машин и образами (дисками) самих ВМ. | |||
Планирование хранилища - очень важная задача, т.к. от него зависит производительность облака. Например, при использовании Ceph для среднего по размеру облака, необходимо взять как минимум 3 сервера в следующей конфигурации: 5x1ТБ дисков, 16ГБ памяти, 2 CPU с 4-мя ядрами на каждом и 2 сетевые карты (минимум). | |||
===== Сеть ===== | |||
Сетевая инфраструктура должна быть спланирована так, чтобы обеспечить высокую надёжность и пропускную способность. Рекомендуется использовать 2 сетевых интерфейса на сервере управления и по 4 на каждом сервере виртуализации (публичный, внутренний, для управления и для связи с хранилищем). | |||
== Установка == | == Установка == | ||
Установить OpenNebula можно следующей командой: | |||
: < | ==== Сервер управления ==== | ||
Установить '''''сервер управления''''' OpenNebula можно следующей командой: | |||
<source lang="text" highlight="1"># apt-get install opennebula-server opennebula-common gem-opennebula-cli opennebula-flow opennebula-sunstone opennebula-gate gem-http-cookie</source> | |||
После успешной установки необходимо обновить зависимости пакетов, выполнив команду: | |||
<source lang="text" highlight="1"># apt-get update && apt-get dist-upgrade</source> | |||
{{todo|Установка кластера высокой доступности для снижения простоев основных сервисов OpenNebula}} | |||
Установка MySQL (MariaDB) для хранения конфигурации (на '''''сервере управления'''''): | |||
<source lang="text" highlight="1-4"># apt-get install mariadb | |||
# systemctl enable --now mariadb.service | |||
# mysql_secure_installation | |||
# mysql -u root </source> | |||
<syntaxhighlight lang="MySQL"> | |||
mysql> GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin' IDENTIFIED BY '<thepassword>'; | |||
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED; | |||
</syntaxhighlight> | |||
Перед запуском сервера OpenNebula в первый раз необходимо настроить параметры доступа к базе данных в конфигурационном файле {{path|/etc/one/oned.conf}}: | |||
<syntaxhighlight lang="text"> | |||
DB = [ backend = "mysql", | |||
server = "localhost", | |||
port = 0, | |||
user = "oneadmin", | |||
passwd = "<thepassword>", | |||
db_name = "opennebula" ] | |||
</syntaxhighlight> | |||
{{todo|Периодические задания для чистки БД.}} | |||
==== Проверка работы сервера управления ==== | |||
Для проверки работоспособности сервера управления необходимо выполнить следующую команду (от имени пользователя oneadmin): | |||
<source lang="text" highlight="1"> | |||
oneadmin$ oneuser show | |||
USER 0 INFORMATION | |||
ID : 0 | |||
NAME : oneadmin | |||
GROUP : oneadmin | |||
PASSWORD : 67aedfae4124dd409035f32ea2f25fgeae6 | |||
AUTH_DRIVER : core | |||
ENABLED : Yes | |||
USER TEMPLATE | |||
TOKEN_PASSWORD="ec21d27e247fedhasabcb08b8e0a4ca3c" | |||
RESOURCE USAGE & QUOTAS | |||
</source> | |||
==== Проксирование запросов к серверу Sunstone ==== | |||
Для соединения с веб-интерфейсом сервера управления желательно использовать протокол SSL, для чего необходимо установить дополнительный прокси, а сервер управления настроить на прослушивание только локального адреса 127.0.0.1:9869. Пример настройки HTTP сервера Nginx: | |||
<source lang="text" highlight="1"># apt-get install nginx</source> | |||
В файле конфигурации виртуального сервера {{path|/etc/nginx/sites-enabled/sampleserver.org}}: | |||
<syntaxhighlight lang="text"> | |||
#### OpenNebula Sunstone upstream | |||
upstream sunstone { | |||
server 127.0.0.1:9869; | |||
} | |||
#### sampleserver.org HTTP virtual host | |||
server { | |||
listen 80; | |||
server_name sampleserver.org; | |||
### Permanent redirect to HTTPS (optional) | |||
return 301 https://$server_name:8443; | |||
} | |||
#### sampleserver.org HTTPS virtual host | |||
server { | |||
listen 8443; | |||
server_name sampleserver.org; | |||
### SSL Parameters | |||
ssl on; | |||
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; | |||
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; | |||
### Proxy requests to upstream | |||
location / { | |||
proxy_pass http://sunstone; | |||
} | |||
} | |||
</syntaxhighlight> | |||
Изменения в файле конфигурации {{path|/etc/one/sunstone-server.conf}}: | |||
<syntaxhighlight lang="text"> | |||
:host: 127.0.0.1 | |||
:port: 9869 | |||
</syntaxhighlight> | |||
==== Сервер виртуализации ==== | |||
Установка '''''серверов виртуализации''''' (для системы виртуализации KVM): | |||
<source lang="text" highlight="1-2"># apt-get install opennebula-node-kvm | |||
# systemctl enable --now libvirtd</source> | |||
Ключи для доступа по SSH | |||
==== Сеть ==== | |||
==== Хранилище данных ==== | |||
==== Добавления хоста ==== | |||
== Добавление сетевых файловых систем == | |||
* Ceph | |||
* GlusterFS | |||
* ... | |||
[[Category:Виртуализация]] | [[Category:Виртуализация]] | ||
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}} | ||
{{Category navigation|title=OpenNebula|category=OpenNebula|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=OpenNebula|category=OpenNebula|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 13:02, 28 июня 2023
OpenNebula
OpenNebula — это платформа облачных вычислений для управления разнородными инфраструктурами распределенных центров обработки данных. Платформа OpenNebula управляет виртуальной инфраструктурой центра обработки данных для создания частных, общедоступных и гибридных реализаций инфраструктуры как службы.
Архитектура
Облачная архитектура определяется 3-мя элементами: хранилищем данных, сетью и системой виртуализации.
OpenNebula состоит из следующих компонентов:
- Сервер управления (Front-end) — на нём выполняются сервисы OpenNebula.
- Серверы с виртуальными машинами.
- Хранилище данных — содержит образы виртуальных машин.
- Физическая сеть — обеспечивает связь между хранилищем данных, серверами с виртуальными машинами, поддерживает VLAN-ы для виртуальных машин, а также управление сервисами OpenNebula.
Планирование ресурсов
Минимальные требования к серверу управления
Ресурс | Минимальное значение |
---|---|
Оперативная память | 2ГБ |
CPU | 1 CPU (2 ядра) |
Диск | 100ГБ |
Сеть | 2 интерфейса |
Максимальное количество серверов, управляемых одним front-end-ом, зависит от инфраструктуры, особенно от производительности хранилища. Обычно рекомендуется не управлять более чем 500-ми серверами из одной точки, хотя существуют примеры с более чем 1000 серверами.
Сервера виртуализации
- CPU: в обычных условиях каждое ядро, предоставляемое виртуальной машине (ВМ), должно быть реальным ядром физического процессора, например, для обслуживания 40 ВМ с 2-мя процессорами в каждой, облако должно иметь 80 физических ядер. Они могут быть распределены по разным серверам: 10 серверов с 8-ю ядрами или 5 серверов с 16-ю ядрами на каждом. В случае перераспределения недостаточных ресурсов используются атрибуты CPU и VCPU: CPU означает физические ядра, выделенные для ВМ, а VCPU - виртуальные ядра для гостевой ОС.
- Память: по умолчанию, OpenNebula не предоставляет памяти для гостевых систем больше, чем есть на самом деле. Желательно рассчитывать объём памяти с запасом в 10% на гипервизор. Например, для 45 ВМ с 2ГБ памяти на каждой, необходимо 90ГБ физической памяти. Важно количество физических серверов: каждый сервер должен иметь 10% запас для работы гипервизора, так, 10 серверов с 10ГБ памяти на каждом могут предоставить по 9ГБ для виртуальных машин и смогут обслужить 45 машин из этого примера (10% от 10ГБ = 1ГБ на гипервизор).
Хранилище данных
OpenNebula работает с двумя видами данных в хранилище: образцами виртуальных машин и образами (дисками) самих ВМ. Планирование хранилища - очень важная задача, т.к. от него зависит производительность облака. Например, при использовании Ceph для среднего по размеру облака, необходимо взять как минимум 3 сервера в следующей конфигурации: 5x1ТБ дисков, 16ГБ памяти, 2 CPU с 4-мя ядрами на каждом и 2 сетевые карты (минимум).
Сеть
Сетевая инфраструктура должна быть спланирована так, чтобы обеспечить высокую надёжность и пропускную способность. Рекомендуется использовать 2 сетевых интерфейса на сервере управления и по 4 на каждом сервере виртуализации (публичный, внутренний, для управления и для связи с хранилищем).
Установка
Сервер управления
Установить сервер управления OpenNebula можно следующей командой:
# apt-get install opennebula-server opennebula-common gem-opennebula-cli opennebula-flow opennebula-sunstone opennebula-gate gem-http-cookie
После успешной установки необходимо обновить зависимости пакетов, выполнив команду:
# apt-get update && apt-get dist-upgrade
Установка MySQL (MariaDB) для хранения конфигурации (на сервере управления):
# apt-get install mariadb
# systemctl enable --now mariadb.service
# mysql_secure_installation
# mysql -u root
mysql> GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin' IDENTIFIED BY '<thepassword>';
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
Перед запуском сервера OpenNebula в первый раз необходимо настроить параметры доступа к базе данных в конфигурационном файле /etc/one/oned.conf:
DB = [ backend = "mysql",
server = "localhost",
port = 0,
user = "oneadmin",
passwd = "<thepassword>",
db_name = "opennebula" ]
Проверка работы сервера управления
Для проверки работоспособности сервера управления необходимо выполнить следующую команду (от имени пользователя oneadmin):
oneadmin$ oneuser show
USER 0 INFORMATION
ID : 0
NAME : oneadmin
GROUP : oneadmin
PASSWORD : 67aedfae4124dd409035f32ea2f25fgeae6
AUTH_DRIVER : core
ENABLED : Yes
USER TEMPLATE
TOKEN_PASSWORD="ec21d27e247fedhasabcb08b8e0a4ca3c"
RESOURCE USAGE & QUOTAS
Проксирование запросов к серверу Sunstone
Для соединения с веб-интерфейсом сервера управления желательно использовать протокол SSL, для чего необходимо установить дополнительный прокси, а сервер управления настроить на прослушивание только локального адреса 127.0.0.1:9869. Пример настройки HTTP сервера Nginx:
# apt-get install nginx
В файле конфигурации виртуального сервера /etc/nginx/sites-enabled/sampleserver.org:
#### OpenNebula Sunstone upstream
upstream sunstone {
server 127.0.0.1:9869;
}
#### sampleserver.org HTTP virtual host
server {
listen 80;
server_name sampleserver.org;
### Permanent redirect to HTTPS (optional)
return 301 https://$server_name:8443;
}
#### sampleserver.org HTTPS virtual host
server {
listen 8443;
server_name sampleserver.org;
### SSL Parameters
ssl on;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
### Proxy requests to upstream
location / {
proxy_pass http://sunstone;
}
}
Изменения в файле конфигурации /etc/one/sunstone-server.conf:
:host: 127.0.0.1
:port: 9869
Сервер виртуализации
Установка серверов виртуализации (для системы виртуализации KVM):
# apt-get install opennebula-node-kvm
# systemctl enable --now libvirtd
Ключи для доступа по SSH
Сеть
Хранилище данных
Добавления хоста
Добавление сетевых файловых систем
- Ceph
- GlusterFS
- ...