Этапы
Подготовка управляющей ноды
на 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
Настройка NTP
установка chrony
Добавление репозитория
openstack
Добавим репозиторий установив пакет
Установка SQL
устанавливаем пакеты mariadb
Установка RabbitMQ
установим службу очередей сообщений
Установка Memcached
Установим сервис кэширования данных
Установка Etcd
устанавливаем распределенное хранилище ключей-значений
Keystone — это служба идентификации, используемая OpenStack для
аутентификации и авторизации
Для начала остановим firewalld на время установки служб
создаем ярлык
отключим временные переменные среды OS_AUTH_URL и OS_PASSWORD
Файлы сценариев хранят пароли пользователя, поэтому должны хранится в недоступном месте, например в домашнем каталоге пользователя root
Установка службы образов -
Glance
Служба образов glance необходима для обнаружения, регистрации и извлечения
образов виртуальных машин.
Подготовка к установке
Создадим базу данных и предоставим права
Nova - основная служба вычислений, которая позволяет запускать образы
виртуальных машин.
Подготовка к установке
Создадим три базы данных и предоставим права
- Подготовка
управляющей ноды на centos 7
- Настройка etc/hosts
- Настройка NTP
- Добавление репозитория
openstack
- Установка SQL
- Установка RabbitMQ
- Установка Memcached
- Установка Etcd
- Установка
службы keystone
- Установка
службы образов - Glance
- Установка
службы вычислений - Nova
- Установка
службы сети - Neutron
- Установка
службы Horizon
- Установка
службы хранилища Cinder
- Подготовка
вычислительной ноды на centos 7
- Установка
службы вычислений - Nova
- Добавление
вычислительной ноды на контроллер
- Установка
службы сети - Neutron
- Установка
службы хранилища Cinder
Подготовка управляющей ноды
на 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
установка chronyyum -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 SELinuxyum -y install openstack-selinux
Установка SQL
устанавливаем пакеты mariadbyum -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
добавить пароль для
пользователя openstackrabbitmqctl 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
установка пакетов для keystoneyum -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
Запуск заполнения базы keystonesu -s /bin/sh -c "keystone-manage db_sync" keystone
Инициализация ключей Fernetkeystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
Загрузка служб keystonekeystone-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.confnano /etc/httpd/conf/httpd.conf
ServerName ostack-manage
создаем ярлык
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
добавляем httpd в автозагрузку и запускаем apachesystemctl 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
создадим домен в
openstackopenstack domain create --description "An Example Domain" example
создадим проект service и demoopenstack 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
создадим роль useropenstack role create user
добавим пользователю demo роль user в проекте demoopenstack 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-openrccd ~
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 в openstackopenstack user create --domain default --password-prompt glance
Добавим роль admin пользователю glance и проекту serviceopenstack role add --project service --user glance admin
создадим сервис glanceopenstack 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
установим пакет glanceyum -y install openstack-glance
отредактируем конфигурационный файл APInano /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
Запуск заполнения базы glancesu -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 в openstackopenstack user create --domain default --password-prompt nova
Добавим роль adminopenstack role add --project service --user nova admin
создадим сервис novaopenstack 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 в openstackopenstack user create --domain default --password-prompt placement
Добавим роль admin пользователю placementopenstack role add --project service --user placement admin
создадим сервис placementopenstack service create --name placement --description "Placement API" placement
Создадим конечные точки API для сервиса placementopenstack 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
установим пакеты novayum -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 в openstackopenstack user create --domain default --password-prompt neutron
Добавим роль adminopenstack role add --project service --user neutron admin
создадим сервис neutron openstack service create --name neutron \
--description "OpenStack Networking" network
Создадим конечные точки API службы neutronopenstack 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 3nano /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
рестарт службы novasystemctl 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 в openstackopenstack user create --domain default --password-prompt cinder
Добавим роль adminopenstack 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
Создадим конечные точки APIopenstack 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
отредактируем конфигурационный файл novanano /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
перезапустим novasystemctl 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
Установка и настройка chronyyum -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 SELinuxyum -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
Возвращаемся на ноду и открываем на ней следующие порты tcpfirewall-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
добавляем в автозагрузку и включаем сервис novasystemctl 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
Установим пакеты управления LVMyum -y install lvm2 device-mapper-persistent-data
добавляем в автозагрузку и включаем сервисsystemctl enable lvm2-lvmetad.service
systemctl start lvm2-lvmetad.service
Создадим LVM тома и группы томов к ним, в данном случае sdbpvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
Установим фильтр сканирования LVM для диска sdbnano /etc/lvm/lvm.conf
filter = [ "a/sdb/", "r/.*/"]
установка пакетов openstackyum -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
Комментариев нет:
Отправить комментарий