Thank you for reading this post, don't forget to subscribe!
Подготовка управляющей ноды на centos 7.4
Настроить сетевые адаптеры, например:
192.168.10.1 - управляющая сеть
192.168.11.1 - основная сеть
Hастройка etc/hosts
1 |
<span lang="EN-US">nano /etc/hosts</span> |
1 |
<span lang="EN-US"># controller</span> |
1 |
<span lang="EN-US">192.168.10.1 controller</span> |
1 |
<span lang="EN-US"># compute1</span> |
1 |
<span lang="EN-US">192.168.10.2 node1</span> |
также рекомендуется закомментировать записи localhost, 127.0.0.1 и ::1
Hастройка NTP
установка chrony
1 |
<span lang="EN-US">yum install chrony</span> |
1 |
<span lang="EN-US">nano /etc/chrony.conf</span> |
1 |
<span lang="EN-US">server 0.ru.pool.ntp.org iburst</span> |
1 |
allow 192.168.10.0/24 |
добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable chronyd.service</span> |
1 |
<span lang="EN-US">systemctl start chronyd.service</span> |
проверяем
1 |
clock |
Добавление репозитария openstack
Добавим репозитарий установив пакет
1 |
<span lang="EN-US">yum install centos-release-openstack-queens</span> |
обновим пакеты
1 |
yum upgrade |
установка openstack клиента
1 |
<span lang="EN-US">yum install python-openstackclient</span> |
установка openstack SELinux
1 |
<span lang="EN-US">yum install openstack-selinux</span> |
Установка SQL
устанавливаем пакеты mariadb
1 |
<span lang="EN-US">yum install mariadb mariadb-server python2-PyMySQL</span> |
настройка файла конфигурации подключения
1 |
cd /etc/my.cnf.d/ |
1 |
<span lang="EN-US">touch openstack.cnf</span> |
1 |
<span lang="EN-US">nano openstack.cnf</span> |
1 |
<span lang="EN-US">[mysqld]</span> |
1 |
<span lang="EN-US">bind-address = 192.168.10.1</span> |
1 |
<span lang="EN-US">default-storage-engine = innodb</span> |
1 |
<span lang="EN-US">innodb_file_per_table = on</span> |
1 |
<span lang="EN-US">max_connections = 4096</span> |
1 |
<span lang="EN-US">collation-server = utf8_general_ci</span> |
1 |
<span lang="EN-US">character-set-server = utf8</span> |
добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable mariadb.service</span> |
1 |
<span lang="EN-US">systemctl start mariadb.service</span> |
настройка mariadb (пароль пароль)
1 |
<span lang="EN-US">mysql_secure_installation</span> |
Установка RabbitMQ
установим службу очередей сообщений
1 |
<span lang="EN-US">yum install rabbitmq-server</span> |
1 |
<span lang="EN-US">systemctl enable rabbitmq-server.service</span> |
1 |
<span lang="EN-US">systemctl start rabbitmq-server.service</span> |
добавить пароль для пользователя openstack
1 |
rabbitmqctl add_user openstack пароль |
выставляем полные права для пользователя openstack
1 |
<span lang="EN-US">rabbitmqctl set_permissions openstack ".*" ".*" ".*"</span> |
Установка Memcached
Установим сервис кэширования данных
1 |
<span lang="EN-US">yum install memcached python-memcached</span> |
редактируем файл конфигурации
1 |
<span lang="EN-US">nano /etc/sysconfig/memcached</span> |
1 |
OPTIONS="-l 192.168.10.1" |
добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable memcached.service</span> |
1 |
<span lang="EN-US">systemctl start memcached.service</span> |
проверяем работу
1 |
netstat -anp | grep 11211 |
если нет прослушивателя то запускаем как демон
1 |
memcached -d -u nobody |
тут проблема с запуском из под root, поэтому после перезагрузки служба не поднимается автоматом
Установка Etcd
устанавливаем распределенное хранилище ключей-значений
1 |
yum install etcd |
редактируем файл конфигурации
1 |
nano /etc/etcd/etcd.conf |
и привести блоки member и clustering к следующему виду
1 |
<span lang="EN-US">#[Member]</span> |
1 |
<span lang="EN-US">ETCD_DATA_DIR="/var/lib/etcd/default.etcd"</span> |
1 |
<span lang="EN-US">ETCD_LISTEN_PEER_URLS="http://192.168.10.1:2380"</span> |
1 |
<span lang="EN-US">ETCD_LISTEN_CLIENT_URLS="http://192.168.10.1:2379"</span> |
1 |
<span lang="EN-US">ETCD_NAME="controller"</span> |
1 |
<span lang="EN-US">#[Clustering]</span> |
1 |
<span lang="EN-US">ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.1:2380"</span> |
1 |
<span lang="EN-US">ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.1:2379"</span> |
1 |
<span lang="EN-US">ETCD_INITIAL_CLUSTER="controller=http://192.168.10.1:2380"</span> |
1 |
<span lang="EN-US">ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"</span> |
1 |
<span lang="EN-US">ETCD_INITIAL_CLUSTER_STATE="new"</span> |
добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable etcd</span> |
1 |
<span lang="EN-US">systemctl start etcd</span> |
Установка службы keystone
Keystone - это служба идентификации, используемая OpenStack для аутентификации и авторизации
создание БД и пользователя keystone
1 |
<span lang="EN-US">mysql -u root -p</span> |
1 |
<span lang="EN-US">CREATE DATABASE keystone;</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \</span> |
1 |
<span lang="EN-US">IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \</span> |
1 |
<span lang="EN-US">IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">exit</span> |
установка пакетов для keystone
1 |
<span lang="EN-US">yum install openstack-keystone httpd mod_wsgi</span> |
редактируем в файле конфигурации /etc/keystone/keystone.conf следующие строки
1 |
<span lang="EN-US">[database]</span> |
1 |
<span lang="EN-US">connection = mysql+pymysql://keystone:</span>пароль<span lang="EN-US">@controller/keystone</span> |
1 |
<span lang="EN-US">[token]</span> |
1 |
<span lang="EN-US">provider = fernet</span> |
Запуск заполнения базы keystone
1 |
<span lang="EN-US">su -s /bin/sh -c "keystone-manage db_sync" keystone</span> |
Инициализация ключей Fernet
Загрузка служб keystone
1 |
<span lang="EN-US">keystone-manage bootstrap --bootstrap-password </span>пароль<span lang="EN-US"> \</span> |
1 |
<span lang="EN-US">--bootstrap-admin-url http://192.168.10.1:5000/v3/ \</span> |
1 |
<span lang="EN-US">--bootstrap-internal-url http://192.168.10.1:5000/v3/ \</span> |
1 |
<span lang="EN-US">--bootstrap-public-url http://192.168.10.1:5000/v3/ \</span> |
1 |
<span lang="EN-US">--bootstrap-region-id RegionOne</span> |
редактируем файл веб сервера /etc/httpd/conf/httpd.conf
1 |
<span lang="EN-US">ServerName controller</span> |
создаем ярлык
1 |
<span lang="EN-US">ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/</span> |
добавляем httpd в автозагрузку и запускаем apache
1 |
<span lang="EN-US">systemctl enable httpd.service</span> |
1 |
<span lang="EN-US">systemctl start httpd.service</span> |
добавим переменные
1 |
<span lang="EN-US">export OS_USERNAME=admin</span> |
1 |
<span lang="EN-US">export OS_PASSWORD=</span>пароль |
1 |
<span lang="EN-US">export OS_PROJECT_NAME=admin</span> |
1 |
<span lang="EN-US">export OS_USER_DOMAIN_NAME=Default</span> |
1 |
<span lang="EN-US">export OS_PROJECT_DOMAIN_NAME=Default</span> |
1 |
<span lang="EN-US">export OS_AUTH_URL=http://controller:35357/v3</span> |
1 |
<span lang="EN-US">export OS_IDENTITY_API_VERSION=3</span> |
создадим домен в openstack
1 |
<span lang="EN-US">openstack domain create --description "An Example Domain" example</span> |
создадим проект service и demo
1 |
<span lang="EN-US">openstack project create --domain default --description "Service Project" service</span> |
1 |
<span lang="EN-US">openstack project create --domain default --description "Demo Project" demo</span> |
создадим demo пользователя
1 |
<span lang="EN-US">openstack user create --domain default --password-prompt demo</span> |
создадим роль user
1 |
<span lang="EN-US">openstack role create user</span> |
добавим пользователю demo роль user в проекте demo
1 |
<span lang="EN-US">openstack role add --project demo --user demo user</span> |
Проверяем работу службы идентификации прежде, чем устанавливать другие службы:
отключим временные переменные среды OS_AUTH_URL и OS_PASSWORD
1 |
<span lang="EN-US">unset OS_AUTH_URL OS_PASSWORD</span> |
как пользователь admin запросим токен аутентификации
1 |
<span lang="EN-US">openstack --os-auth-url http://192.168.10.1:35357/v3 openstack --os-auth-url http://192.168.10.1:35357/v \</span> |
1 |
<span lang="EN-US"> --os-project-domain-name Default --os-user-domain-name Default \</span> |
1 |
<span lang="EN-US"> --os-project-name admin --os-username admin token issue</span> |
как пользователь demo запросим токен аутентификации
1 |
<span lang="EN-US">openstack --os-auth-url http://192.168.10.1:5000/v3 \</span> |
1 |
<span lang="EN-US"> --os-project-domain-name Default --os-user-domain-name Default \</span> |
1 |
<span lang="EN-US"> --os-project-name demo --os-username demo token issue</span> |
Создание сценариев клиентской среды OpenStack:
Файлы сценариев хранят пароли пользователя, поэтому должны хранится в недоступном месте, например в домашнем каталоге пользователя root
1 |
cd ~ |
1 |
touch admin-openrc.sh |
создадим и отредактируем файл скрипта admin-openrc
1 |
<span lang="EN-US">export OS_PROJECT_DOMAIN_NAME=Default</span> |
1 |
<span lang="EN-US">export OS_USER_DOMAIN_NAME=Default</span> |
1 |
<span lang="EN-US">export OS_PROJECT_NAME=admin</span> |
1 |
<span lang="EN-US">export OS_USERNAME=admin</span> |
1 |
<span lang="EN-US">export OS_PASSWORD=</span>пароль |
1 |
<span lang="EN-US">export OS_AUTH_URL=http://192.168.10.1:35357/v3</span> |
1 |
<span lang="EN-US">export OS_IDENTITY_API_VERSION=3</span> |
1 |
<span lang="EN-US">export OS_IMAGE_API_VERSION=2</span> |
создадим и отредактируем файл скрипта demo-openrc
1 |
<span lang="EN-US">cd ~</span> |
1 |
<span lang="EN-US">touch demo-openrc.sh</span> |
1 |
<span lang="EN-US">export OS_PROJECT_DOMAIN_NAME=Default</span> |
1 |
<span lang="EN-US">export OS_USER_DOMAIN_NAME=Default</span> |
1 |
<span lang="EN-US">export OS_PROJECT_NAME=demo</span> |
1 |
<span lang="EN-US">export OS_USERNAME=demo</span> |
1 |
<span lang="EN-US">export OS_PASSWORD=demo</span> |
1 |
<span lang="EN-US">export OS_AUTH_URL=http://192.168.10.1:5000/v3</span> |
1 |
<span lang="EN-US">export OS_IDENTITY_API_VERSION=3</span> |
1 |
<span lang="EN-US">export OS_IMAGE_API_VERSION=2</span> |
Чтобы запускать клиентов в качестве конкретного проекта и пользователя, вы можете просто загрузить связанный сценарий клиентской среды перед их запуском. Например:
запустим скрипт admin-openrc
1 |
. admin-openrc.sh |
теперь запросим токен аутентификации
1 |
openstack token issue |
проверить текущие переменные можно командой
1 |
env |
Установка службы образов - Glance
Служба образов glance необходима для обнаружения, регистрации и извлечения образов виртуальных машин.
Подготовка к установке
Создадим базу данных и предоставим права
1 |
<span lang="EN-US">mysql -u root -p</span> |
1 |
<span lang="EN-US">CREATE DATABASE glance;</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \</span> |
1 |
<span lang="EN-US"> IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \</span> |
1 |
<span lang="EN-US"> IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
exit |
Запустим скрипт с переменными
1 |
. admin-openrc.sh |
создадим пользователя glance в openstack
1 |
<span lang="EN-US">openstack user create --domain default --password-prompt glance</span> |
Добавим роль admin пользователю glance и проекту service
1 |
<span lang="EN-US">openstack role add --project service --user glance admin</span> |
создадим сервис glance
1 |
<span lang="EN-US">openstack service create --name glance \</span> |
1 |
<span lang="EN-US"> </span>--description "OpenStack Image" image |
Создадим конечные точки API для сервиса управления образами
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US"> image public http://controller:9292</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US"> image internal http://controller:9292</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US"> image admin http://controller:9292</span> |
установим пакет glance
1 |
<span lang="EN-US">yum install openstack-glance</span> |
отредактируем конфигурационный файл API
1 |
<span lang="EN-US">nano /etc/glance/glance-api.conf</span> |
1 |
<span lang="EN-US">[database]</span> |
1 |
<span lang="EN-US">connection = mysql+pymysql://glance:</span>пароль<span lang="EN-US">@controller/glance</span> |
1 |
<span lang="EN-US">[keystone_authtoken]</span> |
1 |
<span lang="EN-US">auth_uri = http://controller:5000</span> |
1 |
<span lang="EN-US">auth_url = http://controller:35357</span> |
1 |
<span lang="EN-US">memcached_servers = controller:11211</span> |
1 |
<span lang="EN-US">auth_type = password</span> |
1 |
<span lang="EN-US">project_domain_name = Default</span> |
1 |
<span lang="EN-US">user_domain_name = Default</span> |
1 |
<span lang="EN-US">project_name = service</span> |
1 |
<span lang="EN-US">username = glance</span> |
1 |
<span lang="EN-US">password = </span>пароль |
1 |
<span lang="EN-US">[paste_deploy]</span> |
1 |
<span lang="EN-US">flavor = keystone</span> |
1 |
<span lang="EN-US">[glance_store]</span> |
1 |
<span lang="EN-US">stores = file,http</span> |
1 |
<span lang="EN-US">default_store = file</span> |
1 |
<span lang="EN-US">filesystem_store_datadir = /var/lib/glance/images/</span> |
отредактируем еще один конфигурационный файл
1 |
<span lang="EN-US">nano /etc/glance/glance-registry.conf</span> |
1 |
<span lang="EN-US">[database]</span> |
1 |
<span lang="EN-US">connection = mysql+pymysql://glance:</span>пароль<span lang="EN-US">@controller/glance</span> |
1 |
<span lang="EN-US">[keystone_authtoken]</span> |
1 |
<span lang="EN-US">auth_uri = http://controller:5000</span> |
1 |
<span lang="EN-US">auth_url = http://controller:35357</span> |
1 |
<span lang="EN-US">memcached_servers = controller:11211</span> |
1 |
<span lang="EN-US">auth_type = password</span> |
1 |
<span lang="EN-US">project_domain_name = Default</span> |
1 |
<span lang="EN-US">user_domain_name = Default</span> |
1 |
<span lang="EN-US">project_name = service</span> |
1 |
<span lang="EN-US">username = glance</span> |
1 |
<span lang="EN-US">password = </span>пароль |
1 |
<span lang="EN-US">[paste_deploy]</span> |
1 |
<span lang="EN-US">flavor = keystone</span> |
Запуск заполнения базы glance
1 |
<span lang="EN-US">su -s /bin/sh -c "glance-manage db_sync" glance</span> |
добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable openstack-glance-api.service \</span> |
1 |
<span lang="EN-US"> openstack-glance-registry.service</span> |
1 |
<span lang="EN-US">systemctl start openstack-glance-api.service \</span> |
1 |
<span lang="EN-US"> openstack-glance-registry.service</span> |
1 |
<span lang="EN-US"> </span> |
Установка службы вычислений - Nova
Nova - основная служба вычислений, которая позволяет запускать образы виртуальных машин.
Подготовка к установке
Создадим три базы данных и предоставим права
1 |
<span lang="EN-US">mysql -u root -p</span> |
1 |
<span lang="EN-US">CREATE DATABASE nova_api;</span> |
1 |
<span lang="EN-US">CREATE DATABASE nova;</span> |
1 |
<span lang="EN-US">CREATE DATABASE nova_cell0;</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \</span> |
1 |
<span lang="EN-US"> IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \</span> |
1 |
<span lang="EN-US"> IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \</span> |
1 |
<span lang="EN-US"> IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \</span> |
1 |
<span lang="EN-US"> IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \</span> |
1 |
<span lang="EN-US"> IDENTIFIED BY 'NOVA_DBPASS';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \</span> |
1 |
<span lang="EN-US"> IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
exit |
Запустим скрипт с переменными
1 |
. admin-openrc.sh |
создадим пользователя nova в openstack
1 |
<span lang="EN-US">openstack user create --domain default --password-prompt nova</span> |
Добавим роль admin
1 |
<span lang="EN-US">openstack role add --project service --user nova admin</span> |
создадим сервис nova
1 |
<span lang="EN-US">openstack service create --name nova \</span> |
1 |
<span lang="EN-US"> --description "OpenStack Compute" compute</span> |
Создадим конечные точки API для сервиса вычислений
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US"> compute public http://controller:8774/v2.1</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US"> compute internal http://controller:8774/v2.1</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US"> compute admin http://controller:8774/v2.1</span> |
создадим пользователя placement в openstack
1 |
<span lang="EN-US">openstack user create --domain default --password-prompt placement</span> |
Добавим роль admin пользователю placement
1 |
<span lang="EN-US">openstack role add --project service --user placement admin</span> |
создадим сервис placement
1 |
<span lang="EN-US"> openstack service create --name placement --description "Placement API" placement</span> |
Создадим конечные точки API для сервиса placement
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne placement public http://controller:8778</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne placement internal http://controller:8778</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne placement admin http://controller:8778</span> |
установим пакеты nova
1 |
<span lang="EN-US"> yum install openstack-nova-api openstack-nova-conductor \</span> |
1 |
<span lang="EN-US"> openstack-nova-console openstack-nova-novncproxy \</span> |
1 |
<span lang="EN-US"> openstack-nova-scheduler openstack-nova-placement-api</span> |
отредактируем конфигурационный файл
1 |
<span lang="EN-US"> nano /etc/nova/nova.conf</span> |
1 |
<span lang="EN-US">[DEFAULT]</span> |
1 |
<span lang="EN-US">enabled_apis=osapi_compute,metadata</span> |
1 |
<span lang="EN-US">my_ip=192.168.10.1</span> |
1 |
<span lang="EN-US">transport_url=rabbit://openstack:</span>пароль<span lang="EN-US">@controller</span> |
1 |
<span lang="EN-US">use_neutron=True</span> |
1 |
<span lang="EN-US">firewall_driver=nova.virt.firewall.NoopFirewallDriver</span> |
1 |
<span lang="EN-US">[api_database]</span> |
1 |
<span lang="EN-US">connection=mysql+pymysql://nova:</span>пароль<span lang="EN-US">@controller/nova_api</span> |
1 |
<span lang="EN-US">[database]</span> |
1 |
<span lang="EN-US">connection=mysql+pymysql://nova:</span>пароль<span lang="EN-US">@controller/nova</span> |
1 |
<span lang="EN-US">[api]</span> |
1 |
<span lang="EN-US">auth_strategy=keystone</span> |
1 |
<span lang="EN-US">[keystone_authtoken]</span> |
1 |
<span lang="EN-US">auth_url=http://controller:5000/v3</span> |
1 |
<span lang="EN-US">memcached_servers=controller:11211</span> |
1 |
<span lang="EN-US">auth_type=password</span> |
1 |
<span lang="EN-US">project_domain_name=default</span> |
1 |
<span lang="EN-US">user_domain_name=default</span> |
1 |
<span lang="EN-US">project_name=service</span> |
1 |
<span lang="EN-US">username=nova</span> |
1 |
<span lang="EN-US">password=</span>пароль |
1 |
<span lang="EN-US">[vnc]</span> |
1 |
<span lang="EN-US">enabled=true</span> |
1 |
<span lang="EN-US">server_listen=$my_ip</span> |
1 |
<span lang="EN-US">server_proxyclient_address=$my_ip</span> |
1 |
<span lang="EN-US">[glance]</span> |
1 |
<span lang="EN-US">api_servers=http://controller:9292</span> |
1 |
<span lang="EN-US">[oslo_concurrency]</span> |
1 |
<span lang="EN-US">lock_path=/var/lib/nova/tmp</span> |
1 |
<span lang="EN-US">[placement]</span> |
1 |
<span lang="EN-US">os_region_name=RegionOne</span> |
1 |
<span lang="EN-US">project_domain_name=Default</span> |
1 |
<span lang="EN-US">project_name=service</span> |
1 |
<span lang="EN-US">auth_type=password</span> |
1 |
<span lang="EN-US">user_domain_name=Default</span> |
1 |
<span lang="EN-US">auth_url=http://controller:5000/v3</span> |
1 |
<span lang="EN-US">username=placement</span> |
1 |
<span lang="EN-US">password=</span>пароль |
Включим доступ к API placement
1 |
<span lang="EN-US">nano /etc/httpd/conf.d/00-nova-placement-api.conf </span> |
1 |
<span lang="EN-US"> = 2.4></span> |
1 |
<span lang="EN-US"> Require all granted</span> |
1 |
<span lang="EN-US"> </span> Order allow,deny |
1 |
<span lang="EN-US"> Allow from all</span> |
Перезапустим веб сервер
1 |
<span lang="EN-US"> systemctl restart httpd</span> |
запуск заполнения баз и их регистрация (ошибки ['use_tpool'] not supported игнорируем)
1 |
<span lang="EN-US">su -s /bin/sh -c "nova-manage api_db sync" nova</span> |
1 |
<span lang="EN-US">su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova</span> |
1 |
<span lang="EN-US">su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova</span> |
1 |
<span lang="EN-US">su -s /bin/sh -c "nova-manage db sync" nova</span> |
проверим зарегистрированы ли базы в самой nova, вывод должен показать две базы
1 |
<span lang="EN-US">nova-manage cell_v2 list_cells</span> |
добавляем в автозагрузку и включаем сервисы
1 |
<span lang="EN-US">systemctl enable openstack-nova-api.service \</span> |
1 |
<span lang="EN-US"> openstack-nova-consoleauth.service openstack-nova-scheduler.service \</span> |
1 |
<span lang="EN-US"> openstack-nova-conductor.service openstack-nova-novncproxy.service</span> |
1 |
<span lang="EN-US">systemctl start openstack-nova-api.service \</span> |
1 |
<span lang="EN-US"> openstack-nova-consoleauth.service openstack-nova-scheduler.service \</span> |
1 |
<span lang="EN-US"> openstack-nova-conductor.service openstack-nova-novncproxy.service</span> |
Установка службы сети - Neutron
1 |
Neutron - сетевая служба |
Подготовка к установке
Создадим базу данных и предоставим права
1 |
<span lang="EN-US">mysql -u root -p</span> |
1 |
<span lang="EN-US">CREATE DATABASE neutron;</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
exit |
Запустим скрипт с переменными
1 |
. admin-openrc.sh |
создадим пользователя neutron в openstack
1 |
<span lang="EN-US">openstack user create --domain default --password-prompt neutron</span> |
Добавим роль admin
1 |
<span lang="EN-US">openstack role add --project service --user neutron admin</span> |
создадим сервис neutron
1 |
<span lang="EN-US"> openstack service create --name neutron \</span> |
1 |
<span lang="EN-US">--description "OpenStack Networking" network</span> |
Создадим конечные точки API службы neutron
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US">network public http://controller:9696</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US">network internal http://controller:9696</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
network admin http://controller:9696 |
далее необходимо настроить сам neutron, есть два вида настроек, провайдерский и с возможностью самообслуживания. Выбираем второй так как он имеет в своем наборе службы layer3, к тому же, его всегда можно перенастроить как провайдерский.
Установка компонентов
1 |
<span lang="EN-US">yum install openstack-neutron openstack-neutron-ml2 \</span> |
1 |
<span lang="EN-US">openstack-neutron-linuxbridge ebtables</span> |
Редактируем файлы конфигрурации
1 |
<span lang="EN-US">nano /etc/neutron/neutron.conf</span> |
1 |
<span lang="EN-US">[database]</span> |
1 |
<span lang="EN-US">connection = mysql+pymysql://neutron:</span>пароль<span lang="EN-US">@controller/neutron</span> |
1 |
<span lang="EN-US">[DEFAULT]</span> |
1 |
<span lang="EN-US">core_plugin = ml2</span> |
1 |
<span lang="EN-US">service_plugins = router</span> |
1 |
<span lang="EN-US">allow_overlapping_ips = true</span> |
1 |
<span lang="EN-US">transport_url = rabbit://openstack:</span>пароль<span lang="EN-US">@controller</span> |
1 |
<span lang="EN-US">auth_strategy = keystone</span> |
1 |
<span lang="EN-US">notify_nova_on_port_status_changes = true</span> |
1 |
<span lang="EN-US">notify_nova_on_port_data_changes = true</span> |
1 |
<span lang="EN-US">[keystone_authtoken]</span> |
1 |
<span lang="EN-US">auth_uri = http://controller:5000</span> |
1 |
<span lang="EN-US">auth_url = http://controller:35357</span> |
1 |
<span lang="EN-US">memcached_servers = controller:11211</span> |
1 |
<span lang="EN-US">auth_type = password</span> |
1 |
<span lang="EN-US">project_domain_name = default</span> |
1 |
<span lang="EN-US">user_domain_name = default</span> |
1 |
<span lang="EN-US">project_name = service</span> |
1 |
<span lang="EN-US">username = neutron</span> |
1 |
<span lang="EN-US">password = </span>пароль |
1 |
<span lang="EN-US">[nova]</span> |
1 |
<span lang="EN-US">auth_url = http://controller:35357</span> |
1 |
<span lang="EN-US">auth_type = password</span> |
1 |
<span lang="EN-US">project_domain_name = default</span> |
1 |
<span lang="EN-US">user_domain_name = default</span> |
1 |
<span lang="EN-US">region_name = RegionOne</span> |
1 |
<span lang="EN-US">project_name = service</span> |
1 |
<span lang="EN-US">username = nova</span> |
1 |
<span lang="EN-US">password = </span>пароль |
1 |
<span lang="EN-US">[oslo_concurrency]</span> |
1 |
<span lang="EN-US">lock_path = /var/lib/neutron/tmp</span> |
редактируем файл конфигурации Layer 2 плагин
1 |
<span lang="EN-US">nano /etc/neutron/plugins/ml2/ml2_conf.ini</span> |
1 |
<span lang="EN-US">[ml2]</span> |
1 |
<span lang="EN-US">type_drivers = flat,vlan,vxlan</span> |
1 |
<span lang="EN-US">tenant_network_types = vxlan</span> |
1 |
<span lang="EN-US">mechanism_drivers = linuxbridge,l2population</span> |
1 |
<span lang="EN-US">extension_drivers = port_security</span> |
1 |
<span lang="EN-US">[ml2_type_flat]</span> |
1 |
<span lang="EN-US">flat_networks = provider</span> |
1 |
<span lang="EN-US">[ml2_type_vxlan]</span> |
1 |
<span lang="EN-US">vni_ranges = 1:1000</span> |
1 |
<span lang="EN-US">[securitygroup]</span> |
1 |
<span lang="EN-US">enable_ipset = true</span> |
редактируем файл конфигурации Linux bridge agent, тут необходимо указазать принадлежность сет. интерфейсов и IP к разным сетям, у меня это
ens192 - сетевой интерфейс управляющей сети (на этом интерфейсе есть интернет, поэтому он как бы провайдерский)
1 |
local_ip = 192.168.11.1 - IP адрес контроллера для пароль сети openstack |
1 |
<span lang="EN-US">nano /etc/neutron/plugins/ml2/linuxbridge_agent.ini</span> |
1 |
<span lang="EN-US">[linux_bridge]</span> |
1 |
<span lang="EN-US">physical_interface_mappings = provider:ens192</span> |
1 |
<span lang="EN-US">[vxlan]</span> |
1 |
<span lang="EN-US">enable_vxlan = true</span> |
1 |
<span lang="EN-US">local_ip = 192.168.11.1</span> |
1 |
<span lang="EN-US">l2_population = true</span> |
1 |
<span lang="EN-US">[securitygroup]</span> |
1 |
<span lang="EN-US">enable_security_group = true</span> |
1 |
<span lang="EN-US">firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver</span> |
Включаем фильтры сетевых мостов
1 |
<span lang="EN-US">nano /usr/lib/sysctl.d/00-system.conf</span> |
1 |
<span lang="EN-US">net.bridge.bridge-nf-call-ip6tables = 1</span> |
1 |
<span lang="EN-US">net.bridge.bridge-nf-call-iptables = 1</span> |
редактируем файл конфигурации dhcp агента
1 |
<span lang="EN-US">nano /etc/neutron/dhcp_agent.ini</span> |
1 |
<span lang="EN-US">[DEFAULT]</span> |
1 |
<span lang="EN-US">interface_driver = linuxbridge</span> |
1 |
<span lang="EN-US">dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq</span> |
1 |
<span lang="EN-US">enable_isolated_metadata = true</span> |
1 |
редактируем файл конфигурации агента метаданных |
1 |
<span lang="EN-US">nano /etc/neutron/metadata_agent.ini</span> |
1 |
<span lang="EN-US">[DEFAULT]</span> |
1 |
<span lang="EN-US">nova_metadata_host = controller</span> |
1 |
<span lang="EN-US">metadata_proxy_shared_secret = </span>пароль |
редактируем файл конфигурации службы nova для работы с neutron
1 |
<span lang="EN-US">nano /etc/nova/nova.conf</span> |
1 |
<span lang="EN-US">[neutron]</span> |
1 |
<span lang="EN-US">url = http://controller:9696</span> |
1 |
<span lang="EN-US">auth_url = http://controller:35357</span> |
1 |
<span lang="EN-US">auth_type = password</span> |
1 |
<span lang="EN-US">project_name = service</span> |
1 |
<span lang="EN-US">project_domain_name = default</span> |
1 |
<span lang="EN-US">user_domain_name = default</span> |
1 |
<span lang="EN-US">region_name = RegionOne</span> |
1 |
<span lang="EN-US">username = neutron</span> |
1 |
<span lang="EN-US">password = </span>пароль |
1 |
<span lang="EN-US">service_metadata_proxy = true</span> |
1 |
<span lang="EN-US">metadata_proxy_shared_secret = </span>пароль |
необходимо создать ссылку для плагина Layer 2
1 |
<span lang="EN-US">ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini</span> |
заполним БД
1 |
<span lang="EN-US">su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \</span> |
1 |
<span lang="EN-US">--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron</span> |
рестарт службы nova
1 |
<span lang="EN-US">systemctl restart openstack-nova-api.service</span> |
добавляем в автозагрузку и включаем сервисы
1 |
<span lang="EN-US">systemctl enable neutron-server.service \</span> |
1 |
<span lang="EN-US">neutron-linuxbridge-agent.service neutron-dhcp-agent.service \</span> |
1 |
<span lang="EN-US">neutron-metadata-agent.service neutron-l3-agent.service</span> |
1 |
<span lang="EN-US">systemctl start neutron-server.service \</span> |
1 |
<span lang="EN-US">neutron-linuxbridge-agent.service neutron-dhcp-agent.service \</span> |
1 |
<span lang="EN-US">neutron-metadata-agent.service neutron-l3-agent.service</span> |
Установка службы Horizon
Horizon - это дашборд веб-интерфейс
установка пакета
1 |
<span lang="EN-US">yum install openstack-dashboard</span> |
отредактируем файл конфигурации настроек
1 |
<span lang="EN-US">nano /etc/openstack-dashboard/local_settings</span> |
1 |
<span lang="EN-US">OPENSTACK_HOST = "controller"</span> |
1 |
<span lang="EN-US">ALLOWED_HOSTS = ['*']</span> |
1 |
<span lang="EN-US">SESSION_ENGINE = 'django.contrib.sessions.backends.cache'</span> |
1 |
<span lang="EN-US">CACHES = {</span> |
1 |
<span lang="EN-US">'default': {</span> |
1 |
<span lang="EN-US">'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',</span> |
1 |
<span lang="EN-US">'LOCATION': 'controller:11211',</span> |
1 |
<span lang="EN-US">}</span> |
1 |
<span lang="EN-US">}</span> |
1 |
<span lang="EN-US">OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST</span> |
1 |
<span lang="EN-US">OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True</span> |
1 |
<span lang="EN-US">OPENSTACK_API_VERSIONS = {</span> |
1 |
<span lang="EN-US">"identity": 3,</span> |
1 |
<span lang="EN-US">"image": 2,</span> |
1 |
<span lang="EN-US">"volume": 2,</span> |
1 |
<span lang="EN-US">}</span> |
1 |
<span lang="EN-US">OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"</span> |
1 |
<span lang="EN-US">OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"</span> |
1 |
<span lang="EN-US">TIME_ZONE = "Europe/Moscow"</span> |
отредактируем файл конфигурации сайта
1 |
<span lang="EN-US">nano /etc/httpd/conf.d/openstack-dashboard.conf</span> |
1 |
<span lang="EN-US">WSGIApplicationGroup %{GLOBAL}</span> |
перезапустим веб сервер
1 |
<span lang="EN-US">systemctl restart httpd.service memcached.service</span> |
Установка службы хранилища Cinder
Cinder - виртуализирует управление блочными устройствами хранения и предоставляет API для запроса и использования этих ресурсов, для этого используется реализация LVM.
Подготовка к установке
Создадим базу данных и предоставим права
1 |
<span lang="EN-US">mysql -u root -p</span> |
1 |
<span lang="EN-US">CREATE DATABASE cinder;</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \</span> |
1 |
<span lang="EN-US">IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
<span lang="EN-US">GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \</span> |
1 |
<span lang="EN-US">IDENTIFIED BY '</span>пароль<span lang="EN-US">';</span> |
1 |
exit |
Запустим скрипт с переменными
1 |
. admin-openrc.sh |
создадим пользователя glance в openstack
1 |
<span lang="EN-US">openstack user create --domain default --password-prompt cinder</span> |
Добавим роль admin
1 |
<span lang="EN-US">openstack role add --project service --user cinder admin</span> |
создадим сервисы
1 |
<span lang="EN-US">openstack service create --name cinderv2 \</span> |
1 |
<span lang="EN-US">--description "OpenStack Block Storage" volumev2</span> |
1 |
<span lang="EN-US">openstack service create --name cinderv3 \</span> |
1 |
<span lang="EN-US">--description "OpenStack Block Storage" volumev3</span> |
Создадим конечные точки API
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US">volumev2 public http://controller:8776/v2/%\(project_id\)s</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US">volumev2 internal http://controller:8776/v2/%\(project_id\)s</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US">volumev2 admin http://controller:8776/v2/%\(project_id\)s</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US">volumev3 public http://controller:8776/v3/%\(project_id\)s</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US">volumev3 internal http://controller:8776/v3/%\(project_id\)s</span> |
1 |
<span lang="EN-US">openstack endpoint create --region RegionOne \</span> |
1 |
<span lang="EN-US">volumev3 admin http://controller:8776/v3/%\(project_id\)s</span> |
установим пакет
1 |
<span lang="EN-US">yum install openstack-cinder</span> |
отредактируем конфигурационный файл
1 |
<span lang="EN-US">nano /etc/cinder/cinder.conf</span> |
1 |
<span lang="EN-US">[database]</span> |
1 |
<span lang="EN-US">connection = mysql+pymysql://cinder:</span>пароль<span lang="EN-US">@controller/cinder</span> |
1 |
<span lang="EN-US">[DEFAULT]</span> |
1 |
<span lang="EN-US">transport_url = rabbit://openstack:</span>пароль<span lang="EN-US">@controller</span> |
1 |
<span lang="EN-US">auth_strategy = keystone</span> |
1 |
<span lang="EN-US">my_ip = 192.168.10.1</span> |
1 |
<span lang="EN-US">[keystone_authtoken]</span> |
1 |
<span lang="EN-US">auth_uri = http://controller:5000</span> |
1 |
<span lang="EN-US">auth_url = http://controller:5000</span> |
1 |
<span lang="EN-US">memcached_servers = controller:11211</span> |
1 |
<span lang="EN-US">auth_type = password</span> |
1 |
<span lang="EN-US">project_domain_id = default</span> |
1 |
<span lang="EN-US">user_domain_id = default</span> |
1 |
<span lang="EN-US">project_name = service</span> |
1 |
<span lang="EN-US">username = cinder</span> |
1 |
<span lang="EN-US">password = </span>пароль |
1 |
<span lang="EN-US">[oslo_concurrency]</span> |
1 |
<span lang="EN-US">lock_path = /var/lib/cinder/tmp</span> |
1 |
<span lang="EN-US">su -s /bin/sh -c "cinder-manage db sync" cinder</span> |
отредактируем конфигурационный файл nova
1 |
<span lang="EN-US">nano /etc/nova/nova.conf</span> |
1 |
<span lang="EN-US">[cinder]</span> |
1 |
<span lang="EN-US">os_region_name = RegionOne</span> |
перезапустим nova
1 |
<span lang="EN-US">systemctl restart openstack-nova-api.service</span> |
добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service</span> |
1 |
<span lang="EN-US">systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service</span> |
Подготовка вычислительной ноды на centos 7.4
Настроить сетевые адаптеры, например:
192.168.10.2 - управляющая сеть
192.168.11.2 - основная сеть
Hастройка /etc/hosts
1 |
<span lang="EN-US">nano /etc/hosts</span> |
1 |
<span lang="EN-US"># controller</span> |
1 |
<span lang="EN-US">192.168.10.1 controller</span> |
1 |
<span lang="EN-US"># compute1</span> |
1 |
<span lang="EN-US">192.168.10.2 node1</span> |
также рекомендуется закомментировать записи localhost, 127.0.0.1 и ::1
Hастройка NTP
установка chrony
1 |
<span lang="EN-US">yum install chrony</span> |
1 |
nano /etc/chrony.conf |
добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable chronyd.service</span> |
1 |
<span lang="EN-US">systemctl start chronyd.service</span> |
проверяем
1 |
clock |
Добавление репозитария openstack
Добавим репозитарий, установив пакет
1 |
<span lang="EN-US">yum install centos-release-openstack-queens</span> |
обновим пакеты
1 |
yum upgrade |
установка openstack клиента
1 |
<span lang="EN-US">yum install python-openstackclient</span> |
установка openstack SELinux
1 |
<span lang="EN-US">yum install openstack-selinux</span> |
Установка службы вычислений - Nova
Установка пакетов
1 |
<span lang="EN-US">yum install openstack-nova-compute</span> |
Редактируем конфигурационный файл
1 |
<span lang="EN-US">nano /etc/nova/nova.conf</span> |
1 |
<span lang="EN-US">[DEFAULT]</span> |
1 |
<span lang="EN-US">enabled_apis=osapi_compute,metadata</span> |
1 |
<span lang="EN-US">my_ip=192.168.10.2</span> |
1 |
<span lang="EN-US">transport_url=rabbit://openstack:</span>пароль<span lang="EN-US">@controller</span> |
1 |
<span lang="EN-US">use_neutron=True</span> |
1 |
<span lang="EN-US">firewall_driver=nova.virt.firewall.NoopFirewallDriver</span> |
1 |
<span lang="EN-US">[api]</span> |
1 |
<span lang="EN-US">auth_strategy=keystone</span> |
1 |
<span lang="EN-US">[keystone_authtoken]</span> |
1 |
<span lang="EN-US">auth_url=http://controller:5000/v3</span> |
1 |
<span lang="EN-US">memcached_servers=controller:11211</span> |
1 |
<span lang="EN-US">auth_type=password</span> |
1 |
<span lang="EN-US">project_domain_name=default</span> |
1 |
<span lang="EN-US">user_domain_name=default</span> |
1 |
<span lang="EN-US">project_name=service</span> |
1 |
<span lang="EN-US">username=nova</span> |
1 |
<span lang="EN-US">password=</span>пароль |
1 |
<span lang="EN-US">[vnc]</span> |
1 |
<span lang="EN-US">enabled=True</span> |
1 |
<span lang="EN-US">server_listen=0.0.0.0</span> |
1 |
<span lang="EN-US">server_proxyclient_address=$my_ip</span> |
1 |
<span lang="EN-US">novncproxy_base_url=http://controller:6080/vnc_auto.html</span> |
1 |
<span lang="EN-US">[glance]</span> |
1 |
<span lang="EN-US">api_servers=http://controller:9292</span> |
1 |
<span lang="EN-US">[oslo_concurrency]</span> |
1 |
<span lang="EN-US">lock_path=/var/lib/nova/tmp</span> |
1 |
<span lang="EN-US">[placement]</span> |
1 |
<span lang="EN-US">os_region_name=RegionOne</span> |
1 |
<span lang="EN-US">project_domain_name=Default</span> |
1 |
<span lang="EN-US">project_name=service</span> |
1 |
<span lang="EN-US">auth_type=password</span> |
1 |
<span lang="EN-US">user_domain_name=Default</span> |
1 |
<span lang="EN-US">auth_url=http://controller:5000/v3</span> |
1 |
username=placement |
1 |
password=пароль |
Проверим поддерживает ли нода виртуализацию
1 |
<span lang="EN-US">egrep -c '(vmx|svm)' /proc/cpuinfo</span> |
Если эта команда возвращает значение цифры больше "0", то продолжаем настройку, в противном случае необходимо включить виртуализацию в биосе.
Для корректной работы openstack-nova-compute.service на контроллере нужно открыть порт tcp 5672(команда вводится на контроллере), команда для firewalld
1 |
<span lang="EN-US">firewall-cmd --zone=public --permanent --add-port=5672/tcp</span> |
также разрешим 80 порт web, перезапустим firewall и проверим добавление портов
1 |
<span lang="EN-US">firewall-cmd --zone=public --permanent --add-port=80/tcp</span> |
1 |
<span lang="EN-US">firewall-cmd --reload</span> |
1 |
<span lang="EN-US">firewall-cmd --list-all</span> |
Возвращаемся на ноду и добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable libvirtd.service openstack-nova-compute.service</span> |
1 |
<span lang="EN-US">systemctl start libvirtd.service openstack-nova-compute.service</span> |
Добавление вычислительной ноды на контроллер
команды ниже выполняются на контроллере
включим переменные
1 |
. admin-openrc.sh |
просмотр существующих вычислительных сервисов
1 |
<span lang="EN-US">openstack compute service list --service nova-compute</span> |
запуск поиска вычислительных сервисов, подключение произойдет автоматом
1 |
<span lang="EN-US">su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova</span> |
На контроллере в /etc/nova/nova.conf можно настроить шедулер для поиска и добавления
1 |
<span lang="EN-US">[scheduler]</span> |
1 |
<span lang="EN-US">discover_hosts_in_cells_interval = 300</span> |
Установка службы сети - Neutron
Установка пакетов
1 |
<span lang="EN-US">yum install openstack-neutron-linuxbridge ebtables ipset</span> |
Редактируем файлы конфигурации
1 |
<span lang="EN-US">nano /etc/neutron/neutron.conf</span> |
1 |
<span lang="EN-US">[DEFAULT]</span> |
1 |
<span lang="EN-US">transport_url=rabbit://openstack:</span>пароль<span lang="EN-US">@controller</span> |
1 |
<span lang="EN-US">auth_strategy = keystone</span> |
1 |
<span lang="EN-US">[keystone_authtoken]</span> |
1 |
<span lang="EN-US">auth_uri = http://controller:5000</span> |
1 |
<span lang="EN-US">auth_url = http://controller:35357</span> |
1 |
<span lang="EN-US">memcached_servers = controller:11211</span> |
1 |
<span lang="EN-US">auth_type = password</span> |
1 |
<span lang="EN-US">project_domain_name = default</span> |
1 |
<span lang="EN-US">user_domain_name = default</span> |
1 |
<span lang="EN-US">project_name = service</span> |
1 |
<span lang="EN-US">username = neutron</span> |
1 |
<span lang="EN-US">password = </span>пароль |
1 |
<span lang="EN-US">[oslo_concurrency]</span> |
1 |
<span lang="EN-US">lock_path = /var/lib/neutron/tmp</span> |
Редактируем файлы конфигрурации Linux bridge agent тут необходимо указазать принадлежность сет. интерфейсов и IP к разным сетям, у меня это
eno1 - сетевой интерфейс управляющей сети (на этом интерфейсе есть интернет, поэтому он как бы провайдерский)
local_ip = 192.168.11.2 - IP адрес ноды для пароль сети openstack
1 |
<span lang="EN-US">nano /etc/neutron/plugins/ml2/linuxbridge_agent.ini</span> |
1 |
<span lang="EN-US">[linux_bridge]</span> |
1 |
<span lang="EN-US">physical_interface_mappings = provider:eno1</span> |
1 |
<span lang="EN-US">[vxlan]</span> |
1 |
<span lang="EN-US">enable_vxlan = true</span> |
1 |
<span lang="EN-US">local_ip = 192.168.11.2</span> |
1 |
<span lang="EN-US">l2_population = true</span> |
1 |
<span lang="EN-US">[securitygroup]</span> |
1 |
<span lang="EN-US">enable_security_group = true</span> |
1 |
<span lang="EN-US">firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver</span> |
редактируем файл конфигурации службы nova для работы с neutron
1 |
<span lang="EN-US">nano /etc/nova/nova.conf</span> |
1 |
<span lang="EN-US">[neutron]</span> |
1 |
<span lang="EN-US">url = http://controller:9696</span> |
1 |
<span lang="EN-US">auth_url = http://controller:35357</span> |
1 |
<span lang="EN-US">auth_type = password</span> |
1 |
<span lang="EN-US">project_domain_name = default</span> |
1 |
<span lang="EN-US">user_domain_name = default</span> |
1 |
<span lang="EN-US">region_name = RegionOne</span> |
1 |
<span lang="EN-US">project_name = service</span> |
1 |
<span lang="EN-US">username = neutron</span> |
1 |
<span lang="EN-US">password = </span>пароль |
рестарт службы nova
1 |
<span lang="EN-US">systemctl restart openstack-nova-compute.service</span> |
добавляем в автозагрузку и включаем сервис
1 |
<span lang="EN-US">systemctl enable neutron-linuxbridge-agent.servicesystemctl start neutron-linuxbridge-agent.service</span> |
Проверка доступности
переходим на http://192.168.10.1/dashbord и вводим учетные данные domain - default, логин admin
если необходимо перезагрузить управляющую ноду, то после перезагрузки
проверяем работу memcaсhed
1 |
netstat -anp | grep 11211 |
если нет прослушивателя то запускаем как демон
1 |
memcached -d -u nobody |
тут проблема с запуском из под root, поэтому после перезагрузки служба не поднимается автоматом
а также не забываем запустить скрипт с переменными, лежит в домашней папке root
1 |
. admin-openrc.sh |