OpenStack Queens

本文档详细介绍了在CentOS7环境下部署OpenStack Queens版本的步骤,包括环境配置、OpenStack概述、架构总览、组件服务部署、组件安装等。通过一系列配置和命令,演示了从网络设置到各个服务的安装,如NTP、数据库、消息队列、缓存、身份认证等,最后验证了服务的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

社区OpenStack Queens版本部署安装详解(附加节点安装所有组件)

一、 部署软件环境

操作系统:
Centos7
内核版本:
[root@controller ~]# uname -m
x86_64
[root@controller ~]# uname -r
3.10.0-693.21.1.el7.x86_64
节点间以及网卡配置
controller节点
[root@controller ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
compute节点
[root@compute ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1

存储Cinder节点
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
说明:此次部署搭建采用三台物理节点手搭建社区openstack Queens环境
二.OpenStack概述
OpenStack项目是一个开源云计算平台,支持所有类型的云环境。该项目旨在实现简单,大规模的可扩展性和丰富的功能。
OpenStack通过各种补充服务提供基础架构即服务(IaaS)解决方案。每项服务都提供了一个应用程序编程接口(API),以促进这种集成。
本文涵盖了使用适用于具有足够Linux经验的OpenStack新用户的功能性示例体系结构,逐步部署主要OpenStack服务。只用于学习OpenStack最小化环境。
三、OpenStack架构总览
1.概念性架构
下图显示了OpenStack服务之间的关系:

2.逻辑体系结构
下图显示了OpenStack云中最常见但不是唯一可能的体系结构:

对于设计,部署和配置OpenStack,学习者必须了解逻辑体系结构。
如概念架构所示,OpenStack由几个独立的部分组成,称为OpenStack服务。所有服务都通过keystone服务进行身份验证。
各个服务通过公共API相互交互,除非需要特权管理员命令。
在内部,OpenStack服务由多个进程组成。所有服务都至少有一个API进程,它监听API请求,预处理它们并将它们传递给服务的其他部分。除身份服务外,实际工作由不同的流程完成。
对于一个服务的进程之间的通信,使用AMQP消息代理。该服务的状态存储在数据库中。部署和配置OpenStack云时,您可以选择多种消息代理和数据库解决方案,例如RabbitMQ,MySQL,MariaDB和SQLite。
用户可以通过Horizon Dashboard实现的基于Web的用户界面,通过命令行客户端以及通过浏览器插件或curl等工具发布API请求来访问OpenStack。对于应用程序,有几个SDK可用。最终,所有这些访问方法都会对各种OpenStack服务发出REST API调用。
四.OpenStack组件服务部署
部署前置条件(以下命令在所有节点执行)
1.配置节点网卡IP(略)
2.设置主机名
hostnamectl set-hostname 主机名
bash ##使设置立即生效
3.配置域名解析,编辑编辑/etc/hosts文件,加入如下配置
10.71.11.12 controller
10.71.11.13 compute
10.71.11.14 cinder
4.验证网络连通性
在控制节点执行
root@controller ~]# ping -c 4 openstack.org
PING openstack.org (162.242.140.107) 56(84) bytes of data.
在计算节点执行
[root@compute ~]# ping -c 4 openstack.org
PING openstack.org (162.242.140.107) 56(84) bytes of data.
5.配置阿里yum源
备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
6.安装NTP时钟服务(所有节点)
##controller节点##
安装软件包
yum install chrony -y
编辑/etc/chrony.conf文件,配置时钟源同步服务端
server controlelr iburst ##所有节点向controller节点同步时间
allow 10.71.11.0/24 ##设置时间同步网段
设置NTP服务开机启动
systemctl enable chronyd.service
systemctl start chronyd.service
其他节点
安装软件包
yum install chrony -y
配置所有节点指向controller同步时间
vi /etc/chrony.conf
server controlelr iburst
重启NTP服(略)
验证时钟同步服务
在controller节点执行
[root@controller ~]# chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
^* time4.aliyun.com 2 10 377 1015 +115us[ +142us] +/- 14ms

MS列中的内容应该指明* NTP服务当前同步的服务器。
在其他节点执行
[root@compute ~]# chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
^* leontp.ccgs.wa.edu.au 1 10 377 752

[root@cinder ~]# chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
^+ 61-216-153-104.HINET-IP.> 3 10 377 748 -3373us[-
注意:日常运维中经常遇见时钟飘逸问题,导致集群服务脑裂
openstack服务安装、配置
说明:无特殊说明,以下操作在所有节点上执行
1.下载安装openstack软件仓库(queens版本)
yum install centos-release-openstack-queens -y
2.更新所有节点软件包
yum upgrade
3.两个节点安装openstack client端
yum install python-openstackclient -y
4.安装openstack-selinux
yum install openstack-selinux -y
安装数据库(controller节点执行)
大多数OpenStack服务使用SQL数据库来存储信息,数据库通常在控制器节点上运行。 本文主要使用MariaDB或MySQL。
安装软件包
yum install mariadb mariadb-server python2-PyMySQL -y
编辑/etc/my.cnf.d/mariadb-server.cnf并完成以下操作
[root@controller ~]# vim /etc/my.cnf.d/mariadb-server.cnf

These groups are read by MariaDB server.
[server]

this is only for the mysqld standalone daemon
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

bind-address = 192.168.10.102
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
说明:bind-address使用controller节点的管理IP
设置服务开机启动
systemctl enable mariadb.service
systemctl start mariadb.service
通过运行mysql_secure_installation脚本来保护数据库服务。密码123456
[root@controller ~]# mysql_secure_installation

Thanks for using MariaDB!
在controller节点安装、配置RabbitMQ
1.安装配置消息队列组件
yum install rabbitmq-server -y
2.设置服务开机启动
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
3.添加openstack 用户
rabbitmqctl add_user openstack openstack
4.openstack用户的权限配置

rabbitmqctl set_permissions openstack “.” “.” “.*”
8.RabbitMQ 消息队列安装及配置 (控制节点)

yum install rabbitmq-server -y
/usr/lib/rabbitmq/bin/rabbitmq-plugins list //查看插件安装情况
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
//启用rabbitmq_management服务

systemctl restart rabbitmq-server.service
systemctl enable rabbitmq-server
rabbitmqctl add_user openstack openstack
//添加 openstack 用户 , openstack 为密码

rabbitmqctl set_permissions openstack “.” “.” “.*”
//给openstack用户配置写和读权限
访问 httpd://192.168.0.17:15672 可以看到web管理页面
若无法访问,的赋予权限

rabbitmqctl set_user_tags openstack administrator
rabbitmqctl list_users ##查看权限
安装缓存数据库Memcached(controller节点)
说明:服务的身份认证服务使用Memcached缓存令牌。 memcached服务通常在控制器节点上运行。 对于生产部署,我们建议启用防火墙,身份验证和加密的组合来保护它。
1.安装配置组件
yum install memcached python-memcached -y
2.编辑/etc/sysconfig/memcached
vim /etc/sysconfig/memcached

OPTIONS="-l 10.71.11.12,::1,controller"
3.设置服务开机启动
systemctl enable memcached.service
systemctl start memcached.service
Etcd服务安装(controller)
1.安装服务
yum install etcd -y
2.编辑/etc/etcd/etcd.conf文件
vim /etc/etcd/etcd.conf

ETCD_INITIAL_CLUSTER
ETCD_INITIAL_ADVERTISE_PEER_URLS
ETCD_ADVERTISE_CLIENT_URLS
ETCD_LISTEN_CLIENT_URLS
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS=“http://10.71.11.12:2380”
ETCD_LISTEN_CLIENT_URLS=“http://10.71.11.12:2379”
ETCD_NAME=“controller”
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS=“http://10.71.11.12:2380”
ETCD_ADVERTISE_CLIENT_URLS=“http://10.71.11.12:2379”
ETCD_INITIAL_CLUSTER=“controller=http://10.71.11.12:2380”
ETCD_INITIAL_CLUSTER_TOKEN=“etcd-cluster-01”
ETCD_INITIAL_CLUSTER_STATE=“new”
3.设置服务开机启动
systemctl enable etcd
systemctl start etcd
安装keystone组件(controller)
1.创建keystone数据库并授权
mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone. TO ‘keystone’@‘localhost’ IDENTIFIED BY ‘keystone’;
GRANT ALL PRIVILEGES ON keystone. TO ‘keystone’@’%’ IDENTIFIED BY ‘123456’;
2.安装、配置组件
yum install openstack-keystone httpd mod_wsgi -y
3.编辑 vim /etc/keystone/keystone.conf
[database] 737

connection = mysql+pymysql://keystone:123456@controller/keystone

[token] 2878

provider = fernet
4.同步keystone数据库
su -s /bin/sh -c “keystone-manage db_sync” keystone
5.数据库初始化
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
6.引导身份认证服务
keystone-manage bootstrap --bootstrap-password 123456 --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
配置apache http服务
1.编辑 vim /etc/httpd/conf/httpd.conf,配置ServerName参数
ServerName controller
2.创建 /usr/share/keystone/wsgi-keystone.conf链接文件
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
3.设置服务开机启动
systemctl enable httpd.service
systemctl restart httpd.service
启动服务报错
[root@controller ~]# systemctl start httpd.service
经过判断,是SELinux引发的问题
解决办法:关闭防火墙
[root@controller ~]# vi /etc/selinux/config

SELINUX=disabled

SELINUXTYPE= can take one of three two values:
SELINUXTYPE=targeted
再次重启服务报错解决
[root@controller ~]# systemctl enable httpd.service;systemctl start httpd.service
4.配置administrative账号
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
创建 domain, projects, users, roles
1.创建域
openstack domain create --description “Domain” example

[root@controller ~]# openstack domain create --description “Domain” example
±------------±---------------------------------+
| Field | Value |
±------------±---------------------------------+
| description | Domain |
| enabled | True |
| id | 199658b1d0234c3cb8785c944aa05780 |
| name | example |
| tags | [] |
±------------±---------------------------------+

创建服务项目
openstack project create --domain default --description “Service Project” service
[root@controller ~]# openstack project create --domain default --description “Service Project” service
±------------±---------------------------------+
| Field | Value |
±------------±---------------------------------+
| description | Service Project |
| domain_id | default |
| enabled | True |
| id | 03e700ff43e44b29b97365bac6c7d723 |
| is_domain | False |
| name | service |
| parent_id | default |
| tags | [] |
±------------±---------------------------------+
3.创建平台demo项目
openstack project create --domain default --description “Demo Project” demo
[root@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值