Цель

Заметки ИТ которые я не хочу потерять

menu_navigation

Установка и настройка минимального окружения Openstack Rocky

Этапы

Подготовка управляющей ноды на centos 7

Настроить сетевые адаптеры согласно схеме сети openstack и hostname (обязательно)

например:
192.168.160.0/24 - красная на рисунке - управляющая сеть ostack_manage за NAT, контроллеры и вычислительные ноды должны иметь интерфейс в этой сети для управления службами, именно эта сеть указана в конфигурационных файлах. Эта сеть требует доступ к Интернету всем узлам для административных целей, таких как установка пакетов, обновления безопасности, служб DNS и NTP. Имена узлов должны разрешаться в IP адреса этой подсети
10.100.0.0/16 - зеленая на рисунке - провайдерская сеть ostack, необходима для доступа инстанций к интернету - так называемые плавающие IP (Flat IP). Провайдерская сеть так же может находиться за NAT. Настраивается без указания шлюза. Он указывается в веб-интерфейсе позже.
картинка для понимания работы сети


частные сети в openstack

Настройка etc/hosts

nano /etc/hosts
# controller
192.168.160.4 ostack-manage
# compute2
192.168.160.2 ostack-node
также рекомендуется закомментировать записи localhost, 127.0.0.1 и ::1

Настройка NTP

установка chrony
yum -y install chrony
nano /etc/chrony.conf
server 0.ru.pool.ntp.org iburst
allow 192.168.160.0/24
добавляем в автозагрузку и включаем сервис
systemctl enable chronyd.service
systemctl start chronyd.service
проверяем
clock

Добавление репозитория openstack

Добавим репозиторий установив пакет
yum -y install centos-release-openstack-rocky
обновим пакеты
yum upgrade
установка openstack клиента
yum -y install python-openstackclient
установка openstack SELinux
yum -y install openstack-selinux

Установка SQL

устанавливаем пакеты mariadb
yum -y install mariadb mariadb-server python2-PyMySQL
настройка файла конфигурации подключения
cd /etc/my.cnf.d/
touch openstack.cnf
nano openstack.cnf
[mysqld]
bind-address = 192.168.160.4
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
добавляем в автозагрузку и включаем сервис
systemctl enable mariadb.service
systemctl start mariadb.service
настройка mariadb (ваш_пароль)
mysql_secure_installation

Установка RabbitMQ

установим службу очередей сообщений
yum -y install rabbitmq-server
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
добавить пароль для пользователя openstack
rabbitmqctl add_user openstack ваш_пароль
выставляем полные права для пользователя openstack
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Установка Memcached

Установим сервис кэширования данных
 
yum -y install memcached python-memcached
редактируем файл конфигурации
nano /etc/sysconfig/memcached
OPTIONS="-l 192.168.160.4"
добавляем в автозагрузку и включаем сервис
systemctl enable memcached.service
systemctl start memcached.service
проверяем работу
netstat -anp | grep 11211
если нет прослушивателя то запускаем как демон
memcached -d -u nobody
тут проблема с запуском из-под root, поэтому после перезагрузки служба не поднимается автоматом

Установка Etcd

