文章目录
- 1、安装并配置系统基础环境
- 2、 安装部署认证服务 (Identity Service )
- 3、安装镜像服务 - Glance(在控制节点安装)
- 4、安装计算服务-Nova(控制节点)
- 4.1 用数据库连接客户端
- 4.2 创建 nova_api 、 nova 和nova_cell0数据库
- 4.3 授予对数据库的适当访问权限
- 4.4 获得 admin 凭证
- 4.5 创建 nova 用户 (密码 NOVA_PASS)
- 4.6 给 nova 用户添加 admin 角色
- 4.7 创建 nova 服务实体
- 4.8 创建 Compute 服务 API 端点
- 4.9 创建Placement service (密码 PLACEMENT_PASS)
- 4.10 给 placement 添加 admin 角色
- 4.11 创建 Placement API
- 4.12 创建 Placement API service endpoints
- 4.13 安装控制节点Nova软件包
- 4.14 编辑``/etc/nova/nova.conf``文件并完成下面的操作
- 4.15 重启http服务
- 4.16 同步数据库
- 4.17 启动 Nova 服务并将其设置为随系统启动
1、安装并配置系统基础环境
1.1 操作系统版本
CentOS 7.4 64bit
1.2 配置IP地址信息
首先建议大家用vim,vim和vi操作的区别就是高亮,vim能让人更清晰的看出代码之间的差异。
yum install vim
正式配置我们的网卡信息,我的网卡有四张,名字为ens33,ens34,ens35,ens36
#配置管理网/API网络的IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#配置Ovelary网络的IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens34
vim /etc/sysconfig/network-scripts/ifcfg-ens35
vim /etc/sysconfig/network-scripts/ifcfg-ens36
#四张网卡操作均相同
#1、ONBOOT=yes
#2、删除网卡UUID
1.3 配置主机名
这项操作是为了让今后对节点操作的时候心中不乱。
hostnamectl set-hostname controller
hostnamectl set-hostname cinder
hostnamectl set-hostname compute-01
hostnamectl set-hostname compute-02
1.4 配置域名解析
此项操作在controller,compute01,compute02和cinder结点都相同。分别配置他们的DNS。
vi /etc/hosts
#复制如下信息至四台结点
#这是我自己的ens33网卡的信息,其中具体的ip地址要按照你们的网络分配的IP来
#不要完全复制我的网卡IP地址。
192.168.124.27 controller
192.168.124.31 network
192.168.124.32 compute-01
192.168.124.33 compute-02
1.5 关闭Selinux
这项操作要在四个结点都进行操作
vim /etc/sysconfig/selinux
#设置如下信息
SELINUX=disabled
#该操作需要重启才能生效,但先别急着重启。
1.6 关闭并禁用防火墙
这项操作同样要在四个结点都进行操作
#关闭防火墙(重启后才生效)
systemctl stop firewalld
#禁用防火墙
systemctl disable firewalld
1.7 重启系统
重启系统,让selinux的关闭,以及防火墙的关闭以及禁用操作生效。
reboot
查看一下selinux关闭成功了没:
getenforce
#显示应该为disabled
再查看一下防火墙关闭成功了没:
systemctl status firewalld
1.8 配置网络时间协议(NTP)
这个操作也要再四台虚拟机同时操作,但控制节点和其他节点不同,他的目的是让其他节点的时间和控制节点同步。
#1)首先四台结点都要安装chrony包
yum install chrony -y
#2)下面的操作在controller结点的配置文件设置
vi /etc/chrony.conf
#设置允许以下网段的信息:(直接找到allow开头的一行,把注释去掉进行修改)
allow 192.168.124.0/24
#3)下面的操作在cinder,compute01,compute02结点的配置文件设置
vi /etc/chrony.conf
#注释掉前面server0,server1,server2,server3的三行代码,同时在其下添加一行:
server controller iburst
#4)下面开启chrony服务,此操作要在四个结点都进行
systemctl enable chronyd.service
systemctl start chronyd.service
#5)查看一下服务开启情况
chronyc sources
#正常情况下,在compute01,compute02,cinder结点执行上述命令后
#会显示一个controller的信息,不会出现其他信息。
#如果出现了的列表中没有controller,则执行以下操作,
#如果出现了就以下操作就不用进行操作了。
#6)安装ntpdate
yum install ntpdate
ntpdate controller
#7)重启并查看一下服务开启情况
systemctl restart chronyd.service
chronyc sources
#此时应该已经成功了
1.9 安装Stack软件仓库 和 OpenStack client
yum install centos-release-openstack-queens
yum install python-openstackclient
- 注意,以下部分都是在控制节点安装配置的
1.10 安装并配置SQL数据库
yum install mariadb mariadb-server python2-PyMySQL -y
vim /etc/my.cnf.d/openstack.cnf
# 打开配置文档并修改以下信息,取消其注释
#[mysqld]
bind-address = 192.168.124.27
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
# 注意这一步开始的时候要注意执行完这个语句,会让你选择
# 先按一个Enter,然后依次输入y,n,y,y
# 其中的n那一项为是否禁止远程连接数据库
mysql_secure_installation
1.11 安装并配置消息队列
# 安装rabbitmq-server
yum install rabbitmq-server -y
# 启动消息队列服务并将其配置为开机启动
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server
# 添加 openstack 用户,RABBIT_PASS 为密码
rabbitmqctl add_user openstack RABBIT_PASS
# 给openstack用户配置写和读权限
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
1.12 安装并配置Memcached
yum install memcached python-memcached -y
vim /etc/sysconfig/memcached
# 编辑如下选项,记住不要复制过去,只是在选项括号内的末尾添加上controller即可
OPTIONS="-l 127.0.0.1,::1,controller"
# 启动Memcached并将其配置为开机启动
systemctl enable memcached.service
systemctl start memcached.service
1.13 安装并配置etcd
yum install etcd -y
vim /etc/etcd/etcd.conf
# 编辑以下信息,其中192.168.124.27为我本机ens33网卡的ip地址
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.124.27:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.124.27:2379"
ETCD_NAME="controller"
# 退出编辑并启动服务
systemctl start etcd
2、 安装部署认证服务 (Identity Service )
Keystone为所有OpenStack服务提供身份认证和授权,跟踪用户以及它们的权限,提供一个可用服务以及API的列表。接收前台请求的Keystone API和后台的Keystone-db。
2.1 创建Keystone 用户、数据库并分配访问权限
mysql -u root -p
#创建数据库keystone
CREATE DATABASE keystone;
#退出数据库
\q
#配置数据库权限
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
2.2 安装并配置
yum install openstack-keystone httpd mod_wsgi
vim /etc/keystone/keystone.conf
#配置下面的参数
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
# ...
provider = fernet
2.3 构建认证服务的数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
2.4 初始化 Fernet key
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
2.5 引导身份服务
keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
#管理员的密码为 ADMIN_PASS ,可以替换,第一次部署不建议替换。
2.6 配置Apache HTTP 服务
vi /etc/httpd/conf/httpd.conf
# 编辑下列内容
ServerName controller
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
systemctl enable httpd.service
systemctl start httpd.service
2.7 配置管理账户
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:35357/v3
export OS_IDENTITY_API_VERSION=3
2.8 创建domain, projects, users, and roles
openstack domain create --description "An Example Domain" example
openstack project create --domain default \
--description "Service Project" service
openstack project create --domain default \
--description "Demo Project" demo
openstack user create --domain default \
--password-prompt demo
# 密码 DEMO_PASS
openstack role create user
openstack role add --project demo --user demo user
2.9 验证操作
unset OS_AUTH_URL OS_PASSWORD
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
# 密码 ADMIN_PASS
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo token issue
# 密码 DEMO_PASS
3、安装镜像服务 - Glance(在控制节点安装)
OpenStack镜像服务是IaaS的核心服务,它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。
它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。
大量周期性进程运行于OpenStack镜像服务上以支持缓存。
同步复制(Replication)服务保证集群中的一致性和可用性。
其它周期性进程包括auditors, updaters, 和 reapers。
OpenStack镜像服务包括以下组件:
glance-api
接收镜像API的调用,诸如镜像发现、恢复、存储。
glance-registry
存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。
3.1 创建 OpenStack 客户端环境脚本
# 创建admin项目和用户客户端环境变量脚本
vim 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
# 创建demo项目和用户客户端环境变量脚本
vim demo-openrc
# 复制以下内容
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
3.2 使用脚本
. admin-openrc
3.3 请求认证令牌
openstack token issue
3.4 安装Glance
# 创建创建Glance数据库、服务凭证和API端点。
mysql -u root -p
# 创建 glance 数据库
CREATE DATABASE glance;
# 对``glance``数据库授予恰当的权限 , GLANCE_DBPASS 数据库密码可以替换,第一次安装不建议替换
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
# 退出数据库
\q
3.5 获得 admin 凭证来获取只有管理员能执行的命令的访问权限
. admin-openrc
3.6 创建 glance 用户 , 密码 GLANCE_PASS
openstack user create --domain default --password-prompt glance
3.7 添加 admin 角色到 glance 用户和 service 项目上
openstack role add --project service --user glance admin
3.8 创建glance
服务实体
openstack service create --name glance \
--description "OpenStack Image" image
3.9 创建镜像服务的 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
3.10 安装glance软件包
yum install openstack-glance -y
# 编辑文件 /etc/glance/glance-api.conf 并完成如下修改:
vim /etc/glance/glance-api.conf
# 在 [database] 部分,配置数据库访问:(如果修改了glance用户密码要替换 GLANCE_PASS )
[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken]
# ...
auth_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/
# 编辑 /etc/glance/glance-registry.conf 文件,并完成如下配置:
vim /etc/glance/glance-registry.conf
# 在 [database] 部分,配置数据库访问(如果更改了密码,注意替换GLANCE_DBPASS):
[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问(如果更改了密码,注意替换GLANCE_PASS):
[keystone_authtoken]
# ...
auth_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
3.11 写入镜像服务数据库
su -s /bin/sh -c "glance-manage db_sync" glance
3.12 启动镜像服务、配置开机启动
systemctl start openstack-glance-api.service \
openstack-glance-registry.service
systemctl enable openstack-glance-api.service \
openstack-glance-registry.service
3.13 测试验证
# 下载源镜像cirros:
wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
# 使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它
openstack image create "cirros" \
--file cirros-0.3.5-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
# 确认镜像的上传并验证属性
openstack image list
4、安装计算服务-Nova(控制节点)
Nova是基础设施即服务(IaaS)系统的主要部分,该模块主要由Python实现。
Nova请求Keystone服务进行认证;
请求Image服务提供磁盘镜像;
为dashboard提供用户与管理员接口。
首先,要在控制节点安装部署Nova组件:
4.1 用数据库连接客户端
mysql -u root -p
4.2 创建 nova_api 、 nova 和nova_cell0数据库
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
4.3 授予对数据库的适当访问权限
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
4.4 获得 admin 凭证
# 获得 admin 凭证来获取只有管理员能执行的命令的访问权限
. admin-openrc
4.5 创建 nova 用户 (密码 NOVA_PASS)
openstack user create --domain default --password-prompt nova
4.6 给 nova 用户添加 admin 角色
openstack role add --project service --user nova admin
4.7 创建 nova 服务实体
openstack service create --name nova \
--description "OpenStack Compute" compute
4.8 创建 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
4.9 创建Placement service (密码 PLACEMENT_PASS)
openstack user create --domain default --password-prompt placement
4.10 给 placement 添加 admin 角色
openstack role add --project service --user placement admin
4.11 创建 Placement API
openstack service create --name placement --description "Placement API" placement
4.12 创建 Placement API service endpoints
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
4.13 安装控制节点Nova软件包
yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api
4.14 编辑/etc/nova/nova.conf
文件并完成下面的操作
vim /etc/nova/nova.conf
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:RABBIT_PASS@controller
my_ip = 192.168.124.27
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
[api]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
[vnc]
enabled = true
# ...
server_listen = $my_ip
server_proxyclient_address = $my_ip
[glance]
# ...
api_servers = http://controller:9292
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS
# 新建一个配置文件
vim /etc/httpd/conf.d/00-nova-placement-api.conf
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
4.15 重启http服务
systemctl restart httpd
4.16 同步数据库
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova
nova-manage cell_v2 list_cells
4.17 启动 Nova 服务并将其设置为随系统启动
systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service