Oenstack Queens 部署全过程

文章目录

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值