устанавливаем распределенное хранилище ключей-значений
yum -y install etcd
редактируем файл конфигурации
nano /etc/etcd/etcd.conf
и привести блоки member и clustering к следующему виду
[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.160.4:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.160.4:2379"
ETCD_NAME="ostack-manage"
[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.160.4:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.160.4:2379"
ETCD_INITIAL_CLUSTER="ostack-manage=http://192.168.160.4:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
добавляем в автозагрузку и включаем сервис
systemctl enable etcd
systemctl start etcd


Установка службы keystone

Keystone — это служба идентификации, используемая OpenStack для аутентификации и авторизации 
Для начала остановим firewalld на время установки служб
systemctl stop firewalld
создание БД и пользователя keystone 
mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'ваш_пароль';
exit
установка пакетов для keystone
yum -y install openstack-keystone httpd mod_wsgi
редактируем в файле конфигурации /etc/keystone/keystone.conf следующие строки
nano/etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:ваш_пароль@ostack-manage/keystone
[token]
provider = fernet
Запуск заполнения базы keystone
su -s /bin/sh -c "keystone-manage db_sync" keystone
Инициализация ключей Fernet
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
Загрузка служб keystone
keystone-manage bootstrap --bootstrap-password ваш_пароль \
--bootstrap-admin-url http://ostack-manage:5000/v3/ \
--bootstrap-internal-url http://ostack-manage:5000/v3/ \
--bootstrap-public-url http://ostack-manage:5000/v3/ \
--bootstrap-region-id RegionOne
редактируем файл веб сервера /etc/httpd/conf/httpd.conf
nano /etc/httpd/conf/httpd.conf
ServerName ostack-manage

создаем ярлык
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
добавляем httpd в автозагрузку и запускаем apache
systemctl enable httpd.service
systemctl start httpd.service
добавим переменные
export OS_USERNAME=admin
export OS_PASSWORD=ваш_пароль
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://ostack-manage:5000/v3
export OS_IDENTITY_API_VERSION=3
создадим домен в openstack
openstack domain create --description "An Example Domain" example
создадим проект service и demo
openstack project create --domain default --description "Service Project" service
openstack project create --domain default --description "Demo Project" demo
создадим demo пользователя
openstack user create --domain default --password-prompt demo
создадим роль user
openstack role create user
добавим пользователю demo роль user в проекте demo
openstack role add --project demo --user demo user
Проверяем работу службы идентификации прежде, чем устанавливать другие службы:
отключим временные переменные среды OS_AUTH_URL и OS_PASSWORD
unset OS_AUTH_URL OS_PASSWORD
как пользователь admin запросим токен аутентификации
openstack --os-auth-url http://ostack-manage:5000/v3 \
 --os-project-domain-name Default --os-user-domain-name Default \
 --os-project-name admin --os-username admin token issue
как пользователь demo запросим токен аутентификации
openstack --os-auth-url http://ostack-manage:5000/v3 \
 --os-project-domain-name Default --os-user-domain-name Default \
 --os-project-name demo --os-username demo token issue
Создание сценариев клиентской среды OpenStack:
Файлы сценариев хранят пароли пользователя, поэтому должны хранится в недоступном месте, например в домашнем каталоге пользователя root
cd ~
touch admin-openrc.sh
создадим и отредактируем файл скрипта admin-openrc 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ваш_пароль
export OS_AUTH_URL=http://ostack-manage:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
создадим и отредактируем файл скрипта demo-openrc
cd ~
touch demo-openrc.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://192.168.160.4:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
Чтобы запускать клиентов в качестве конкретного проекта и пользователя, вы можете просто загрузить связанный сценарий клиентской среды перед их запуском. Например: запустим скрипт admin-openrc
. admin-openrc.sh
теперь запросим токен аутентификации
openstack token issue
проверить текущие переменные можно командой
env

Установка службы образов - Glance

Служба образов glance необходима для обнаружения, регистрации и извлечения образов виртуальных машин.
Подготовка к установке
Создадим базу данных и предоставим права
mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  IDENTIFIED BY 'ваш_пароль';
exit
Запустим скрипт с переменными
. admin-openrc.sh
создадим пользователя glance в openstack
openstack user create --domain default --password-prompt glance
Добавим роль admin пользователю glance и проекту service
openstack role add --project service --user glance admin
создадим сервис glance
openstack service create --name glance \
  --description "OpenStack Image" image
Создадим конечные точки API для сервиса управления образами
openstack endpoint create --region RegionOne \
  image public http://ostack-manage:9292
openstack endpoint create --region RegionOne \
  image internal http://ostack-manage:9292
openstack endpoint create --region RegionOne \
  image admin http://ostack-manage:9292
установим пакет glance
yum -y install openstack-glance
отредактируем конфигурационный файл API
nano /etc/glance/glance-api.conf
[database]
connection = mysql+pymysql://glance:ваш_пароль@ostack-manage/glance
[keystone_authtoken]
www_authenticate_uri = http://ostack-manage:5000
auth_url = http://ostack-manage:5000
memcached_servers = ostack-manage:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = ваш_пароль
[paste_deploy]
flavor = keystone
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
отредактируем еще один конфигурационный файл 
nano /etc/glance/glance-registry.conf
[database]
connection = mysql+pymysql://glance:ваш_пароль@ostack-manage/glance
[keystone_authtoken]
www_authenticate_uri = http://ostack-manage:5000
auth_url = http://ostack-manage:5000
memcached_servers = ostack-manage:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = ваш_пароль
[paste_deploy]
flavor = keystone
Запуск заполнения базы glance
su -s /bin/sh -c "glance-manage db_sync" glance
добавляем в автозагрузку и включаем сервис
systemctl enable openstack-glance-api.service \
  openstack-glance-registry.service
systemctl start openstack-glance-api.service \
  openstack-glance-registry.service


Установка службы вычислений - Nova

Nova - основная служба вычислений, которая позволяет запускать образы виртуальных машин. 
Подготовка к установке
Создадим три базы данных и предоставим права
mysql -u root -p
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
  IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
  IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
  IDENTIFIED BY 'ваш_пароль';
exit
exit
Запустим скрипт с переменными
. admin-openrc.sh
создадим пользователя nova в openstack
openstack user create --domain default --password-prompt nova
Добавим роль admin
openstack role add --project service --user nova admin
создадим сервис nova
openstack service create --name nova \
  --description "OpenStack Compute" compute
Создадим конечные точки API для сервиса вычислений
openstack endpoint create --region RegionOne \
  compute public http://ostack-manage:8774/v2.1
openstack endpoint create --region RegionOne \
  compute internal http://ostack-manage:8774/v2.1
openstack endpoint create --region RegionOne \
  compute admin http://ostack-manage:8774/v2.1
создадим пользователя placement в openstack
openstack user create --domain default --password-prompt placement
Добавим роль admin пользователю placement
openstack role add --project service --user placement admin
создадим сервис placement
openstack service create --name placement --description "Placement API" placement
Создадим конечные точки API для сервиса placement
openstack endpoint create --region RegionOne placement public http://ostack-manage:8778
openstack endpoint create --region RegionOne placement internal http://ostack-manage:8778
openstack endpoint create --region RegionOne placement admin http://ostack-manage:8778
установим пакеты nova
yum -y install openstack-nova-api openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy \
  openstack-nova-scheduler openstack-nova-placement-api \
  openstack-nova-consoleauth
отредактируем конфигурационный файл
nano /etc/nova/nova.conf
[DEFAULT]
enabled_apis=osapi_compute,metadata
my_ip=192.168.160.4
transport_url=rabbit://openstack:ваш_пароль@ostack-manage
use_neutron=True
firewall_driver=nova.virt.firewall.NoopFirewallDriver
resume_guests_state_on_host_boot=true
[api_database]
connection=mysql+pymysql://nova:ваш_пароль@ostack-manage/nova_api
[database]
connection=mysql+pymysql://nova:ваш_пароль@ostack-manage/nova
[api]
auth_strategy=keystone
[keystone_authtoken]
auth_url=http://ostack-manage:5000/v3
memcached_servers=ostack-manage:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=nova
password=ваш_пароль
[vnc]
enabled=true
server_listen=$my_ip
server_proxyclient_address=$my_ip
[glance]
api_servers=http://ostack-manage:9292
[oslo_concurrency]
lock_path=/var/lib/nova/tmp
[placement]
os_region_name=RegionOne
project_domain_name=Default
project_name=service
auth_type=password
user_domain_name=Default
auth_url=http://ostack-manage:5000/v3
username=placement
password=ваш_пароль
[placement_database]
connection=mysql+pymysql://placement:ваш_пароль@ostack-manage/placement
Включим доступ к API placement
nano /etc/httpd/conf.d/00-nova-placement-api.conf
   = 2.4>
      Require all granted
   
   
      Order allow,deny
      Allow from all
   
Перезапустим веб сервер
systemctl restart httpd
запуск заполнения баз и их регистрация (ошибки  ['use_tpool'] not supported и Duplicate index игнорируем)
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova
проверим зарегистрированы ли базы в самой nova, вывод должен показать две базы
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
добавляем в автозагрузку и включаем сервисы
systemctl enable openstack-nova-api openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy \
  openstack-nova-scheduler openstack-nova-placement-api \
  openstack-nova-consoleauth
systemctl start openstack-nova-api openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy \
  openstack-nova-scheduler openstack-nova-placement-api \
  openstack-nova-consoleauth

Установка службы сети - Neutron

Neutron - сетевая служба
Подготовка к установке
Создадим базу данных и предоставим права
 
mysql -u root -p
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'ваш_пароль';
exit
Запустим скрипт с переменными
. admin-openrc.sh
создадим пользователя neutron в openstack
openstack user create --domain default --password-prompt neutron
Добавим роль admin
openstack role add --project service --user neutron admin
создадим сервис neutron
 openstack service create --name neutron \
--description "OpenStack Networking" network
Создадим конечные точки API службы neutron
openstack endpoint create --region RegionOne \
network public http://ostack-manage:9696
openstack endpoint create --region RegionOne \
network internal http://ostack-manage:9696
openstack endpoint create --region RegionOne \
network admin http://ostack-manage:9696
далее необходимо настроить сам neutron, есть два вида настроек, провайдерский и с возможностью самообслуживания. Выбираем второй так как он имеет в своем наборе службы layer3.
Установка компонентов
yum -y install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables
Редактируем файлы конфигурации
nano /etc/neutron/neutron.conf
[database]
connection = mysql+pymysql://neutron:ваш_пароль@ostack-manage/neutron
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:ваш_пароль@ostack-manage
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[keystone_authtoken]
www_authenticate_uri = http://ostack-manage:5000
auth_url = http://ostack-manage:5000
memcached_servers = ostack-manage:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = ваш_пароль
[nova]
auth_url = http://ostack-manage:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = ваш_пароль
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
редактируем файл конфигурации Layer 2 плагин
nano /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[ml2_type_vxlan]
vni_ranges = 1:1000
[securitygroup]
enable_ipset = true
редактируем файл конфигурации Linux bridge agent, тут необходимо указать принадлежность сетевых интерфейсов и IP к разным сетям, у меня это
ens224 - сетевой интерфейс “провайдерской” сети
local_ip = 192.168.160.4 - менеджмент IP адрес контроллера
nano /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:ens224
[vxlan]
enable_vxlan = true
local_ip = 192.168.160.4
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
Включаем фильтры сетевых мостов
nano /usr/lib/sysctl.d/00-system.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
 редактируем файл конфигурации Layer 3
nano /etc/neutron/l3_agent.ini
[DEFAULT]
interface_driver = linuxbridge
редактируем файл конфигурации dhcp агента
nano /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
редактируем файл конфигурации агента метаданных
nano /etc/neutron/metadata_agent.ini
[DEFAULT]
nova_metadata_host = ostack-manage
metadata_proxy_shared_secret = ваш_пароль
редактируем файл конфигурации службы nova для работы с neutron
nano /etc/nova/nova.conf
[neutron]
url = http://ostack-manage:9696
auth_url = http://ostack-manage:5000
auth_type = password
project_name = service
project_domain_name = default
user_domain_name = default
region_name = RegionOne
username = neutron
password = ваш_пароль
service_metadata_proxy = true
metadata_proxy_shared_secret = ваш_пароль
необходимо создать ссылку для плагина Layer 2
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
заполним БД
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
рестарт службы nova
systemctl restart openstack-nova-api.service
добавляем в автозагрузку и включаем сервисы
systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service neutron-l3-agent.service
systemctl start neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service neutron-l3-agent.service

Установка службы Horizon

Horizon — это веб-интерфейс для Openstack
установка пакета
yum -y install openstack-dashboard
отредактируем файл конфигурации настроек
nano /etc/openstack-dashboard/local_settings
OPENSTACK_HOST = "ostack-manage"
ALLOWED_HOSTS = ['*']
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'ostack-manage:11211',
}
}
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
TIME_ZONE = "Europe/Moscow"
отредактируем файл конфигурации сайта
nano /etc/httpd/conf.d/openstack-dashboard.conf
WSGIApplicationGroup %{GLOBAL}
перезапустим веб сервер
systemctl restart httpd.service memcached.service

