Centos7部署OpenStack T版

OpenStack是一个开源的云计算管理平台项目,由NASA和Rackspace合作研发,现已成为构建私有云和公有云的核心框架。它通过模块化设计提供基础设施即服务(IaaS),支持企业灵活管理计算、存储和网络资源。

核心组件

  • Nova:计算服务(虚拟机管理)

  • Neutron:网络服务(SDN管理)

  • Glance:镜像服务(VM模板管理)

  • Cinder:块存储服务

  • Keystone:身份认证服务

  • Horizon:Web管理面板

文档中使用的镜像源可以私信我领取

  1.环境规划

主机名IP地址网关/DNSCPU/内存备注
controller192.168.88.20192.168.88.254/114.114.114.1144C8G控制节点
compute192.168.88.21192.168.88.254/114.114.114.1144C8G

计算节点

本次使用的是vmware,虚拟机一定要开启这个功能

2. 系统环境配置(所有节点)

2.1 关闭防火墙SELinux

[root@controller ~]# systemctl stop firewalld
[root@controller ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@controller ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 
[root@controller ~]# setenforce 0

2.2 配置HOSTS

[root@controller ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@controller ~]# cat << EOF >> /etc/hosts
> 192.168.88.40 controller
> 192.168.88.41 compute
> EOF

2.3 配置本地yum源

[root@controller ~]# ls
anaconda-ks.cfg  CentOS-7-x86_64-DVD-2009.iso  openstack-train.iso
[root@controller ~]# mkdir /opt/{centos,openstack-train}
[root@controller ~]# ls /opt
centos  openstack-train
[root@controller ~]# mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt
mount: /dev/loop0 写保护,将以只读方式挂载
[root@controller ~]# cp -rvf /mnt/* /opt/centos/
[root@controller ~]# umount /mnt
[root@controller ~]# mount -o loop openstack-train.iso /mnt
mount: /dev/loop0 写保护,将以只读方式挂载
[root@controller ~]# cp -rvf /mnt/* /opt/openstack-train/
​
[root@controller ~]# mkdir /etc/yum.repos.d/bak
[root@controller ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
[root@controller ~]# cat << EOF >> /etc/yum.repos.d/local.repo
> [centos]
> name=centos
> baseurl=file:///opt/centos
> gpgcheck=0
> enabled=1
> [openstack-train]
> name=openstack-train
> baseurl=file:///opt/openstack-train
> gpgcheck=0
> enabled=1
> EOF
​
[root@controller ~]# yum clean all
已加载插件:fastestmirror
正在清理软件源: centos openstack-train
[root@controller ~]# yum repolist
已加载插件:fastestmirror
Determining fastest mirrors
centos                                                | 3.6 kB     00:00     
openstack-train                                       | 2.9 kB     00:00     
(1/3): centos/group_gz                                  | 153 kB   00:00     
(2/3): openstack-train/primary_db                       | 1.2 MB   00:00     
(3/3): centos/primary_db                                | 3.3 MB   00:00     
源标识                              源名称                              状态
centos                              centos                              4,070
openstack-train                     openstack-train                     3,16

2.4 配置时间同步

[root@controller ~]# yum install -y net-tools bash-completion vim chrony.x86_64 centos-release-openstack-train.noarch
#针对于这个镜像里面可能没有centos-release-openstack-train.noarch包这里使用aliyun的yum源
​
[root@controller ~]# vim /etc/chrony.conf
server ntp.aliyun.com iburst
allow 192.168.88.0/24
[root@controller ~]# systemctl restart chronyd
[root@controller ~]# systemctl enable chronyd

3.openstack环境配置

31.安装openstack client客户端(所有节点)

[root@controller ~]# yum install -y python2-openstackclient

3.2 安装及配置数据库(仅控制节点)

3.2.1 安装数据库
[root@controller ~]# yum install -y mariadb mariadb-server python2-PyMySQL
3.2.2 创建和编辑文件

创建一个分段,并将控制器节点的管理 IP 地址的 key 设置为 允许其他节点通过管理网络进行访问。设置 用于启用有用选项的附加键和 UTF-8 字符集:[mysqld]``bind-address

[root@controller ~]# vim /etc/my.cnf.d/openstack.cnf 
[root@controller ~]# cat /etc/my.cnf.d/openstack.cnf 
[mysqld]
bind-address=192.168.88.40
default-storage-engine=innodb
innodb_file_per_table=on
max_connection=4096
collation-server=utf8_general_ci
character-set-server=utf8
[root@controller ~]# systemctl enable mariadb
[root@controller ~]# systemctl start mariadb
3.2.3 初始化数据库
[root@controller ~]# mysql_secure_installation 
​
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
​
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
​
Enter current password for root (enter for none):   #现在没有密码回车
OK, successfully used password, moving on...
​
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
​
Set root password? [Y/n] y  #设置密码
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!
​
​
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
​
Remove anonymous users? [Y/n] y #是否删除匿名用户
 ... Success!
​
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
​
Disallow root login remotely? [Y/n] n #禁用远程登录
 ... skipping.
​
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
​
Remove test database and access to it? [Y/n] y  #是否删除测试数据库
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
​
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
​
Reload privilege tables now? [Y/n] y    #是否刷新表权限
 ... Success!
​
Cleaning up...
​
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
​
Thanks for using MariaDB!

3.3 配置消息队列服务rabbitmq(仅控制节点)

[root@controller ~]# yum install -y rabbitmq-serverr
[root@controller ~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[root@controller ~]# systemctl start rabbitmq-server
[root@controller ~]# rabbitmqctl add_user openstack 000000
Creating user "openstack"
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"

3.4 配置缓存服务memcached(仅控制节点)

[root@controller ~]# yum install -y python-memcached memcached
[root@controller ~]# vim /etc/sysconfig/memcached
[root@controller ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
将服务配置为使用 controller 节点。这是为了允许其他节点通过 管理网络
OPTIONS="-l 127.0.0.1,::1,controller"
[root@controller ~]# systemctl enable memcached
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@controller ~]# systemctl start memcached

3.5 配置ETCD(仅控制节点)

[root@controller ~]# yum install -y etcd
[root@controller ~]# vim /etc/etcd/etcd.conf 
[root@controller ~]# awk '$1 ~ /^[^;#]/' /etc/etcd/etcd.conf 
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.88.40:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.88.40:2379"
ETCD_NAME="controller"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.88.40:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.88.40:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.88.40:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
[root@controller ~]# systemctl enable etcd
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
[root@controller ~]# systemctl start etcd

4. keystone

4.1 创建数据库和授权

[root@controller ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.3.20-MariaDB MariaDB Server
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> CREATE DATABASE keystone;
Query OK, 1 row affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> exit
Bye

4.2 安装和配置组件

[root@controller ~]# yum install -y openstack-keystone httpd mod_wsgi
​
[root@controller ~]# vim /etc/keystone/keystone.conf
编辑文件并完成以下作 行动:/etc/keystone/keystone.conf
在该部分中,配置数据库访问:[database]
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
​
在该部分中,配置 Fernet 令牌提供程序:[token]
[token]
# ...
provider = fernet

4.3 初始化keystone数据库

[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
​
[root@controller ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.3.20-MariaDB MariaDB Server
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> use keystone;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
​
Database changed
MariaDB [keystone]> show tables;
+------------------------------------+
| Tables_in_keystone                 |
+------------------------------------+
| access_rule                        |
| access_token                       |
| application_credential             |
| application_credential_access_rule |
| application_credential_role        |
| assignment                         |
| config_register                    |
| consumer                           |
| credential                         |
| endpoint                           |
| endpoint_group                     |
| federated_user                     |
| federation_protocol                |
| group                              |
| id_mapping                         |
| identity_provider                  |
| idp_remote_ids                     |
| implied_role                       |
| limit                              |
| local_user                         |
| mapping                            |
| migrate_version                    |
| nonlocal_user                      |
| password                           |
| policy                             |
| policy_association                 |
| project                            |
| project_endpoint                   |
| project_endpoint_group             |
| project_option                     |
| project_tag                        |
| region                             |
| registered_limit                   |
| request_token                      |
| revocation_event                   |
| role                               |
| role_option                        |
| sensitive_config                   |
| service                            |
| service_provider                   |
| system_assignment                  |
| token                              |
| trust                              |
| trust_role                         |
| user                               |
| user_group_membership              |
| user_option                        |
| whitelisted_config                 |
+------------------------------------+
48 rows in set (0.001 sec)

4.5 初始化 Fernet 密钥存储库

和 标志用于指定 将用于运行 Keystone 的作系统的用户/组。这些是提供的 允许在其他作系统用户/组下运行 Keystone。在示例中 下面,我们称之为用户和组。--keystone-user``--keystone-group``keystone

[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@controller ~]# keystone-manage credential_setup --keystone-user keysone --keystone-group keystone

4.6 引导keystone身份认证

在 Queens 版本发布之前,keystone 需要在两个单独的端口上运行,以 容纳 Identity v2 API,该 API 运行单独的仅限管理员的服务 通常在端口 35357 上。删除 v2 API 后,可以运行 keystone 在所有接口的同一端口上。

[root@controller ~]# keystone-manage bootstrap \
> --bootstrap-password 123456 \
> --bootstrap-internal-url http://controller:5000/v3/ \
> --bootstrap-public-url http://controller:5000/v3/ \
> --bootstrap-admin-url http://controller:5000/v3/ \
> --bootstrap-region-id RegionOne

4.7 配置Apache HTTP服务

编辑文件并配置选项以引用控制器节点:/etc/httpd/conf/httpd.conf``ServerName

[root@controller ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName controller

创建指向文件的链接:/usr/share/keystone/wsgi-keystone.conf

[root@controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

完成安装Apache HTTP服务

[root@controller ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@controller ~]# systemctl start httpd

4.8 设置环境变量

[root@controller ~]# cat << EOF >> keystonerc_admin
> export OS_USERNAME=admin
> export OS_PASSWORD=123456
> export OS_PROJECT_NAME=admin
> export OS_USER_DOMAIN_NAME=Default
> export OS_PROJECT_DOMAIN_NAME=Default
> export OS_AUTH_URL=http://controller:5000/v3
> export OS_IDENTITY_API_VERSION=3
> EOF
[root@controller ~]# source keystonerc_admin 
[root@controller ~]# openstack project list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 069c6462995349c49b8ec37d27d4f774 | admin |
+----------------------------------+-------+

4.9 创建域、项目、用户和角色

尽管 keystone-manage 中的 “default” 域已经存在 bootstrap 步骤中,创建新域的正式方法是:

[root@controller ~]# openstack domain create --description "An Example Domain" example
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | dbfbffaab913429eb13548c3b0dab7a9 |
| name        | example                          |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+
[root@controller ~]# openstack domain list
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| dbfbffaab913429eb13548c3b0dab7a9 | example | True    | An Example Domain  |
| default                          | Default | True    | The default domain |
+----------------------------------+---------+---------+--------------------

本指南使用一个服务项目,其中包含每个 添加到环境中的服务。创建项目:service

[root@controller ~]# openstack project create --domain default --descript "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 6878651ebdd04f00ab4a8790a117e693 |
| is_domain   | False                            |
| name        | service                          |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
[root@controller ~]# openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 069c6462995349c49b8ec37d27d4f774 | admin   |
| 6878651ebdd04f00ab4a8790a117e693 | service |
+----------------------------------+---------+

5.glance

5.1 创建数据库及授权

[root@controller ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 24
Server version: 10.3.20-MariaDB MariaDB Server
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> CREATE DATABASE glance;
Query OK, 1 row affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glacen'@'localhost' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> exit
Bye

5.2 创建用户和端点

创建用户
[root@controller ~]# openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | e1ab689c084c4b58a9b73780c4a9c39c |
| name                | glance                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
给glance用户添加admin角色
[root@controller ~]# openstack role add --project service --user glance admin
​
创建服务实体glance
[root@controller ~]# openstack service create --name glance --description "Openstack Image" image
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Openstack Image                  |
| enabled     | True                             |
| id          | 959b97446ede4248bf4b97eedea6ad3b |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+
创建image服务 API 终端节点:
[root@controller ~]# openstack endpoint create --region RegionOne image public http://controller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 74ec625b673b4623aaafa4d725afc2c9 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 959b97446ede4248bf4b97eedea6ad3b |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne image internal http://controller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | a1f7f070efd144368573439ff7c79c8a |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 959b97446ede4248bf4b97eedea6ad3b |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne image admin http://controller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 8c6a68c70c3f4499a41b0cdd5085e209 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 959b97446ede4248bf4b97eedea6ad3b |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+

5.3 安装和配置组件

[root@controller ~]# yum install -y openstack-glance

编辑文件并完成 作:/etc/glance/glance-api.conf

[root@controller ~]# vim /etc/glance/glance-api.conf
​
在该部分中,配置数据库访问:[database]
[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
​
在 和 部分中, 配置 Identity Service 访问:[keystone_authtoken][paste_deploy]
[keystone_authtoken]
# ...
www_authenticate_uri  = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = GLANCE_PASS
​
[paste_deploy]
# ...
flavor = keystone
​
在该部分中,配置本地文件 系统存储和图像文件的位置:[glance_store]
[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

5.4 初始化glance数据库

[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance
[root@controller ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 30
Server version: 10.3.20-MariaDB MariaDB Server
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> use glance;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
​
Database changed
MariaDB [glance]> show tables;
+----------------------------------+
| Tables_in_glance                 |
+----------------------------------+
| alembic_version                  |
| image_locations                  |
| image_members                    |
| image_properties                 |
| image_tags                       |
| images                           |
| metadef_namespace_resource_types |
| metadef_namespaces               |
| metadef_objects                  |
| metadef_properties               |
| metadef_resource_types           |
| metadef_tags                     |
| migrate_version                  |
| task_info                        |
| tasks                            |
+----------------------------------+
15 rows in set (0.001 sec)

完成安装

[root@controller ~]# systemctl enable openstack-glance-api
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-glance-api.service to /usr/lib/systemd/system/openstack-glance-api.service.
[root@controller ~]# systemctl start openstack-glance-api

6.placement

6.1 创建数据库及授权

[root@controller ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.3.20-MariaDB MariaDB Server
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> CREATE DATABASE placement;
Query OK, 1 row affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL ON placement.* TO 'placement'@'%' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> exit
Bye

6.2 创建用户和端点

[root@controller ~]# openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 1ad3c86512054b96b639851df708b63c |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller ~]# openstack role add --project service --user placement admin
[root@controller ~]# openstack service create --description "Openstack Placement" --name placement placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Openstack Placement              |
| enabled     | True                             |
| id          | 0c92ec56cb8c4bf2ad3c56eda6d50947 |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 3e4371b724a642e38e3ad8492a93eb6f |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 0c92ec56cb8c4bf2ad3c56eda6d50947 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 27d7800d6a43423cbe52e255f63a8611 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 0c92ec56cb8c4bf2ad3c56eda6d50947 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 2ab25651a04941b288ad0ccb8bfa8459 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 0c92ec56cb8c4bf2ad3c56eda6d50947 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

6.3 安装和配置组件

[root@controller ~]# yum install -y openstack-placement-api

编辑文件并完成以下作 行动:/etc/placement/placement.conf

[root@controller ~]# vim /etc/placement/placement.conf 
​
在该部分中,配置数据库访问:[placement_database]
[placement_database]
# ...
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement
​
在 和 部分中,配置 Identity 服务访问:[api][keystone_authtoken]
[api]
# ...
auth_strategy = keystone
​
[keystone_authtoken]
# ...
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = PLACEMENT_PASS

6.4 初始化placement数据库

[root@controller ~]# su -s /bin/sh -c "placement-manage db sync" placement
[root@controller ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 34
Server version: 10.3.20-MariaDB MariaDB Server
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> use placement;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
​
Database changed
MariaDB [placement]> show tables;
+------------------------------+
| Tables_in_placement          |
+------------------------------+
| alembic_version              |
| allocations                  |
| consumers                    |
| inventories                  |
| placement_aggregates         |
| projects                     |
| resource_classes             |
| resource_provider_aggregates |
| resource_provider_traits     |
| resource_providers           |
| traits                       |
| users                        |
+------------------------------+
12 rows in set (0.001 sec

完成安装

[root@controller ~]# systemctl restart httpd

7.nova

7.1 创建数据库及授权

[root@controller ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 36
Server version: 10.3.20-MariaDB MariaDB Server
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.001 sec)
​
MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.001 sec)
​
MariaDB [(none)]> CREATE DATABASE nova_cell0;
Query OK, 1 row affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.002 sec)
​
MariaDB [(none)]> GRANT ALL ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '000000'';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL ON nova.* TO 'nova'@'%' IDENTIFIED BY '000000'; 0
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '0000'00';
Query OK, 0 rows affected (0.001 sec)

7.2 创建用户和端点

[root@controller ~]# openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 4fe14299053c4679904d45cbf4f0e716 |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller ~]# openstack role add --project service --user nova admin
[root@controller ~]# openstack service create --description "Openstack Compute" --name nova compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Openstack Compute                |
| enabled     | True                             |
| id          | aa10a88d8ff149b3b4f61976f31bac14 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 184e9d5360524e9c9c21297046fa2afb |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | aa10a88d8ff149b3b4f61976f31bac14 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | acec55cf467146f188fa5f3dee3fbf7c |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | aa10a88d8ff149b3b4f61976f31bac14 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 888b82b14a444aaeb17ea90559399239 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | aa10a88d8ff149b3b4f61976f31bac14 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+

7.3 安装和配置组件

[root@controller ~]# yum install -y openstack-nova-api openstack-nova-coductor openstack-nova-scheduler openstack-nova-novncproxy

配置 /etc/nova/nova.conf 部分。

[root@controller ~]# vim /etc/nova/nova.conf 
​
在该部分中,仅启用计算和元数据 API:[DEFAULT]
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
​
在 和 部分中,配置数据库 访问:[api_database][database]
[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
​
[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
​
在该部分中,配置消息队列访问:[DEFAULT]RabbitMQ
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller:5672/
​
在 和 部分中,配置 Identity 服务访问:[api][keystone_authtoken]
[api]
# ...
auth_strategy = keystone
​
[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
​
在该部分中,配置选项以使用 控制器节点的管理接口 IP 地址:[DEFAULT]my_ip
[DEFAULT]
# ...
my_ip = 10.0.0.11
​
在该部分中,启用对 Networking 服务的支持:[DEFAULT]
[DEFAULT]
# ...
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
​
在该部分中,配置 VNC 代理以使用管理 控制器节点的接口 IP 地址:[vnc]
[vnc]
enabled = true
# ...
server_listen = $my_ip
server_proxyclient_address = $my_ip
​
在该部分中,配置 Image 服务的位置 应用程序接口:[glance]
[glance]
# ...
api_servers = http://controller:9292
​
在该部分中,配置锁定路径:[oslo_concurrency]
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
​
在该部分中,配置对 Placement (放置) 服务:[placement]
[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS

7.4 初始化nova数据库

[root@controller ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell --verbose" nova
[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova
​
验证 nova cell0 和 cell1 是否已正确注册:
[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+-----------------------------------------+-------------------------------------------------+----------+
|  名称 |                 UUID                 |              Transport URL              |                    数据库连接                   | Disabled |
+-------+--------------------------------------+-----------------------------------------+-------------------------------------------------+----------+
|  cell | 9bd97335-c238-44a4-b0ac-3bf41951eb87 | rabbit://openstack:****@controller:5672 |    mysql+pymysql://nova:****@controller/nova    |  False   |
| cell0 | 00000000-0000-0000-0000-000000000000 |                  none:/                 | mysql+pymysql://nova:****@controller/nova_cell0 |  False   |
+-------+--------------------------------------+-----------------------------------------+-------------------------------------------------+----------+

完成安装

[root@controller ~]# systemctl enable \
> openstack-nova-api \
> openstack-nova-scheduler \
> openstack-nova-conductor \
> openstack-nova-novncproxy
[root@controller ~]# systemctl start openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy

8. 安装和配置计算节点

8.1 安装和配置组件

[root@compute ~]# yum install -y openstack-nova-compute
​
如果安装时出现缺少依赖时可以使用这个方法
​
vim /etc/yum.repos.d/名字任意.repo
#文件名字任意
[Virt]
#也是任意名字
name=CentOS-$releasever - Base
#随便编一个名字
release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://mirrors.sohu.com/centos/7/virt/x86_64/kvm-common/
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

编辑文件并完成以下作:/etc/nova/nova.conf

​
​
在该部分中,仅启用 compute 和 元数据 API:[DEFAULT]
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
​
在该部分中,配置消息队列访问:[DEFAULT]RabbitMQ
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
​
在 和 部分中,配置 Identity 服务访问:[api][keystone_authtoken]
[api]
# ...
auth_strategy = keystone
​
[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
​
在该部分中,配置选项:[DEFAULT]my_ip
[DEFAULT]
# ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
替换为 计算节点上的管理网络接口,通常为 10.0.0.31 示例架构中的第一个节点。MANAGEMENT_INTERFACE_IP_ADDRESS
​
​
在该部分中,启用对 Networking 服务的支持:[DEFAULT]
[DEFAULT]
# ...
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
​
在该部分中,启用和配置远程控制台访问:[vnc]
[vnc]
# ...
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
​
在该部分中,配置 Image 服务的位置 应用程序接口:[glance]
[glance]
# ...
api_servers = http://controller:9292
​
在该部分中,配置锁定路径:[oslo_concurrency]
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
​
在该部分中,配置 Placement API:[placement]
[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS
​
将文件中的章节编辑为 遵循:[libvirt]/etc/nova/nova.conf
[libvirt]
# ...
virt_type = qemu

完成安装

确定您的计算节点是否支持 虚拟机:

[root@compute ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
4
[root@compute ~]# systemctl enable libvirtd openstack-nova-compute
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-compute.service to /usr/lib/systemd/system/openstack-nova-compute.service.
[root@compute ~]# systemctl start libvirtd openstack-nova-compute

8.2 将计算节点添加到cell数据库

[root@controller ~]# openstack compute service list --service nova-compute
+----+--------------+---------+------+---------+-------+----------------------------+
| ID | Binary       | Host    | Zone | Status  | State | Updated At                 |
+----+--------------+---------+------+---------+-------+----------------------------+
|  5 | nova-compute | compute | nova | enabled | up    | 2025-04-12T12:12:24.000000 |
+----+--------------+---------+------+---------+-------+----------------------------+
[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell': 9bd97335-c238-44a4-b0ac-3bf41951eb87
Checking host mapping for compute host 'compute': a114cd37-9a9d-40b2-bafb-9e66797bb7c8
Creating host mapping for compute host 'compute': a114cd37-9a9d-40b2-bafb-9e66797bb7c8
Found 1 unmapped computes in cell: 9bd97335-c238-44a4-b0ac-3bf41951eb87
​
添加新的计算节点时,必须在控制器节点上运行以注册这些新计算 节点。或者,您可以在 中设置适当的间隔:nova-manage cell_v2 discover_hosts/etc/nova/nova.conf
​
[scheduler]
discover_hosts_in_cells_interval = 300
​
[root@controller ~]# nova service-list
+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+
| Id                                   | Binary         | Host       | Zone     | Status  | State | Updated_at                 | Disabled Reason | Forced down |
+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+
| f7006f36-9c17-4f76-afe5-6aa305e5e6ee | nova-conductor | controller | internal | enabled | up    | 2025-04-12T12:14:59.000000 | -               | False       |
| e9ced917-f0a0-4b5b-91fc-57627515f7d3 | nova-scheduler | controller | internal | enabled | up    | 2025-04-12T12:14:58.000000 | -               | False       |
| 4e795aa7-5def-454f-a036-0158ebcc65bc | nova-compute   | compute    | nova     | enabled | up    | 2025-04-12T12:14:54.000000 | -               | False       |
+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+
​

9.neutron

9.1 创建数据库及授权

[root@controller ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 399
Server version: 10.3.20-MariaDB MariaDB Server
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> CREATE DATABASE neutron;
Query OK, 1 row affected (0.001 sec)
​
MariaDB [(none)]> GRANT ALL ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.011 sec)
​
MariaDB [(none)]> GRANT ALL ON neutron.* to 'neutron'@'%' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.001 sec)

9.2 创建用户及端点

[root@controller ~]# openstack user create --domain default --password-prompt neutron
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 65b68b9e2777473db9df94eed16758c3 |
| name                | neutron                          |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller ~]# openstack role add --project service --user neutron admin
[root@controller ~]# openstack service create --name neutron --description "Openstack Networkind" network
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Openstack Networkind             |
| enabled     | True                             |
| id          | 7d49630471994ec5bbe9a3430563beb7 |
| name        | neutron                          |
| type        | network                          |
+-------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne network public http://controller:9697
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | f59ab25cbc364fa598c8b611df35894b |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 7d49630471994ec5bbe9a3430563beb7 |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9697           |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne network internal http://controller:9697
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | a8f13ed1062c450a942247d0f61863a2 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 7d49630471994ec5bbe9a3430563beb7 |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9697           |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne network admin http://controller:9697
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 49c234bb62a9476381d1083279365460 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 7d49630471994ec5bbe9a3430563beb7 |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9697           |
+--------------+----------------------------------+

9.4 安装和配置组件

安装组件

[root@controller ~]# yum install -y openstack-neutron openstack--neutron-ml2 openstack-neutron-linuxbridge ebtables

配置server组件

编辑文件并完成以下作 行动:/etc/neutron/neutron.conf

​
​
在该部分中,配置数据库访问:[database]
[database]
# ...
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
​
在该部分中,启用 Modular Layer 2 (ML2) plug-in 和 disable additional plug-in:[DEFAULT]
[DEFAULT]
# ...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips=true
​
在该部分中,配置消息队列访问:[DEFAULT]RabbitMQ
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
​
在 和 部分中,配置 Identity Service 访问:[DEFAULT][keystone_authtoken]
[DEFAULT]
# ...
auth_strategy = keystone
​
[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
​
在 和 部分中,将 Networking (网络) 配置为 通知 Compute 网络拓扑更改:[DEFAULT][nova]
[DEFAULT]
# ...
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
​
[nova]
# ...
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
​
在该部分中,配置锁定路径:[oslo_concurrency]
[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

配置模块化第 2 层 (ML2) 插件

ML2 插件使用 Linux 桥接机制构建第 2 层(桥接 和 switching) 实例的虚拟网络基础设施。

编辑文件并完成 作:/etc/neutron/plugins/ml2/ml2_conf.ini

​
在该部分中,启用平面网络和 VLAN 网络:[ml2]
[ml2]
# ...
type_drivers = flat,vlan
​
在该部分中,禁用自助服务网络:[ml2]
[ml2]
# ...
tenant_network_types =vxlan
​
在该部分中,启用 Linux 桥接机制:[ml2]
[ml2]
# ...
mechanism_drivers = linuxbridge,12population
​
在该部分中,启用端口安全扩展驱动程序:[ml2]
[ml2]
# ...
extension_drivers = port_security
​
在该部分中,配置提供程序 virtual 网络作为平面网络:[ml2_type_flat]
[ml2_type_flat]
# ...
flat_networks = provider
​
在该部分中,配置 VXLAN 网络标识符 自助服务网络的范围:[ml2_type_vxlan]
[ml2_type_vxlan]
# ...
vni_ranges = 1:1000
​
在该部分中,启用 ipset 以增加 安全组规则效率:[securitygroup]
[securitygroup]
# ...
enable_ipset = true

配置Linux网桥代理

Linux 桥接代理构建第 2 层(桥接和交换)虚拟 网络基础设施并处理安全组。

编辑文件并 完成以下作:/etc/neutron/plugins/ml2/linuxbridge_agent.ini

​
​
在该部分中,将提供商虚拟网络映射到 提供商物理网络接口:[linux_bridge]
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
​
在该部分中,禁用 VXLAN 叠加网络:[vxlan]
[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
​
在该部分中,启用 security groups 和 配置 Linux 网桥 iptables 防火墙驱动程序:[securitygroup]
[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
​
确保您的 Linux作系统内核支持网桥过滤器 通过验证以下所有值都设置为 :sysctl1
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables

配置第3层代理

第 3 层 (L3) 代理为以下 自助式虚拟网络。

  • 编辑文件并完成以下作 行动:/etc/neutron/l3_agent.ini

​
在该部分中,配置 Linux 桥接接口驱动程序:[DEFAULT]
[DEFAULT]
# ...
interface_driver = linuxbridge

配置DHCP代理

DHCP 代理为虚拟网络提供 DHCP 服务。

  • 编辑文件并完成以下作 行动:/etc/neutron/dhcp_agent.ini

在该部分中,配置 Linux 桥接接口驱动程序, Dnsmasq DHCP 驱动程序,并启用隔离元数据,以便在提供程序上实例 网络可以通过网络访问元数据:[DEFAULT]
[DEFAULT]
# ...
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

编辑文件并完成以下作 行动:/etc/neutron/metadata_agent.ini

配置元数据代理

​
在该部分中,配置元数据主机和共享 秘密:[DEFAULT
[DEFAULT]
# ...
nova_metadata_host = controller
metadata_proxy_shared_secret = METADATA_SECRET

配置 Compute 服务以使用 Networking 服务

编辑文件并执行以下作:/etc/nova/nova.conf

在 配置访问参数 部分中,启用 metadata 代理,并配置 secret:[neutron]
[neutron]
# ...
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET

完成安装

Networking 服务初始化脚本需要一个指向 ML2 插件配置的符号链接 文件。如果此象征性 link 不存在,请使用以下命令创建它:/etc/neutron/plugin.ini``/etc/neutron/plugins/ml2/ml2_conf.ini

[root@controller ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
[root@controller ~]# 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

重新启动compute Api服务

[root@controller ~]# systemctl restart openstack-nova-api

启动 Networking 服务并将其配置为在系统 靴子。

对于这两个网络选项

[root@controller ~]# systemctl enable neutron-server neutron-linuxbridge-agent neutron-dhcp-agent
[root@controller ~]# systemctl start neutron-server neutron-linuxbridge-agent neutron-dhcp-agent
​
[root@controller ~]# systemctl enable neutron-l3-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-l3-agent.service to /usr/lib/systemd/system/neutron-l3-agent.service.
[root@controller ~]# systemctl start neutron-l3-agent

9.5 安装和配置计算节点

yum install openstack-neutron-linuxbridge ebtables ipset

9.6 配置通用组件

编辑文件并完成以下作 行动:/etc/neutron/neutron.conf

​
在该部分中,配置消息队列访问:[DEFAULT]RabbitMQ
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
​
在 和 部分中,配置 Identity Service 访问:[DEFAULT][keystone_authtoken]
[DEFAULT]
# ...
auth_strategy = keystone
​
[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
​
在该部分中,配置锁定路径:[oslo_concurrency]
[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

配置联网选项

编辑文件并 完成以下作:/etc/neutron/plugins/ml2/linuxbridge_agent.ini

​
在该部分中,将提供商虚拟网络映射到 提供商物理网络接口:[linux_bridge]
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
​
在启用 VXLAN 叠加网络部分中,配置 处理覆盖网络的物理网络接口的 IP 地址 网络,并启用 layer-2 填充:[vxlan]
[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
​
在该部分中,启用 security groups 和 配置 Linux 网桥 iptables 防火墙驱动程序:[securitygroup]
[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
​
确保您的 Linux作系统内核支持网桥过滤器 通过验证以下所有值都设置为 :sysctl1
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables

配置 Compute 服务以使用 Networking 服务

在该部分中,配置访问参数:[neutron]
​
[neutron]
# ...
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS

完成安装

重启compute服务

[root@compute ~]# systemctl restart openstack-nova-compute
[root@compute ~]# systemctl enable neutron-linuxbridge-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-linuxbridge-agent.service to /usr/lib/systemd/system/neutron-linuxbridge-agent.service.
[root@compute ~]# systemctl start neutron-linuxbridge-agen

9 安装dashboard

9.1 安装软件包

[root@controller ~]# yum install openstack-dashboard -y

9.2 修改配置文件 local_settings

[root@controller ~]# vim /etc/openstack-dashboard/local_settings
# 这里面有些配置项是本来就存在的,直接修改即可,不存在的直接添加
 
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['*']
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
 
CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'controller:11211',
    }
}
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 3,
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
# 这里面如果你安装的neutron是 provider类型的禁用第三项,其他的不变
OPENSTACK_NEUTRON_NETWORK = {
    ...
    'enable_router': False,
    'enable_quotas': False,
    'enable_distributed_router': True,
    'enable_ha_router': False,
    'enable_lb': False,
    'enable_firewall': False,
    'enable_vpn': False,
    'enable_fip_topology_check': False,
}
TIME_ZONE = "Asia/Shanghai"
# 这一行得加上
WEBROOT='/dashboard'

9.3 编辑openstack-dashboard.conf

[root@controller ~]# vim /etc/httpd/conf.d/openstack-dashboard.conf
# 加上这一行
WSGIApplicationGroup %{GLOBAL}

9.4 重启服务

[root@controller ~]# systemctl restart httpd.service memcached.service
 

到这里openstack的基础组件就安装完了,如果有其他需求可以根据官方文档来继续安装其他组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值