.1 云计算简介
云计算(英语:cloud
computing ),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。
云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变。用户不再需要了解“云”中基础设施的细节,不必具有相应的专业知识,也无需直接进行控制。云计算描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。
1.1.1 云计算的特点
互联网上的云计算服务特征和自然界的云、水循环具有一定的相似性,因此,云是一个相当贴切的比喻。根据技术研究院的定义如下。
云计算服务应该具备以下几条特征:
🥦 随需应变自助服务。
🥦 随时随地用任何网络设备访问。
🥦 多人共享资源池。
🥦 快速重新部署灵活度。
🥦 可被监控与量测的服务。
一般认为还有如下特征:
🍀 基于虚拟化技术快速部署资源或获得服务。
🍀 减少用户终端的处理负担。
🍀 降低了用户对于IT专业知识的依赖。
1.1.2 云计算服务模式
云计算定义中明确了三种服务模式:
图 - 服务模式详情
软件即服务(SaaS):
** **即Software-as-a-service;
消费者使用应用程序,但并不掌控操作系统、硬件或运作的网络基础架构。是一种服务观念的基础,软件服务供应商,以租赁的概念提供客户服务,而非购买,比较常见的模式是提供一组账号密码。
例如:Microsoft CRM与Salesforce.com。
平台即服务(PaaS):
** **即Platform-as-a-service;
消费者使用主机操作应用程序。消费者掌控运作应用程序的环境(也拥有主机部分掌控权),但并不掌控操作系统、硬件或运作的网络基础架构。平台通常是应用程序基础架构。
例如:Google App Engine。
基础设施即服务(IaaS):
** **即Infrastructure-as-a-service;
消费者使用“基础计算资源”,如处理能力、存储空间、网络组件或中间件。消费者能掌控操作系统、存储空间、已部署的应用程序及网络组件(如防火墙、负载平衡器等),但并不掌控云基础架构。
例如:Amazon AWS、Rackspace。
关于这三种服务模式更多详情可以参考:https://www.zhihu.com/question/21641778
1.1.3 云计算的类型
图 - 云类型示例
🔊 公有云(Public Cloud)
简而言之,公用云服务可通过网络及第三方服务供应者,开放给客户使用,“公有”一词并不一定代表“免费”,但也可能代表免费或相当廉价,公用云并不表示用户数据可供任何人查看,公用云供应者通常会对用户实施使用访问控制机制,公用云作为解决方案,既有弹性,又具备成本效益。
🔊 私有云(Private Cloud)
私有云具备许多公用云环境的优点,例如弹性、适合提供服务,两者差别在于私有云服务中,数据与程序皆在组织内管理,且与公用云服务不同,不会受到网络带宽、安全疑虑、法规限制影响;此外,私有云服务让供应者及用户更能掌控云基础架构、改善安全与弹性,因为用户与网络都受到特殊限制。
🔊 混合云(Hybrid Cloud)
混合云结合公用云及私有云,这个模式中,用户通常将非企业关键信息外包,并在公用云上处理,但同时掌控企业关键服务及数据。
1.1.4 为什么要选择云计算
1、有效解决硬件单点故障问题
2、按需增/减硬件资源
3、BGP线路解决南北互通问题
4、按需增/减带宽
5、更有吸引力的费用支付方式
详情查看《云计算之路:为什么要选择云计算》
https://www.cnblogs.com/cmt/archive/2013/02/27/why-into-cloud.html
1.2 OpenStack简介
OpenStack是一个美国宇航局和Rackspace合作研发的云计算软件,以Apache授权条款2.0授权,并且是一个自由软件和开放源代码项目。
OpenStack是基础设施即服务(IaaS)软件,让任何人都可以自行创建和提供云计算服务。
此外,OpenStack也用作创建防火墙内的“私有云”(Private
Cloud),提供机构或企业内各部门共享资源。
1.2.1 市场趋向
Rackspace以OpenStack为基础的私有云业务每年营收7亿美元,增长率超过了20%。
OpenStack虽然有些方面还不太成熟,然而它有全球大量的组织支持,大量的开发人员参与,发展迅速。国际上已经有很多使用OpenStack搭建的公有云、私有云、混合云,例如:RackspaceCloud、惠普云、MercadoLibre的IT基础设施云、AT&T的CloudArchitec、戴尔的OpenStack解决方案等等。而在国内OpenStack的热度也在逐渐升温,华胜天成、高德地图、京东、阿里巴巴、百度、中兴、华为等都对OpenStack产生了浓厚的兴趣并参与其中。
自2010年创立以来,已发布10个版本。其中Icehouse版本有120个组织、1202名代码贡献者参与,而最新的是Juno版本。OpenStack很可能在未来的基础设施即服务(IaaS)资源管理方面占据领导位置,成为公有云、私有云及混合云管理的“云操作系统”标准
1.2.2 大型用户
美国国家航空航天局
加拿大半官方机构CANARIE网络的DAIR(Digital Accelerator for Innovation and
Research)项目,向大学与中小型企业提供研究和开发云端运算环境。
惠普云(使用Ubuntu Linux)
MercadoLibre的IT基础设施云,现时以OpenStack管理超过6000 台虚拟机器。
AT&T的“Cloud
Architect”,将在美国的达拉斯、圣地亚哥和新泽西州提供对外云端服务。
1.2.3 OpenStack项目介绍
图 - 各项目关系图
各组件的详细说明:
服务类型 | 项目名称 | 描述 |
---|---|---|
Dashboard | Horizon 提供web界面 | 提供了一个基于web的自服务门户,与OpenStack底层服务交互,诸如启动一个实例,分配IP地址以及配置访问控制。 |
Compute | Nova 计算节点 | 在OpenStack环境中计算实例的生命周期管理。按需响应包括生成、调度、回收虚拟机等操作。 |
Networking | Neutron 网络服务 | 确保为其它OpenStack服务提供网络连接即服务,比如OpenStack计算。为用户提供API定义网络和使用。基于插件的架构其支持众多的网络提供商和技术。 |
存储 | ||
Object Storage | Swift 对象存储 | 通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象。它拥有高容错机制,基于数据复制和可扩展架构。它的实现并像是一个文件服务器需要挂载目录。在此种方式下,它写入对象和文件到多个硬盘中,以确保数据是在集群内跨服务器的多份复制。 |
Block Storage | Cinder 块存储 | 为运行实例而提供的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备。 |
共享服务 | ||
Identity service | Keystone 认证节点 | 为其他OpenStack服务提供认证和授权服务,为所有的OpenStack服务提供一个端点目录。 |
Image service | Glance 镜像服务 | 存储和检索虚拟机磁盘镜像,OpenStack计算会在实例部署时使用此服务。 |
Telemetry | Ceilometer 计费 | 为OpenStack云的计费、基准、扩展性以及统计等目的提供监测和计量。 |
高层次服务 | ||
Orchestration | Heat | Orchestration服务支持多样化的综合的云应用,通过调用OpenStack-native REST API和CloudFormation-compatible Query API,支持:term:`HOT <Heat Orchestration Template (HOT)>`格式模板或者AWS CloudFormation格式模板 |
1.2.4 系统环境说明
本文档使用主机环境均安装官方推荐进行设置:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment.html
controller节点说明
[root@controller ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@controller ~]# uname -r
3.10.0-327.el7.x86_64
[root@controller ~]# sestatus
SELinux status: disabled
[root@controller ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor
preset: enabled)
Active: inactive (dead)
[root@controller ~]# hostname -I
10.0.0.11 172.16.1.11
[root@controller ~]# tail -3 /etc/hosts
10.0.0.11 controller
10.0.0.31 compute1
10.0.0.32 compute2
compute1与compute2节点的配置与controller相同。
系统安装参考文档:http://www.cnblogs.com/clsn/p/8338099.html#_label1
系统优化说明:http://www.cnblogs.com/clsn/p/8338099.html#_label4
注意点:网卡的名称修改
1.3 OpenStack基础配置服务
注:本文中所使用的用户及密码都参考该文档,并且高度一致。
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-security.html
OpenStack 相关服务安装流程(keystone服务除外):
1)在数据库中,创库,授权;
2)在keystone中创建用户并授权;
3)在keystone中创建服务实体,和注册API接口;
4)安装软件包;
5)修改配置文件(数据库信息);
6)同步数据库;
7)启动服务。
1.3.1 OpenStack服务部署顺序
*[1]
基础环境准备 *https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment.html
*[2] 部署 Keystorne
认证服务,token *https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/keystone.html
*[3] 部署 Glance
镜像服务 *https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/glance.html
*[4] 部署 Nova
计算服务(kvm) *https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova.html
*[5] 部署 Neutron
网络服务 *https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron.html
*[6] 部署 Horizon
提供web界面 *https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/horizon.html
*[7] 部署 Cinder
块存储(硬盘) *https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/horizon.html
1.3.2 配置本地yum源
首先将镜像挂载到 /mnt
mount /dev/cdrom /mnt
echo ‘mount /dev/cdrom /mnt’ > /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
创建repo文件
cat >/etc/yum.repos.d/local.repo<<-‘EOF’
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
[openstack]
name=openstack-mitaka
baseurl=file:///opt/repo
gpgcheck=0
EOF
生成yum缓存
[root@controller repo]# yum makecache
1.3.3 安装NTP时间服务
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-ntp.html
控制节点(提供时间服务,供其他机器同步)
安装软件
yum install chrony -y
配置控制节点,修改第22行
[root@controller ~]# vim /etc/chrony.conf
···
# Allow NTP client access from local network.
allow 10/8
启动,设置自启动
systemctl enable chronyd.service
systemctl start chronyd.service
计算节点(配置chrony客户端)
安装软件
yum install chrony -y
配置文件第三行,删除无用的上游服务器。
使用sed命令修改
sed -ri.bak ‘/server/s/^/#/g;2a server 10.0.0.11 iburst’ /etc/chrony.conf
配置文件说明:
[root@compute1 ~]# vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.0.0.11 iburst
启动,设置自启动
systemctl enable chronyd.service
systemctl start chronyd.service
1.3.4 OpenStack的包操作(添加新的计算节点时需要安装)
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-packages.html
安装 OpenStack 客户端:
yum -y install python-openstackclient
RHEL 和 CentOS 默认启用了 SELinux
# 安装 openstack-selinux 软件包以便自动管理 OpenStack 服务的安全策略
yum -y install openstack-selinux
1.3.5 SQL数据库安装(在控制节点操作)
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-sql-database.html
安装mariadb软件包:
[root@controller ~]# yum -y install mariadb mariadb-server python2-PyMySQL
创建配置文件
cat > /etc/my.cnf.d/openstack.cnf <<-‘EOF’
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
启动mariadb
systemctl enable mariadb.service
systemctl start mariadb.service
执行mariadb安全初始化
为了保证数据库服务的安全性,运行``mysql_secure_installation``脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。
[root@controller ~]# mysql_secure_installation
···
Enter current password for root (enter for none):
OK, successfully used password, moving on…
Set root password? [Y/n] n
… skipping.
Remove anonymous users? [Y/n] Y
… Success!
Disallow root login remotely? [Y/n] Y
… Success!
Remove test database and access to it? [Y/n] Y
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!
Reload privilege tables now? [Y/n] Y
… Success!
Thanks for using MariaDB!
1.3.6 NoSQL 数据库
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-nosql-database.html
Telemetry 服务使用 NoSQL 数据库来存储信息,典型地,这个数据库运行在控制节点上。
向导中使用MongoDB。
在ceilometer中计费使用。由于本次搭建的为私有云平台,私有云不需要计费服务,这里就不进行安装了。
1.3.7 消息队列部署
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-messaging.html
安装消息队列软件
[root@controller ~]# yum -y install rabbitmq-server
启动消息队列服务并将其配置为随系统启动:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
添加 openstack 用户:
[root@controller ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user “openstack” …
用合适的密码替换 RABBIT_DBPASS。
给``openstack``用户配置写和读权限:
[root@controller ~]# rabbitmqctl set_permissions openstack “.*” “.*” “.*”
Setting permissions for user “openstack” in vhost “/” …
1.3.8 Memcached服务部署
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment-memcached.html
安装memcached软件包
[root@controller ~]# yum -y install memcached python-memcached
配置memcached配置文件
[root@controller ~]# cat /etc/sysconfig/memcached
PORT=“11211”
USER=“memcached”
MAXCONN=“1024”
CACHESIZE=“64”
OPTIONS="-l 10.0.0.11" <–修改位置,配置为memcached主机地址或网段信息
启动Memcached服务,并且配置它随机启动。
systemctl enable memcached.service
systemctl start memcached.service
1.3.9 验证以上部署的服务是否正常
查看端口信息
[root@controller ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 17164/beam
tcp 0 0 10.0.0.11:3306 0.0.0.0:* LISTEN 16985/mysqld
tcp 0 0 10.0.0.11:11211 0.0.0.0:* LISTEN 17962/memcached
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1402/sshd
tcp6 0 0 :::5672 ::😗 LISTEN 17164/beam
tcp6 0 0 :::22 ::😗 LISTEN 1402/sshd
udp 0 0 0.0.0.0:123 0.0.0.0:* 1681/chronyd
udp 0 0 127.0.0.1:323 0.0.0.0:* 1681/chronyd
udp 0 0 10.0.0.11:11211 0.0.0.0:* 17962/memcached
udp6 0 0 ::1:323 ::😗 1681/chronyd
端口信息说明
chronyd服务 123(提供给其他机器)、323(与上游同步端口)
Mariadb 数据库 3306数据接口
rabbitmq 消息队列 4369、25672(高可用架构使用)、5672(程序写端口)
memcached token保存 11211
至此OpenStack 基础配置完成。
1.4 Keystone认证服务配置
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/keystone-install.html
认证管理:授权管理和服务目录服务管理提供单点整合。
目录服务:相当于呼叫中心(前台)
在控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出现性能原因,这个配置部署Fernet令牌和Apache
HTTP服务处理请求。
1.4.1 创建数据库
用数据库连接客户端以 root 用户连接到数据库服务器:
[root@controller ~]# mysql -u root -p
创建 keystone 数据库:
MariaDB [(none)]> CREATE DATABASE keystone;
对``keystone``数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@‘localhost’ IDENTIFIED BY
‘KEYSTONE_DBPASS’;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’ IDENTIFIED BY
‘KEYSTONE_DBPASS’;
添加完成后退出数据库客户端。
MariaDB [(none)]> exit
1.4.2 安装keystone
yum -y install openstack-keystone httpd mod_wsgi
安装的软件包为 keystone服务包,http服务,用于连接python程序与web服务的中间件
如何理解 CGI, WSGI? https://www.zhihu.com/question/19998865
1.4.3 修改配置文件
备份配置文件
[root@controller ~]# cp /etc/keystone/keystone.conf{,.bak}
精简化配置文件
[root@controller ~]# egrep -v ‘^#|^$’ /etc/keystone/keystone.conf.bak
>/etc/keystone/keystone.conf
手动修改配置文件
在``[DEFAULT]``部分,定义初始管理令牌的值
[DEFAULT]
admin_token = ADMIN_TOKEN
在 [database] 部分,配置数据库访问
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
在``[token]``部分,配置Fernet UUID令牌的提供者
[token]
provider = fernet 关于令牌类型的说明:https://www.abcdocker.com/abcdocker/1797
【自动化】自动化配置-配置文件(本文大量使用)
安装自动配置软件openstack-utils
yum install openstack-utils.noarch -y
[root@controller ~]# rpm -ql openstack-utils
/usr/bin/openstack-config
自动化配置命令
cp /etc/keystone/keystone.conf{,.bak}
grep ‘^[a-Z\[]’ /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token
ADMIN_TOKEN
openstack-config --set /etc/keystone/keystone.conf database connection
mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet
1.4.4 初始化身份认证服务的数据库(同步数据库)
[root@controller ~]# su -s /bin/sh -c “keystone-manage db_sync” keystone
验证数据库是否同步成功
[root@controller ~]# mysql keystone -e ‘show tables’
1.4.5 初始化Fernet keys
[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone
–keystone-group keystone
命令执行后会在/etc/keystone/目录下生成fernet-keys 文件:
[root@controller ~]# ls /etc/keystone/
default_catalog.templates keystone.conf.bak policy.json
fernet-keys keystone-paste.ini sso_callback_template.html
keystone.conf logging.conf
1.4.6 配置 Apache HTTP 服务器
编辑``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName``。
echo ‘ServerName controller’ >>/etc/httpd/conf/httpd.conf
创建配置文件 /etc/httpd/conf.d/wsgi-keystone.conf
注:keystone服务较为特殊,其他的服务可自行创建配置文件。
[root@controller ~]# cat /etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone
group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone
group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
1.4.7 启动 Apache HTTP 服务并配置其随系统启动
systemctl enable httpd.service
systemctl start httpd.service
1.4.8 创建服务实体和API端点
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/keystone-services.html
a.配置环境变量
配置认证令牌
export OS_TOKEN=ADMIN_TOKEN
配置端点URL
export OS_URL=http://controller:35357/v3
配置认证 API 版本
export OS_IDENTITY_API_VERSION=3
查看环境变量
[root@controller ~]# env |grep OS
命令集:
export OS_TOKEN=ADMIN_TOKEN
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
env |grep OS
b.创建服务实体和API端点
创建命令
openstack service create --name keystone --description “OpenStack Identity”
identity
执行过程
[root@controller ~]# openstack service create \
> --name keystone --description “OpenStack Identity” identity
±------------±---------------------------------+
| Field | Value |
±------------±---------------------------------+
| description | OpenStack Identity |
| enabled | True |
| id | f08ec36b2b7340d6976fcb2bbd24e83b |
| name | keystone |
| type | identity |
±------------±---------------------------------+
c.创建认证服务的 API 端点
命令集
openstack endpoint create --region RegionOne identity public
http://controller:5000/v3
openstack endpoint create --region RegionOne identity internal
http://controller:5000/v3
openstack endpoint create --region RegionOne identity admin
http://controller:35357/v3
执行过程
[root@controller ~]# openstack endpoint create --region RegionOne \
> identity public http://controller:5000/v3
±-------------±---------------------------------+
| Field | Value |
±-------------±---------------------------------+
| enabled | True |
| id | e27dd713753f47b8a1062ac50ca33845 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | f08ec36b2b7340d6976fcb2bbd24e83b |
| service_name | keystone |
| service_type | identity |
| url | http://controller:5000/v3 |
±-------------±---------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne \
> identity internal http://controller:5000/v3
±-------------±---------------------------------+
| Field | Value |
±-------------±---------------------------------+
| enabled | True |
| id | 71b7435fa2df4c58bb6ca5cc38a434a7 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | f08ec36b2b7340d6976fcb2bbd24e83b |
| service_name | keystone |
| service_type | identity |
| url | http://controller:5000/v3 |
±-------------±---------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne \
> identity admin http://controller:35357/v3
±-------------±---------------------------------+
| Field | Value |
±-------------±---------------------------------+
| enabled | True |
| id | cf58eee084c04777a520d487adc1a88f |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | f08ec36b2b7340d6976fcb2bbd24e83b |
| service_name | keystone |
| service_type | identity |
| url | http://controller:35357/v3 |
±-------------±---------------------------------+
1.4.9 创建域、项目、用户和角色
官方文档https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/keystone-users.html
a.创建域``default``
openstack domain create --description “Default Domain” default
b.在你的环境中,为进行管理操作,创建管理的项目、用户和角色
创建 admin 项目
openstack project create --domain default --description “Admin Project” admin
创建 admin 用户
openstack user create --domain default --password-prompt admin
创建 admin 角色
openstack role create admin
添加``admin`` 角色到 admin 项目和用户上
openstack role add --project admin --user admin admin
命令集:
openstack domain create --description “Default Domain” default
openstack project create --domain default --description “Admin Project” admin
openstack user create --domain default --password ADMIN_PASS admin
openstack role create admin
openstack role add --project admin --user admin admin
c.创建servers项目
[root@controller ~]# openstack project create --domain default --description
“Service Project” service
±------------±---------------------------------+
| Field | Value |
±------------±---------------------------------+
| description | Service Project |
| domain_id | df6407ae93bb407d876f2ee4787ede79 |
| enabled | True |
| id | cd2107aa3a8f4066a871ca029641cfd7 |
| is_domain | False |
| name | service |
| parent_id | df6407ae93bb407d876f2ee4787ede79 |
±------------±---------------------------------+
验证之前的所有操作
命令集:
openstack service list
openstack endpoint list | grep keystone |wc -l
openstack domain list
openstack project list
openstack user list
openstack role list
查看服务列表
[root@controller ~]# openstack service list
±---------------------------------±---------±---------+
| ID | Name | Type |
±---------------------------------±---------±---------+
| f08ec36b2b7340d6976fcb2bbd24e83b | keystone | identity |
±---------------------------------±---------±---------+
查看当前的域
[root@controller ~]# openstack domain list
±---------------------------------±--------±--------±---------------+
| ID | Name | Enabled | Description |
±---------------------------------±--------±--------±---------------+
| df6407ae93bb407d876f2ee4787ede79 | default | True | Default Domain |
±---------------------------------±--------±--------±---------------+
查看集合
[root@controller ~]# openstack project list
±---------------------------------±--------+
| ID | Name |
±---------------------------------±--------+
| cd2107aa3a8f4066a871ca029641cfd7 | service |
| d0dfbdbc115b4a728c24d28bc1ce1e62 | admin |
±---------------------------------±--------+
查看当前的用户列表
[root@controller ~]# openstack user list
±---------------------------------±------+
| ID | Name |
±---------------------------------±------+
| d8f4a1d74f52482d8ebe2184692d2c1c | admin |
±---------------------------------±------+
查看当前的角色
[root@controller ~]# openstack role list
±---------------------------------±------+
| ID | Name |
±---------------------------------±------+
| 4de514c418ee480d898773e4f543b79d | admin |
±---------------------------------±------+
关于域、项目、用户和角色的说明:
类型 | 说明 |
---|---|
Domain | 表示 project 和 user 的集合,在公有云或者私有云中常常表示一个客户 |
Group | 一个domain 中的部分用户的集合 |
Project | 项目、IT基础设施资源的集合,比如虚机,卷,镜像等 |
Role | 授权,角色,表示一个 user 对一个 project resource 的权限 |
Token | 一个 user 对于某个目标(project 或者 domain)的一个有限时间段内的身份令牌 |
1.4.10 创建 OpenStack 客户端环境脚本
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/keystone-openrc.html
编辑文件 admin-openrc 并添加如下内容
[root@controller ~]# 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:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
【重要】务必使用环境变量脚本
使用脚本创建环境变量
[root@controller ~]# source admin-openrc
[root@controller ~]# env|grep OS
HOSTNAME=controller
OS_USER_DOMAIN_NAME=default
OS_IMAGE_API_VERSION=2
OS_PROJECT_NAME=admin
OS_IDENTITY_API_VERSION=3
OS_PASSWORD=ADMIN_PASS
OS_AUTH_URL=http://controller:35357/v3
OS_USERNAME=admin
OS_PROJECT_DOMAIN_NAME=default
1.5 镜像服务glance部署
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/glance.html
1.5.1 创库授权
参考文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/glance-install.html
# 登陆mysql数据库
[root@controller ~]# mysql
创建 glance 数据库:
CREATE DATABASE glance;
对``glance``数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘localhost’ IDENTIFIED BY
‘GLANCE_DBPASS’;
GR