Установка службы хранилища Cinder

Cinder - виртуализирует управление блочными устройствами хранения и предоставляет API для запроса и использования этих ресурсов, для этого используется реализация LVM.
Подготовка к установке
Создадим базу данных и предоставим права
 
mysql -u root -p
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'ваш_пароль';
exit
Запустим скрипт с переменными
. admin-openrc.sh
создадим пользователя glance в openstack
openstack user create --domain default --password-prompt cinder
Добавим роль admin
openstack role add --project service --user cinder admin
создадим сервисы
openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 \
--description "OpenStack Block Storage" volumev3
Создадим конечные точки API
openstack endpoint create --region RegionOne \
volumev2 public http://ostack-manage:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev2 internal http://ostack-manage:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev2 admin http://ostack-manage:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev3 public http://ostack-manage:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev3 internal http://ostack-manage:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev3 admin http://ostack-manage:8776/v3/%\(project_id\)s
установим пакет
yum -y install openstack-cinder
отредактируем конфигурационный файл
nano /etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:ваш_пароль@ostack-manage/cinder
[DEFAULT]
transport_url = rabbit://openstack:ваш_пароль@ostack-manage
auth_strategy = keystone
my_ip = 192.168.160.4
target_helper = lioadm
[keystone_authtoken]
auth_uri = http://ostack-manage:5000
auth_url = http://ostack-manage:5000
memcached_servers = ostack-manage:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = ваш_пароль
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
Запуск заполнения базы (игнорируем ошибки deprecated)
su -s /bin/sh -c "cinder-manage db sync" cinder
отредактируем конфигурационный файл nova
nano /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
перезапустим nova
systemctl restart openstack-nova-api.service
добавляем в автозагрузку и включаем сервис

systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

Подготовка вычислительной ноды на centos 7

Настроить сетевые адаптеры с помощью nmtui, например:
192.168.160.2 - управляющая сеть ostack_manage
10.100.0.2 - основная сеть ostack

Hастройка /etc/hosts

 
nano /etc/hosts
# controller
192.168.160.4 ostack-manage
# compute2
192.168.160.2 ostack-node
также рекомендуется закомментировать записи localhost, 127.0.0.1 и ::1

Настройка NTP

Установка и настройка chrony
yum -y install chrony
nano /etc/chrony.conf
server ostack-manage iburst
добавляем в автозагрузку и включаем сервис
systemctl enable chronyd.service
systemctl start chronyd.service
проверяем
clock

Добавление репозитория openstack

Добавим репозиторий, установив пакет
yum -y install centos-release-openstack-rocky
обновим пакеты
yum upgrade
установка openstack клиента
yum -y install python-openstackclient
установка openstack SELinux
yum -y install openstack-selinux


Установка службы вычислений - Nova

Для начала остановим firewalld на время установки служб
systemctl stop firewalld
Установка пакетов
yum -y install openstack-nova-compute qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
Редактируем конфигурационный файл
nano /etc/nova/nova.conf
[DEFAULT]
compute_driver=libvirt.LibvirtDriver
enabled_apis=osapi_compute,metadata
my_ip=192.168.160.2
transport_url=rabbit://openstack:ваш_пароль@ostack-manage
use_neutron=True
firewall_driver=nova.virt.firewall.NoopFirewallDriver
resume_guests_state_on_host_boot=true
block_device_allocate_retries=1500
block_device_allocate_retries_interval=5
[api]
auth_strategy=keystone
[keystone_authtoken]
auth_url=http://ostack-manage:5000/v3
memcached_servers=ostack-manage:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=nova
password=ваш_пароль
[vnc]
enabled=True
server_listen=0.0.0.0
server_proxyclient_address=$my_ip
novncproxy_base_url=http://ostack-manage:6080/vnc_auto.html
[glance]
api_servers=http://ostack-manage:9292
[oslo_concurrency]
lock_path=/var/lib/nova/tmp
[placement]
os_region_name=RegionOne
project_domain_name=Default
project_name=service
auth_type=password
user_domain_name=Default
auth_url=http://ostack-manage:5000/v3
username=placement
password=ваш_пароль
[libvirt]
virt_type=kvm
images_type=lvm
images_volume_group=cinder-volumes
[neutron]
url=http://ostack-manage:9696
auth_url=http://ostack-manage:5000
auth_type=password
project_domain_name=default
user_domain_name=default
region_name=RegionOne
project_name=service
username=neutron
password=ваш_пароль
[cinder]
os_region_name=RegionOne
Проверим поддерживает ли нода виртуализацию
egrep -c '(vmx|svm)' /proc/cpuinfo
Если эта команда возвращает значение цифры больше "0", то продолжаем настройку, в противном случае необходимо включить виртуализацию в BIOS.

