(openstack搭建)openstack云平台部署-详细完整教程
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
2 关闭selinux
1、vim /etc/selinux/config
SELINUX=enforcing #把enforcing改为disabled
2、setenforce 0
3、reboot #重新启动让其生效
3、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
4、安装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总体步骤
安装rabbitmq
安装etcd
安装memcached
安装MySQL
安装keystone
操作系统环境变量配置
安装glance
安装placement
安装nova
计算节点nova
安装neutron
计算节点neutron
安装dashboard
安装 cinder
计算节点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';
#(用合适的密码替换 KEYSTONE_DBPASS )
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456';
安装keystone
yum install openstack-keystone httpd mod_wsgi -y
编辑/etc/keystone/keystone.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
vim /etc/keystone/keystone.conf
[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选项以引用控制器节点:
vim etc/httpd/conf/httpd.conf
ServerName controller
如果该ServerName条目尚不存在,则需要添加该条目。
创建/usr/share/keystone/wsgi-keystone.conf文件链接:
vim 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
1
创建 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
$ sh 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命令:
sh 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" compute
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 服务 :
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['horizon.example.com', '*']
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"
OPENSTACK_NEUTRON_NETWORK = {
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False,
'enable_auto_allocated_network': False,
'enable_distributed_router': False,
'enable_fip_topology_check': False,
'enable_ha_router': False,
'enable_ipv6': False,
'enable_quotas': False,
'enable_rbac_policy': False,
'enable_router': False,
}
TIME_ZONE = "Asia/Shanghai"
WEBROOT="/dashboard"
替换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/