
Оглавление
- Введение
- Предварительные условия
- Настройка среды
- Установка и настройка компонентов OpenStack
- Keystone (служба идентификации)
- Glance (служба изображений)
- Nova (служба вычислений)
- Neutron (сетевая служба)
- Cinder (служба хранения блоков)
- Horizon (приборная панель)
- Проверка и устранение неполадок
- Заключение
1. Введение
OpenStack это платформа с открытым исходным кодом, используемая для создания и управления публичными и частными облаками. В этом руководстве мы рассмотрим ручную установку OpenStack на сервер Linux.
2. Предварительные условия
Убедитесь, что ваша система соответствует следующим предварительным условиям:
- Чистая установка поддерживаемого дистрибутива Linux (например, Ubuntu 20.04 LTS или CentOS 8).
- Не менее 8 ГБ оперативной памяти и 2 процессора.
- Root или sudo доступ.
- Правильно настроенные сетевые параметры.
3. Настройка среды
Обновление и модернизация системы
$ sudo apt update && sudo apt upgrade -y
Установка основных пакетов
$ sudo apt install -y python3-pip python3-dev libffi-dev gcc libssl-dev
4. Установка и настройка компонентов OpenStack
a. Keystone (служба идентификации)
- Установите Keystone
$ sudo apt install -y keystone
- Настройте Keystone
Отредактируйте /etc/keystone/keystone.conf
файл:
$ sudo nano /etc/keystone/keystone.conf
Установите следующие значения:
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
provider = fernet
- Наполнение базы данных службы идентификации
$ sudo keystone-manage db_sync
- Инициализация репозиториев ключей Fernet
$ sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
$ sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
- Загрузка службы идентификации
$ sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
- Настройка HTTP-сервера Apache
Отредактируйте файл /etc/apache2/apache2.conf
файл:
$ sudo nano /etc/apache2/apache2.conf
Добавьте следующее:
ServerName controller
Включите службы Apache и WSGI:
$ sudo service apache2 restart
b. Glance (служба изображений)
- Установите Glance
$ sudo apt install -y glance
- Настройте Glance
Отредактируйте файл /etc/glance/glance-api.conf
файл:
$ sudo nano /etc/glance/glance-api.conf
Установите следующие значения:
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone
- Заполнение базы данных службы изображений
$ sudo glance-manage db_sync
- Перезапустите службу Glance
$ sudo service glance-api restart
c. Nova (служба вычислений)
- Установите Nova
$ sudo apt install -y nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler
- Настройка Nova
Отредактируйте /etc/nova/nova.conf
файл:
$ sudo nano /etc/nova/nova.conf
Установите следующие значения:
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
[DEFAULT]
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc]
enabled = True
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance]
api_servers = http://controller:9292
- Наполнение баз данных вычислений
$ sudo nova-manage api_db sync
$ sudo nova-manage cell_v2 map_cell0
$ sudo nova-manage cell_v2 create_cell --name=cell1
$ sudo nova-manage db sync
- Перезапустите службы Nova
$ sudo service nova-api restart
$ sudo service nova-scheduler restart
$ sudo service nova-conductor restart
$ sudo service nova-novncproxy restart
d. Neutron (сетевая служба)
- Установите Neutron
$ sudo apt install -y neutron-server neutron-plugin-ml2 neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
- Настройка Neutron
Отредактируйте файл /etc/neutron/neutron.conf
файл:
$ sudo nano /etc/neutron/neutron.conf
Установите следующие значения:
[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = NEUTRON_PASS
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
Отредактируйте файл /etc/neutron/plugins/ml2/ml2_conf.ini
файл:
$ sudo nano /etc/neutron/plugins/ml2/ml2_conf.ini
Установите следующие значения:
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[securitygroup]
enable_ipset = True
- Наполнение сетевой базы данных
$ sudo neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head
- Перезапуск служб Neutron
$ sudo service neutron-server restart
$ sudo service neutron-linuxbridge-agent restart
$ sudo service neutron-dhcp-agent restart
$ sudo service neutron-metadata-agent restart
e. Cinder (служба хранения блоков)
- Установите Cinder
$ sudo apt install -y cinder-api cinder-scheduler
- Настройте Cinder
Отредактируйте файл /etc/cinder/cinder.conf
файл:
$ sudo nano /etc/cinder/cinder.conf
Установите следующие значения:
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = cinder
password = CINDER_PASS
[DEFAULT]
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
- Заполнение базы данных блочного хранилища
$ sudo cinder-manage db sync
- Перезапуск служб Cinder
$ sudo service cinder-api restart
$ sudo service cinder-scheduler restart
f. Горизонт (приборная панель)
- Установите Horizon
$ sudo apt install -y openstack-dashboard
- Настройте Horizon
Отредактируйте /etc/openstack-dashboard/local_settings.py
файл:
$ sudo nano /etc/openstack-dashboard/local_settings.py
Установите следующие значения:
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['*']
SESSION_ENGINE = 'django.contrib
.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 3,
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
- Перезапустить Apache
$ sudo service apache2 reload
5. Проверка и устранение неполадок
- Проверка состояния обслуживания
Убедитесь, что все службы OpenStack запущены:
$ sudo systemctl status <service-name>
- Проверка службы Keystone
Пройдите аутентификацию с помощью интерфейса командной строки OpenStack:
$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:5000/v3
$ export OS_IDENTITY_API_VERSION=3
Проверьте службу Keystone:
$ openstack token issue
- Проверьте службу Glance
Загрузите образец изображения:
$ wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img
$ openstack image create "cirros" --file cirros-0.5.2-x86_64-disk.img --disk-format qcow2 --container-format bare --public
Список изображений:
$ openstack image list
- Проверка службы Nova
Создайте аромат:
$ openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
Список ароматов:
$ openstack flavor list
- Проверка службы Neutron
Создайте сеть:
$ openstack network create demo-net
$ openstack subnet create --network demo-net --subnet-range 10.0.0.0/24 demo-subnet
Список сетей:
$ openstack network list
- Проверка службы Cinder
Создайте том:
$ openstack volume create --size 1 demo-volume
Список томов:
$ openstack volume list
- Проверка панели управления Horizon Dashboard
Откройте веб-браузер и перейдите по адресу http://<controller-ip>/dashboard
. Войдите в систему, используя учетные данные администратора.
6. Заключение
Ручная установка OpenStack может быть сложной из-за многочисленных компонентов и зависимостей. Однако, следуя этому руководству, вы сможете установить функциональную среду OpenStack.
Для дальнейшей настройки и масштабирования обратитесь к официальной документации OpenStack и ресурсам сообщества.
Советы по устранению неполадок
- Журналы: Всегда проверяйте журналы, расположенные в
/var/log/
для получения подробных сообщений об ошибках. - Работа в сети: Убедитесь в правильности конфигурации сети и отсутствии конфликтов.
- Услуги: Используйте
systemctl
для запуска, остановки и проверки состояния служб. - Базы данных: Проверьте подключение к базе данных и правильность заполнения таблиц.
Дополнительные ресурсы
Выполнив эти шаги, вы получите рабочую среду OpenStack, соответствующую вашим потребностям.