Для корректной работы openstack на контроллере нужно открыть следующие порты tcp и службы
firewall-cmd --zone=public --permanent --add-port=11211/tcp
firewall-cmd --zone=public --permanent --add-port=2379/tcp
firewall-cmd --zone=public --permanent --add-port=2380/tcp
firewall-cmd --zone=public --permanent --add-port=3260/tcp
firewall-cmd --zone=public --permanent --add-port=3535/tcp
firewall-cmd --zone=public --permanent --add-port=5000/tcp
firewall-cmd --zone=public --permanent --add-port=5672/tcp
firewall-cmd --zone=public --permanent --add-port=6080/tcp
firewall-cmd --zone=public --permanent --add-port=8774/tcp
firewall-cmd --zone=public --permanent --add-port=8776/tcp
firewall-cmd --zone=public --permanent --add-port=8778/tcp
firewall-cmd --zone=public --permanent --add-port=9292/tcp
firewall-cmd --zone=public --permanent --add-port=9696/tcp
firewall-cmd --zone=public --add-service=iscsi-target --permanent
также разрешим 80 порт web, перезапустим firewall и проверим добавление портов
firewall-cmd --zone=public --permanent --add-port=80/tcp
firewall-cmd --reload
firewall-cmd --list-all
Возвращаемся на ноду и открываем на ней следующие порты tcp
firewall-cmd --zone=public --permanent --add-port=11211/tcp
firewall-cmd --zone=public --permanent --add-port=2379/tcp
firewall-cmd --zone=public --permanent --add-port=2380/tcp
firewall-cmd --zone=public --permanent --add-port=5000/tcp
firewall-cmd --zone=public --permanent --add-port=5672/tcp
firewall-cmd --zone=public --permanent --add-port=6080/tcp
firewall-cmd --zone=public --permanent --add-port=8774/tcp
firewall-cmd --zone=public --permanent --add-port=8776/tcp
firewall-cmd --zone=public --permanent --add-port=8778/tcp
firewall-cmd --zone=public --permanent --add-port=9292/tcp
firewall-cmd --zone=public --permanent --add-port=9696/tcp
firewall-cmd --reload
firewall-cmd --list-all
добавляем в автозагрузку и включаем сервис nova
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service

