openstack云平台部署(完整教程)

环境要求

Openstack硬件环境:Vmware虚拟机3台,控制节点配置需求4C8G20G,计算节点2C4G20G

Openstack网络要求:至少一套网络,使用Vmware虚拟机的网络即可

操作系统要求:centos7*即可,openstack开源版本均支持大部分开源操作系统,centos、ubnutu、suse等等,centos7操作系统的安装详见操作系统安装文档。
本指南中使用的ip
控制节点:controller:192.168.44.3
计算节点:compute1:192.168.44.4
compute2:192.168.44.5

一、安装openstack前的前置操作(以下3台虚拟机均同样操作):

  1. 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
  1. 关闭selinux
1、vim /etc/selinux/config
 SELINUX=enforcing #把enforcing改为disabled
2、setenforce 0
3、reboot #重新启动让其生效
  1. hostname机hosts配置
[root@localhost ~]hostnamectl set-hostname --pretty controller
[root@localhost ~]hostnamectl set-hostname --static controller
[root@localhost ~]hostnamectl set-hostname --transient controller
[root@localhost ~]vi  /etc/hosts
...
192.168.44.3 controller
192.168.44.4 compute1
192.168.44.5 compute2

  1. 安装openstack及ceph的yum源
    能连接外网的情况下:
    下载安装openstack存储库:
yum install centos-release-openstack-train

安装后会自行在源配置路径/etc/yum.repo.d/下生成配置文件,之后加载即可使用

yum clean all && yum makecache

如果虚拟机无法上网的话,需要去
http://mirror.centos.org/centos-7/7.9.2009/cloud/x86_64/openstack-train/上拿取源包,放到虚拟机上配置本地源使用
5. 配置时间同步ntpd

[root@controller ~]yum -y install ntp*
[root@controller ~]systemctl start ntpd
[root@controller ~]systemctl enable ntpd
[root@controller ~]ntpdate ntp1.aliyun.com

二、安装openstack总体步骤

  1. 安装rabbitmq
  2. 安装etcd
  3. 安装memcached
  4. 安装MySQL
  5. 安装keystone
  6. 操作系统环境变量配置
  7. 安装glance
  8. 安装placement
  9. 安装nova
  10. 计算节点nova
  11. 安装neutron
  12. 计算节点neutron
  13. 安装dashboard
  14. 安装 cinder
  15. 计算节点cinder

1.Rabbitmq:

安装:

yum install rabbitmq-server -y

启动并配置为自动启动

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

在rabbitmq中添加openstack用户:

[root@controller ~]rabbitmqctl add_user openstack RABBIT_PASS #RABBIT_PASS换成合适的密码
Creating user "openstack" ...

配置改用户的权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...

开启管理界面插件:

rabbitmq-plugins enable rabbitmq_management

openstack部署成功后可以登录rabbitmq web管理界面:http://192.168.44.3:15672 如出现无法访问情况 检查端口:
netstat -anlp | grep 15672 如果还无法访问,手动添加安全组规则 端口15672 5672,然后重启服务
输入用户名:guest 密码:guest,点击login就可以登录

另,安装openstack客户端:

yum install python-openstackclient openstack-selinux -y

2.Etcd

安装:

yum install etcd -y

编辑配置文件:

vi /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.44.3:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.44.3:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.44.3:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.44.3:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.44.3:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

启动etcd

systemctl enable etcd
systemctl start etcd

3.Memcached

yum install memcached python-memcached -y

编辑配置文件/etc/sysconfig/memcached ,在最后添加上控制节点的主机名:

vi /etc/sysconfig/memcached
OPTIONS="-l 127.0.0.1,::1,controller"

启动

systemctl enable memcached.service
systemctl start memcached.service

4.MySQL

yum install mariadb mariadb-server python2-PyMySQL -y

创建和编辑/etc/my.cnf.d/openstack.cnf /etc/my.cnf.d/文件(如果需要,备份现有的配置文件)并完成以下操作:
创建一个[mysqld]section,设置bind-address key为controller节点的管理IP地址,允许其他节点通过管理网络访问。设置附加键以启用有用的选项和 UTF-8 字符集:

vi /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.44.3

default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

完成安装
启动数据库服务并配置它在系统启动时启动:

systemctl enable mariadb.service
systemctl start mariadb.service

初始化数据库并设置密码(123456)

 mysql_secure_installation

5.Keystone

安装mariadb数据库

mysql -u root -p

创建keystone数据库:

MariaDB [(none)]> CREATE DATABASE keystone;

授予对keystone数据库的适当访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456';
#(用合适的密码替换 KEYSTONE_DBPASS )

安装keystone

yum install openstack-keystone httpd mod_wsgi -y

编辑/etc/keystone/keystone.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:

[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
替换KEYSTONE_DBPASS为您为数据库选择的密码。

注释掉或删除connection该[database]部分中的任何其他选项 。

在[token]部分中,配置 Fernet 令牌提供程序:

[token]
# ...
provider = fernet

填充身份服务数据库:

su -s /bin/sh -c "keystone-manage db_sync" keystone

初始化 Fernet 密钥库:

在–keystone-user和–keystone-group标志用于指定将用于运行keystone操作系统的用户/组。提供这些是为了允许在另一个操作系统用户/组下运行
keystone。在下面的示例中,我们调用 user & group keystone。

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

引导身份服务:

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:5000/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne
替换ADMIN_PASS为适合管理用户的密码。

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

ServerName controller

如果该ServerName条目尚不存在,则需要添加该条目。

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

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

启动 Apache HTTP 服务并配置它在系统启动时启动:

systemctl enable httpd.service
systemctl start httpd.service

通过设置适当的环境变量来配置管理帐户:

$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:5000/v3
$ export OS_IDENTITY_API_VERSION=3

创建域、项目、用户和角色
1.尽管本指南中的keystone-manage 引导步骤中已经存在“默认”域,但创建新域的正式方法是:

$ openstack domain create --description "An Example Domain" example

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

$ openstack project create --domain default --description "Service Project" service

3.常规(非管理员)任务应使用非特权项目和用户。例如,本指南创建myproject项目和myuser 用户。
创建myproject项目:

$ openstack project create --domain default --description "Demo Project" myproject

为该项目创建其他用户时不要重复此步骤。
创建myuser用户:

$ openstack user create --domain default --password-prompt myuser

创建myrole角色:

$ openstack role create myrole

将myrole角色添加到myproject项目和myuser用户:

$ openstack role add --project myproject --user myuser myrole

创建 OpenStack 客户端环境脚本
为 和 项目和用户创建客户端环境脚本。本指南的后续部分将参考这些内容 用于为客户端操作加载相应凭据的脚本。
1.创建并编辑文件并添加以下内容:admin-openrc

$ vi admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换为您选择的密码 对于标识服务中的用户。ADMIN_PASS  admin

2.创建并编辑文件并添加以下内容:demo-openrc

$ vi demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换为您选择的密码 对于标识服务中的用户。DEMO_PASS videmo

使用脚本
要以特定项目和用户身份运行客户端,只需加载即可 运行它们之前的关联客户端环境脚本。 例如:
加载文件以填充 具有标识服务位置的环境变量 以及项目和用户凭据:admin-openrc

$ . /admin-openrc

请求身份验证令牌:

$ openstack token issue

6.操作系统环境配置
sysctl.conf文件配置:

vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_intvl = 2
net.ipv4.tcp_keepalive_probes = 1
#net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_synack_retries = 2
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_announce=2
net.ipv4.ip_forward = 1

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

net.core.somaxconn=8192

vm.swappiness = 0

/etc/sudoers文件配置:

cepher  ALL=(ALL)       NOPASSWD: ALL
nova    ALL=(ALL)       NOPASSWD: ALL
neutron ALL=(ALL)       NOPASSWD: ALL
ceilometer ALL = (root) NOPASSWD: /usr/bin/ceilometer-rootwrap /etc/ceilometer/rootwrap.conf *

/etc/security/limits.conf文件配置(end前):

* soft  nofile  65530
* hard  nofile  65530

* - memlock unlimited
* - nofile 100000
* - nproc 32768
* - as unlimited

/etc/systemd/system.conf #资源限制连接数

DefaultLimitNOFILE=20480
DefaultLimitNPROC=20480

上面这些配置完后要重启才能生效

7.Glance

在安装和配置 Image 服务之前,您必须创建数据库、服务凭证和 API 端点。
1.要创建数据库,请完成以下步骤:
使用数据库访问客户端以root用户身份连接数据库服务器:

$ mysql -u root -p

创建glance数据库:

MariaDB [(none)]> CREATE DATABASE glance;

授予对glance数据库的适当访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost'  IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'  IDENTIFIED BY 'GLANCE_DBPASS';
替换GLANCE_DBPASS为合适的密码。

退出数据库访问客户端。

2.来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

报错处理source admin-openrc

3.要创建服务凭证,请完成以下步骤:
创建glance用户:

$ openstack user create --domain default --password-prompt glance

将admin角色添加到glance用户和 service项目:

$ openstack role add --project service --user glance admin

创建glance服务实体:

$ openstack service create --name glance --description "OpenStack Image" image

创建镜像服务 API 端点:

$ openstack endpoint create --region RegionOne image public http://controller:9292
$ openstack endpoint create --region RegionOne image internal http://controller:9292 
$ openstack endpoint create --region RegionOne image admin http://controller:9292

安装和配置组件
安装软件包:

yum install openstack-glance -y

编辑/etc/glance/glance-api.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
#vi /etc/glance/glance-api.conf

[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

替换GLANCE_DBPASS为您为Glance:服务数据库选择的密码。

在[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_PASS为您glance在身份服务中为用户选择的密码 。

在该[glance_store]部分中,配置本地文件系统存储和镜像文件的位置:

[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images

填充glance服务数据库:

 su -s /bin/sh -c "glance-manage db_sync" glance

编辑/etc/glance/glance-registry.conf文件并完成以下操作:

在该[database]部分中,配置数据库访问:

[database]

#...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

替换GLANCE_DBPASS为您为Glance服务数据库选择的密码。

在[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_PASS为您glance在身份服务中为用户选择的密码 。
完成安装
启动 Image 服务并将它们配置为在系统启动时启动:

systemctl enable openstack-glance-api.service
systemctl start openstack-glance-api.service

8.placement

1.创建数据库
要创建数据库,请完成以下步骤:
使用数据库访问客户端以root用户身份连接数据库服务器:

$ mysql -u root -p

创建placement数据库:

MariaDB [(none)]> CREATE DATABASE placement;

授予对数据库的适当访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'PLACEMENT_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'PLACEMENT_DBPASS';

替换PLACEMENT_DBPASS为合适的密码。

退出数据库访问客户端。

2.配置用户和端点
来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

使用您选择的创建一个安置服务用户PLACEMENT_PASS:

$ openstack user create --domain default --password-prompt placement

3.将 Placement 用户添加到具有 admin 角色的服务项目:

$ openstack role add --project service --user placement admin

4.在服务目录中创建 Placement API 条目:

$ openstack service create --name placement \
  --description "Placement API" placement

5.创建 Placement API 服务端点:
(根据环境,端点的 URL 会因端口(可能是 8780 而不是 8778,或者根本没有端口)和主机名而异。确定正确的 URL。)

$ openstack endpoint create --region RegionOne \
  placement public http://controller:8778
$ openstack endpoint create --region RegionOne \
  placement internal http://controller:8778
$ openstack endpoint create --region RegionOne \
  placement admin http://controller:8778

安装和配置组件
1.安装软件包:

yum install openstack-placement-api -y

2.编辑/etc/placement/placement.conf文件并完成以下操作:
#vi /etc/placement/placement.conf

在该[placement_database]部分中,配置数据库访问:

[placement_database]
# ...
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement

替换PLACEMENT_DBPASS为您为展示位置数据库选择的密码。

在[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

替换PLACEMENT_PASS为您placement在身份服务中为用户选择的密码 。

笔记 注释掉或删除该[keystone_authtoken] 部分中的任何其他选项。
、的值user_name,password,project_domain_name并
user_domain_name需要在你的keystone配置同步。

3.填充placement数据库:

 su -s /bin/sh -c "placement-manage db sync" placement

完成安装
4.重启httpd服务:

systemctl restart httpd

9.nova控制节点

1.使用数据库访问客户端以root用户身份连接数据库服务器:

$ mysql -u root -p

创建nova_api,nova和nova_cell0数据库:

MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;

授予对数据库的适当访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  IDENTIFIED BY '123456';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY '123456';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
  IDENTIFIED BY '123456';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
  IDENTIFIED BY '123456';

替换NOVA_DBPASS为合适的密码。(这里设置的是123456)

数据库访问客户端。

2.来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

3.创建计算服务凭证:
创建nova用户:

$ openstack user create --domain default --password-prompt nova

admin为nova用户添加角色:

$ openstack role add --project service --user nova admin

此命令不提供任何输出。

创建nova服务实体:

$ openstack service create --name nova \
  --description "OpenStack Compute" comput

4.创建 Compute API 服务端点:

$ openstack endpoint create --region RegionOne \
  compute public http://controller:8774/v2.1
 
$ openstack endpoint create --region RegionOne \
  compute internal http://controller:8774/v2.1
 
$ openstack endpoint create --region RegionOne \
  compute admin http://controller:8774/v2.1

安装和配置组件
1.安装软件包:

 yum install openstack-nova-api openstack-nova-conductor \
  openstack-nova-novncproxy openstack-nova-scheduler libvirt -y

2.编辑/etc/nova/nova.conf文件并完成以下操作:
#vi /etc/nova/nova.conf
在该[DEFAULT]部分中,仅启用计算和元数据 API:

[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

替换NOVA_DBPASS为您为 数据库选择的密码。

在该[DEFAULT]部分,配置RabbitMQ消息队列访问:

[DEFAULT]
 ...
transport_url = rabbit://openstack:RABBIT_PASS@controller:5672/

替换RABBIT_PASS为您为 中的openstack 帐户选择的密码。

在[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

替换NOVA_PASS为您nova在身份服务中为用户选择的密码。

笔记 注释掉或删除该[keystone_authtoken] 部分中的任何其他选项。

在该[DEFAULT]部分中,配置my_ip选项以使用控制器节点的管理接口 IP 地址:

[DEFAULT]
 ...
my_ip = 192.168.44.3

在该[DEFAULT]部分中,启用对网络服务的支持:

[DEFAULT]
 ...
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

笔记 默认情况下,Compute
使用内部防火墙驱动程序。由于网络服务包括防火墙驱动程序,您必须使用nova.virt.firewall.NoopFirewallDriver防火墙驱动程序禁用计算防火墙驱动程序。

配置/etc/nova/nova.conf的[neutron]部分。有关更多详细信息,请参阅网络服务安装指南。

在该[vnc]部分中,将 VNC 代理配置为使用控制器节点的管理接口 IP 地址:

[vnc]
enabled = true
 ...
server_listen = $my_ip
server_proxyclient_address = $my_ip

在该[glance]部分中,配置 Image 服务 API 的位置:

[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

替换PLACEMENT_PASS为您为placement安装Placement时创建的服务用户 选择的密码 。注释掉或删除该[placement]部分中的任何其他选项。

3.填充nova-api数据库:

su -s /bin/sh -c "nova-manage api_db sync" nova

4.注册cell0数据库:

su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

5.创建cell1单元格:

su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

6.填充 nova 数据库:

su -s /bin/sh -c "nova-manage db sync" nova

7.验证 nova cell0 和 cell1 是否正确注册:

su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

完成安装
启动 Compute 服务并将它们配置为在系统启动时启动:

systemctl enable \
    openstack-nova-api.service \
    openstack-nova-scheduler.service \
    openstack-nova-conductor.service \
    openstack-nova-novncproxy.service
systemctl start \
    openstack-nova-api.service \
    openstack-nova-scheduler.service \
    openstack-nova-conductor.service \
    openstack-nova-novncproxy.service

10.nova计算节点

安装软件包:

yum install openstack-nova-compute libvirt -y

编辑/etc/nova/nova.conf文件并完成以下操作:
#vi /etc/nova/nova.conf
在该[DEFAULT]部分中,仅启用计算和元数据 API:

[DEFAULT]
 ...
enabled_apis = osapi_compute,metadata

在该[DEFAULT]部分,配置RabbitMQ消息队列访问:

[DEFAULT]
 ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS为您为 中的openstack 帐户选择的密码。

在[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

替换NOVA_PASS为您nova在身份服务中为用户选择的密码。

在该[DEFAULT]部分中,配置my_ip选项:

[DEFAULT]
 ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

替换MANAGEMENT_INTERFACE_IP_ADDRESS为计算节点上管理网络接口的 IP 地址,
在该[DEFAULT]部分中,启用对网络服务的支持:

[DEFAULT]
 ...
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

笔记 默认情况下,Compute 使用内部防火墙服务。由于网络包括防火墙服务,您必须使用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

服务器组件侦听所有 IP 地址,代理组件仅侦听计算节点的管理接口 IP 地址。基本 URL 指示您可以使用 Web浏览器访问此计算节点上实例的远程控制台的位置。 如果用于访问远程控制台的 Web
浏览器驻留在无法解析controller主机名的主机上,则必须替换 controller为控制器节点的管理接口 IP 地址。

在该[glance]部分中,配置 Image 服务 API 的位置:

[glance]
 ...
api_servers = http://controller:9292

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp

在[placement]部分中,配置 Placement API:

[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

替换PLACEMENT_PASS为您placement在身份服务中为用户选择的密码 。注释掉该[placement]部分中的任何其他选项。
完成安装
1.确定计算节点是否支持虚拟机的硬件加速:

$ egrep -c '(vmx|svm)' /proc/cpuinfo

如果此命令返回值one or greater,则计算节点支持硬件加速,这通常不需要额外配置。
如果此命令返回值zero,则计算节点不支持硬件加速,您必须配置libvirt为使用 QEMU 而不是 KVM。

编辑文件中的[libvirt]部分,/etc/nova/nova.conf如下所示:

[libvirt]
 ...
virt_type = qemu

启动 Compute 服务及其依赖项,并将它们配置为在系统启动时自动启动:

 systemctl enable libvirtd.service openstack-nova-compute.service
 systemctl start libvirtd.service openstack-nova-compute.service

如果有遇到起不起来rabbitmq一直报连接不上的加下这条

 compute_driver=libvirt.LibvirtDriver

将计算节点添加到单元数据库
在控制器节点上运行以下命令:
1.获取管理员凭据以启用仅限管理员的 CLI 命令,然后确认数据库中有计算主机:

$ . admin-openrc
$ openstack compute service list --service nova-compute

2.发现计算主机

su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

11.neutron控制节点

1.要创建数据库,请完成以下步骤:
用数据库访问客户端以root用户身份连接数据库服务器:

$ mysql -u root -p

创建neutron数据库:

MariaDB [(none)] CREATE DATABASE neutron;

授予对neutron数据库的适当访问权限,替换 NEUTRON_DBPASS为合适的密码:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost'  IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%'  IDENTIFIED BY 'NEUTRON_DBPASS';

退出数据库访问客户端。
2.来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

3.要创建服务凭证,请完成以下步骤:
创建neutron用户:

$ openstack user create --domain default --password-prompt neutron

admin为neutron用户添加角色:

$ openstack role add --project service --user neutron admin

此命令不提供任何输出。

创建neutron服务实体:

$ openstack service create --name neutron \
  --description "OpenStack Networking" network

4.创建网络服务 API 端点:

$ openstack endpoint create --region RegionOne \
  network public http://controller:9696
$ openstack endpoint create --region RegionOne \
  network internal http://controller:9696

$ openstack endpoint create --region RegionOne \
  network admin http://controller:9696

配置网络选项 可以使用以下两种体系结构之一部署网络服务 以选项1和2为代表。

选项 1 部署了最简单的体系结构,该体系结构仅支持 将实例附加到提供商(外部)网络。没有自助服务(私人) 网络、路由器或浮动 IP
地址。只有 或其他 特权用户可以管理提供商网络。admin

选项 2 使用支持连接的第 1 层服务扩充选项 3 实例到自助服务网络。或其他非特权 用户可以管理自助服务网络,包括提供
自助服务和提供商网络之间的连接。此外 浮动 IP 地址使用自助服务提供与实例的连接 来自外部网络(如互联网)的网络。demo

自助服务网络通常使用覆盖网络。叠加网络 VXLAN 等协议包括增加开销的其他标头 并减少可用于有效负载或用户数据的空间。没有知识
的虚拟网络基础结构,实例尝试发送数据包 使用默认以太网最大传输单元 (MTU) 1500 字节。网络服务自动提供正确的 MTU 值 通过
DHCP 传输到实例。但是,某些云映像不使用 DHCP 或忽略 DHCP MTU 选项,并需要使用元数据或脚本进行配置。

注意 选项 2 还支持将实例附加到提供商网络。
选项1请参考官网:https://docs.openstack.org/neutron/train/install/controller-install-option1-rdo.html
网络选项 2:自助服务网络
安装组件

yum install openstack-neutron openstack-neutron-ml2 \
  openstack-neutron-linuxbridge ebtables ipset -y

配置服务器组件
编辑/etc/neutron/neutron.conf文件并完成以下操作:
#vi /etc/neutron/neutron.conf
在该[database]部分中,配置数据库访问:

[database]
 ...
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

替换NEUTRON_DBPASS为您为数据库选择的密码。

在该[DEFAULT]部分中,启用模块化第 2 层 (ML2) 插件、路由器服务和重叠 IP 地址:

[DEFAULT]
 ...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true

在该[DEFAULT]部分,配置RabbitMQ 消息队列访问:

[DEFAULT]
#...
transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS为您openstack在 RabbitMQ 中为帐户选择的密码 。

在[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

替换NEUTRON_PASS为您neutron 在身份服务中为用户选择的密码。

注释掉或删除该[keystone_authtoken]部分中的任何其他选项 。

在[DEFAULT]和[nova]部分中,配置 Networking 以通知 Compute 网络拓扑更改:

[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

替换NOVA_PASS为您nova 在身份服务中为用户选择的密码。

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]
 ...
lock_path = /var/lib/neutron/tmp

配置模块化第 2 层 (ML2) 插件
ML2 插件使用 Linux 桥接机制为实例构建第 2 层(桥接和交换)虚拟网络基础设施。
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成以下操作:
#vi /etc/neutron/plugins/ml2/ml2_conf.ini
在该[ml2]部分中,启用平面、VLAN 和 VXLAN 网络:

[ml2]
 ...
type_drivers = flat,vlan,vxlan

在该[ml2]部分中,启用 VXLAN 自助网络:

[ml2]
 ...
tenant_network_types = vxlan

在该[ml2]部分中,启用 Linux 桥接和二层填充机制:

[ml2]

 ...
mechanism_drivers = linuxbridge,l2population

警告 配置 ML2 插件后,删除type_drivers选项中的值 可能会导致数据库不一致。

Linux 网桥代理仅支持 VXLAN 覆盖网络。

在该[ml2]部分中,启用端口安全扩展驱动程序:

[ml2]
 ...
extension_drivers = port_security

在该[ml2_type_flat]部分中,将提供者虚拟网络配置为平面网络:

[ml2_type_flat]
 ...
flat_networks = provider

在该[ml2_type_vxlan]部分中,配置自助网络的 VXLAN 网络标识符范围:

[ml2_type_vxlan]
#...
vni_ranges = 1:1000

在该[securitygroup]部分中,启用ipset以提高安全组规则的效率:

[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

替换PROVIDER_INTERFACE_NAME为底层提供者物理网络接口的名称。ens33
在该[vxlan]部分中,启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启用二层填充:

[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true

替换OVERLAY_INTERFACE_IP_ADDRESS为处理覆盖网络的底层物理网络接口的 IP 地址。示例架构使用管理接口将流量隧道传输到其他节点。因此,替换OVERLAY_INTERFACE_IP_ADDRESS为控制器节点的管理 IP 地址。有关详细信息,请参阅 主机网络。

在该[securitygroup]部分中,启用安全组并配置 Linux 网桥 iptables 防火墙驱动程序:

[securitygroup]
 ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

通过验证以下所有sysctl值都设置为,确保您的 Linux 操作系统内核支持网桥过滤器1:
编辑/etc/sysctl.conf加入:

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

保存退出,输入modprobe br_netfilter加载内核模块,最后sysctl -p查看是否生效

 modprobe br_netfilter
 sysctl -p

要启用网络桥接支持,通常br_netfilter需要加载内核模块。有关启用此模块的其他详细信息,请查看操作系统的文档。

配置三层代理
第 3 层 (L3) 代理为自助服务虚拟网络提供路由和 NAT 服务。

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

在该[DEFAULT]部分中,配置 Linux 桥接接口驱动程序:

[DEFAULT]
 ...
interface_driver = linuxbridge

配置 DHCP 代理
DHCP 代理为虚拟网络提供 DHCP 服务。
编辑/etc/neutron/dhcp_agent.ini文件并完成以下操作:
在该[DEFAULT]部分中,配置 Linux 桥接接口驱动程序、Dnsmasq DHCP 驱动程序,并启用隔离元数据,以便提供商网络上的实例可以通过网络访问元数据:

[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

替换METADATA_SECRET为元数据代理的合适密钥。

配置 Compute 服务以使用 Networking 服务

笔记 必须安装 Nova 计算服务才能完成此步骤。有关更多详细信息,请参阅文档网站安装指南部分下的计算安装指南 。

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

在该[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

替换NEUTRON_PASS为您neutron 在身份服务中为用户选择的密码。
替换METADATA_SECRET为您为元数据代理选择的机密。
请参阅计算服务配置指南 以获取完整的选项集,包括必要时覆盖服务目录端点 URL。

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

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

2.填充数据库:

 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

3.重启计算 API 服务:

 systemctl restart openstack-nova-api.service

4.启动网络服务并将它们配置为在系统启动时启动。

对于两个网络选项:

 systemctl enable neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service
 systemctl start neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service

对于网络选项 2,还启用并启动第 3 层服务:

systemctl enable neutron-l3-agent.service
systemctl start neutron-l3-agent.service

12.neutron计算节点

安装组件

 yum install openstack-neutron-linuxbridge ebtables ipset -y

配置通用组件
Networking 通用组件配置包括身份验证机制、消息队列和插件。

编辑/etc/neutron/neutron.conf文件并完成以下操作:
在该[database]部分中,注释掉所有connection选项,因为计算节点不直接访问数据库。
在该[DEFAULT]部分,配置RabbitMQ 消息队列访问:

[DEFAULT]
 ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS为您openstack 在 RabbitMQ 中为帐户选择的密码。

在[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

替换NEUTRON_PASS为您neutron 在身份服务中为用户选择的密码。

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]
 ...
lock_path = /var/lib/neutron/tmp

在计算节点上配置网络组件。

配置 Linux 网桥代理
Linux 桥接代理为实例构建第 2 层(桥接和交换)虚拟网络基础架构并处理安全组。

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

在该[linux_bridge]部分中,将提供者虚拟网络映射到提供者物理网络接口:

[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

替换PROVIDER_INTERFACE_NAME为底层提供者物理网络接口的名称。有关 详细信息,请参阅主机网络。

在该[vxlan]部分中,启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启用二层填充:

[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true

替换OVERLAY_INTERFACE_IP_ADDRESS为处理覆盖网络的底层物理网络接口的 IP 地址。示例架构使用管理接口将流量隧道传输到其他节点。因此,替换OVERLAY_INTERFACE_IP_ADDRESS为计算节点的管理IP地址。有关详细信息,请参阅 主机网络。

在该[securitygroup]部分中,启用安全组并配置 Linux 网桥 iptables 防火墙驱动程序:

[securitygroup]
 ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

通过验证以下所有sysctl值都设置为,确保您的 Linux 操作系统内核支持网桥过滤器1:
编辑/etc/sysctl.conf加入:

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

保存退出,输入modprobe br_netfilter加载内核模块,最后sysctl -p查看是否生效

 modprobe br_netfilter
 sysctl -p

要启用网络桥接支持,通常br_netfilter需要加载内核模块。有关启用此模块的其他详细信息,请查看操作系统的文档。

配置 Compute 服务以使用 Networking 服务
编辑/etc/nova/nova.conf文件并完成以下操作:

在该[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

替换NEUTRON_PASS为您neutron 在身份服务中为用户选择的密码。

完成安装
1.重启计算服务:

 systemctl restart openstack-nova-compute.service

2.启动 Linux 网桥代理并将其配置为在系统启动时启动:

systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

13.dashboard:
本节假设使用 Apache HTTP 服务器和 Memcached 服务正确安装、配置和操作 Identity 服务。
安装和配置组件
1.安装软件包:

yum install openstack-dashboard -y

2.编辑 /etc/openstack-dashboard/local_settings 文件并完成以下操作:
配置仪表板以在controller节点上使用 OpenStack 服务 :

WEBROOT = '/dashboard'
OPENSTACK_HOST = "controller"

允许您的主机访问仪表板:

ALLOWED_HOSTS = ['one.example.com', 'two.example.com']

笔记 ALLOWED_HOSTS 也可以是 [‘*’] 来接受所有主机。这可能对开发工作有用,但可能不安全,不应在生产中使用。有关
更多信息,请参阅
https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts。

配置memcached会话存储服务:

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'controller:11211',
    }
}

笔记 注释掉任何其他会话存储配置。

启用身份 API 版本 3:

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

启用对域的支持:

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

配置 API 版本:

OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 3,
}

配置Default为您通过仪表板创建的用户的默认域:

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

配置user为您通过仪表板创建的用户的默认角色:

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

如果您选择网络选项 1,请禁用对第 3 层网络服务的支持(如果用的是网络选项2的话不用修改):

OPENSTACK_NEUTRON_NETWORK = {
    ...
    'enable_router': False,
    'enable_quotas': False,
    'enable_distributed_router': False,
    'enable_ha_router': False,
    'enable_lb': False,
    'enable_firewall': False,
    'enable_vpn': False,
    'enable_fip_topology_check': False,
}

(可选)配置时区:

TIME_ZONE = "Asia/Shanghai"

替换TIME_ZONE为适当的时区标识符。有关更多信息,请参阅时区列表。

/etc/httpd/conf.d/openstack-dashboard.conf如果不包括,则添加以下行 。

WSGIApplicationGroup %{GLOBAL}

完成安装
重新启动 Web 服务器和会话存储服务:

systemctl restart httpd.service memcached.service

14.cinder控制节点

1.使用数据库访问客户端以root用户身份连接数据库服务器:

$ mysql -u root -p

创建cinder数据库:

MariaDB [(none)]> CREATE DATABASE cinder;

授予对cinder数据库的适当访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
  IDENTIFIED BY 'CINDER_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
  IDENTIFIED BY 'CINDER_DBPASS';

替换CINDER_DBPASS为合适的密码。
退出数据库访问客户端。

2.来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

3.要创建服务凭证,请完成以下步骤:
创建cinder用户:

 $ openstack user create --domain default --password-prompt cinder

admin为cinder用户添加角色:

$ openstack role add --project service --user cinder admin

创建cinderv2和cinderv3服务实体:

 $ openstack service create --name cinderv2 \
  --description "OpenStack Block Storage" volumev2
 
 $ openstack service create --name cinderv3 \
  --description "OpenStack Block Storage" volumev3

(块存储服务需要两个服务实体。)

4.创建块存储服务 API 端点:

$ openstack endpoint create --region RegionOne \
  volumev2 public http://controller:8776/v2/%\(project_id\)s
$ openstack endpoint create --region RegionOne \
  volumev2 internal http://controller:8776/v2/%\(project_id\)s
$ openstack endpoint create --region RegionOne \
  volumev2 admin http://controller:8776/v2/%\(project_id\)s
$ openstack endpoint create --region RegionOne \
  volumev3 public http://controller:8776/v3/%\(project_id\)s
$ openstack endpoint create --region RegionOne \
  volumev3 internal http://controller:8776/v3/%\(project_id\)s
$ openstack endpoint create --region RegionOne \
  volumev3 admin http://controller:8776/v3/%\(project_id\)s

(块存储服务需要每个服务实体的端点。)

安装和配置组件
1.安装软件包:

 yum install openstack-cinder -y

2.编辑/etc/cinder/cinder.conf文件并完成以下操作:
#vi /etc/cinder/cinder.conf
在该[database]部分中,配置数据库访问:

[database]
 ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

替换CINDER_DBPASS为您为 Block Storage 数据库选择的密码。

在该[DEFAULT]部分,配置RabbitMQ 消息队列访问:

[DEFAULT]
 ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS为您为 中的openstack帐户选择的密码 RabbitMQ。

在[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 = cinder
password = CINDER_PASS

替换CINDER_PASS为您cinder在身份服务中为用户选择的密码。

注释掉或删除该[keystone_authtoken]部分中的任何其他选项 。

在该[DEFAULT]部分中,配置my_ip选项以使用控制器节点的管理接口 IP 地址:

[DEFAULT]
 ...
my_ip = 192.168.44.3

3.在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]
 ...
lock_path = /var/lib/cinder/tmp

4.填充块存储数据库:

 su -s /bin/sh -c "cinder-manage db sync" cinder

(忽略此输出中的任何弃用消息。)

配置 Compute 以使用块存储
1.编辑/etc/nova/nova.conf文件并将以下内容添加到其中:

[cinder]
os_region_name = RegionOne

完成安装
1.重启计算 API 服务:

systemctl restart openstack-nova-api.service

2.启动块存储服务并配置它们在系统启动时启动:

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

15.cinder计算节点

1.安装支持的实用程序包:
安装 LVM 包:

 yum install lvm2 device-mapper-persistent-data

启动 LVM 元数据服务并将其配置为在系统启动时启动:

 systemctl enable lvm2-lvmetad.service
 systemctl start lvm2-lvmetad.service

2.创建 LVM 物理卷/dev/sdb;

$ pvcreate /dev/sdb
Physical volume "/dev/sda1" successfully created

3.创建 LVM 卷组cinder-volumes:

$ vgcreate cinder-volumes /dev/sdb
 Volume group "cinder-volumes" successfully created

Block Storage 服务在这个卷组中创建逻辑卷。

4.只有实例可以访问块存储卷。但是,底层操作系统管理与卷关联的设备。默认情况下,LVM 卷扫描工具会扫描/dev包含卷的块存储设备的 目录。如果项目在其卷上使用 LVM,扫描工具会检测这些卷并尝试缓存它们,这可能会导致底层操作系统和项目卷出现各种问题。您必须重新配置 LVM 以仅扫描包含cinder-volumes卷组的设备。编辑 /etc/lvm/lvm.conf文件并完成以下操作:
在该devices部分中,添加一个接受/dev/sdb设备并拒绝所有其他设备的过滤 器:

devices {
...
filter = [ "a/sdb/", "r/.*/"]

滤波器阵列中的每个项目开始于a用于接受或 r用于拒绝,并且包括用于所述装置名称的正则表达式。该阵列必须r/.*/以拒绝任何剩余设备结束。您可以使用vgs -vvvv命令来测试过滤器。

警告 如果您的存储节点在操作系统磁盘上使用 LVM,您还必须将关联的设备添加到过滤器中。例如,如果/dev/sda设备包含操作系统:
filter = [ “a/sda/”, “a/sdb/”, “r/./"] 同样,如果您的计算节点在操作系统磁盘上使用
LVM,您还必须修改/etc/lvm/lvm.conf这些节点上文件中的过滤器 以仅包含操作系统磁盘。例如,如果/dev/sda
设备包含操作系统: filter = [ “a/sda/”, "r/.
/”]

安装和配置组件
1.安装软件包:

 yum install openstack-cinder targetcli python-keystone -y

2.编辑/etc/cinder/cinder.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:

[database]
 ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

替换CINDER_DBPASS为您为 Block Storage 数据库选择的密码。

在该[DEFAULT]部分,配置RabbitMQ 消息队列访问:

[DEFAULT]
 ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS为您为 中的openstack帐户选择的密码。

在[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 = cinder
password = CINDER_PASS

替换CINDER_PASS为您cinder在身份服务中为用户选择的密码 。

注释掉或删除该[keystone_authtoken]部分中的任何其他选项 。

在该[DEFAULT]部分中,配置my_ip选项:

[DEFAULT]
 ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

替换MANAGEMENT_INTERFACE_IP_ADDRESS为存储节点上管理网络接口的 IP 地址

在该[lvm]部分中,使用 LVM 驱动程序、cinder-volumes卷组、iSCSI 协议和适当的 iSCSI 服务配置 LVM 后端。如果该[lvm]部分不存在,请创建它:

[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = lioadm

在该[DEFAULT]部分中,启用 LVM 后端:

[DEFAULT]
...
enabled_backends = lvm

后端名称是任意的。例如,本指南使用驱动程序的名称作为后端的名称。

在该[DEFAULT]部分中,配置 Image 服务 API 的位置:

[DEFAULT]
 ...
glance_api_servers = http://controller:9292

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]
#...
lock_path = /var/lib/cinder/tmp

完成安装
启动 Block Storage 卷服务及其依赖项,并将它们配置为在系统启动时启动:

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

登录dsahboard

http://192.168.44.3/dashboard
在这里插入图片描述

控制节点ip登录

下面进行安装好openstack后的操作,在控制节点上,加载. admin-openrc后进行创建网络、规格、安全组、密钥等

创建网络:

openstack network create  --share --external --provider-physical-network provider --provider-network-type flat provider		
openstack subnet create --network provider --allocation-pool start=192.168.44.10,end=192.168.50.254 --gateway 192.168.0.254 --subnet-range 192.168.0.0/16 provider

创建规格:

openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

创建密钥对:

ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

创建安全组并允许SSH访问:

openstack security group rule create --proto icmp default 
openstack security group rule create --proto tcp --dst-port 22 default

创建个user的,不然后面创建项目创建用户会报找不到token

openstack role create user

创建一个镜像文件

Touch cirros-0.5.2-x86_64-disk.img

上传镜像:

openstack image create NEW_IMAGE_NAME --container-format bare --disk-format qcow2 --file IMAGE_URL

最后,在dashboard界面台中创建实例吧

openstack云镜像下载地址:https://cloud.centos.org/centos/7/images/
官方文档:https://docs.openstack.org/install-guide/

Logo

鸿蒙生态一站式服务平台。

更多推荐