Добавление вычислительной ноды на контроллер

команды ниже выполняются на контроллере
включим переменные
. admin-openrc.sh
просмотр существующих вычислительных сервисов (команда выполняется долго - 5 мин)
openstack compute service list --service nova-compute
запуск поиска вычислительных сервисов, подключение произойдет автоматом
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
На контроллере в /etc/nova/nova.conf можно настроить шедулер для поиска и добавления
nano /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300

Установка службы сети - Neutron

Установка пакетов
yum -y install openstack-neutron-linuxbridge ebtables ipset
Редактируем файлы конфигурации
nano /etc/neutron/neutron.conf
  
[DEFAULT]
transport_url=rabbit://openstack:ваш_пароль@ostack-manage
rpc_backend = rabbit
auth_strategy = keystone
[keystone_authtoken]
www_authenticate_uri = http://ostack-manage:5000
auth_url = http://ostack-manage:5000
memcached_servers = ostack-manage:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = ваш_пароль
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
[oslo_messaging_rabbit]
rabbit_host = ostack-manage
rabbit_userid = openstack
rabbit_password = ваш_пароль
Редактируем файлы конфигурации Linux bridge agent тут необходимо указать принадлежность сет. интерфейсов и IP к разным сетям, у меня это
enp8s0f0 - сетевой интерфейс “провайдерской” сети
local_ip = 192.168.160.2 - IP адрес ноды для управляющей сети openstack
nano /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:enp8s0f0
[vxlan]
enable_vxlan = true
local_ip = 192.168.160.2
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
Включаем фильтры сетевых мостов
nano /usr/lib/sysctl.d/00-system.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
редактируем файл конфигурации службы nova для работы с neutron
nano /etc/nova/nova.conf
[neutron]
url = http://ostack-manage:9696
auth_url = http://ostack-manage:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = ваш_пароль
рестарт службы nova
systemctl restart openstack-nova-compute.service
добавляем в автозагрузку и включаем сервис
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

Установка службы хранилища Cinder

Установим пакеты управления LVM
yum -y install lvm2 device-mapper-persistent-data
добавляем в автозагрузку и включаем сервис
systemctl enable lvm2-lvmetad.service
systemctl start lvm2-lvmetad.service
Создадим LVM тома и группы томов к ним, в данном случае sdb
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
Установим фильтр сканирования LVM для диска sdb
nano /etc/lvm/lvm.conf
filter = [ "a/sdb/", "r/.*/"]
установка пакетов openstack
yum -y install openstack-cinder targetcli python-keystone
редактируем конфигурационный файл
nano /etc/cinder/cinder.conf
если раздела [lvm] в файле не существует, его нужно создать
[DEFAULT]
transport_url = rabbit://openstack:ваш_пароль@ostack-manage
auth_strategy = keystone
my_ip = 192.168.160.2
enabled_backends = lvm
glance_api_servers = http://ostack-manage:9292
target_ip_address = $my_ip
state_path = /var/lib/cinder
enable_v3_api = True
[database]
connection = mysql+pymysql://cinder:ваш_пароль@ostack-manage/cinder
[keystone_authtoken]
www_authenticate_uri = http://ostack-manage:5000
auth_url = http://ostack-manage:5000
memcached_servers = ostack-manage:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = ваш_пароль
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
volumes_dir = $state_path/volumes
target_protocol = iscsi
target_helper = lioadm
target_ip_address = 192.168.160.2
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
добавляем в автозагрузку и включаем сервисы
systemctl enable openstack-cinder-volume.service target.service

systemctl start openstack-cinder-volume.service target.service

Комментариев нет:

Отправить комментарий