OpenStack
- OpenStack简介
- OpenStack重要集成组件
- OpenStack平台部署
- 部署环境
-
- 配置时间同步
- 安装OpenStack
- 安装 RabbitMQ 消息队列服务
- Memcached缓存令牌的安装
- 安装和配置OpenStack身份认证服务
- 配置keystone
- 配置 Apache HTTP 服务器
- 创建服务实体和API端点
- 创建域、项目、用户和角色
- 在控制节点上安装和配置镜像服务(glance)
- 在控制节点上安装和配置 Compute 服务
- 安装和配置计算节点
- 安装并配置网络服务(neutron)
- 启动一个实例(启动一个云主机)
- 创建提供者网络
- 创建m1.nano规格的主机
- 生成一个键值对
- 增加安全组规则
- 启动实例
- 使用虚拟控制台访问实例
OpenStack简介
OpenStack是一个云操作系统,它控制整个数据中心的计算、存储和网络资源的大型池,所有这些都通过具有通用身份验证机制的api进行管理和配置。
还提供了一个仪表板,允许管理员控制,同时允许用户通过web界面提供资源。
除了标准的基础设施即服务功能外,其他组件还提供编排、故障管理和服务管理等服务,以确保用户应用程序的高可用性。
Openstack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。Openstack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。
Openstack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。
Openstack包括两个主要模块:Nova和 Swift。前者是NASA开发的虚拟服务器部署和业务计算模块;后者是 Backpack开发的分布式云存储模块,两者可以一起用,也可以分开单独用。
Open Stack的各个服务之间通过统一的REST风格的API调用,实现系统的松耦合。它内部组件的工作过程是一个有序的整体。诸如计算资源分配、控制调度、网络通信等都通过AMQP实现。 Open Stack的上层用户是程序员、一般用户和 Horizon界面等模块。这三者都是采用 Open Stack各个组件提供的API接口进行交互,而它们之间则是通过AMQP进行互相调用,它们共同利用底层的虚拟资源为上层用户和程序提供云计算服务。
OpenStack重要集成组件
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。
openstack重要集成组件:
- Nova - 计算服务
- Neutron-网络服务
- Swift - 对象存储服务
- Cinder-块存储服务
- Glance - 镜像服务
- Keystone - 认证服务
- Horizon - UI服务
- Ceilometer-监控服务
- Heat-集群服务
OpenStack平台部署
基本步骤可以参考官方文档,但需要注意的细节较多:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/common/conventions.html
部署环境
需要两台虚拟机,一个做控制节点,一个做计算节点
ops1(controller):192.168.122.11
ops2(compute1):192.168.122.12
最低配置:
控制节点: 1 处理器, 4 GB 内存, 及5 GB 存储
计算节点: 1 处理器, 2 GB 内存, 及10 GB 存储
建立虚拟机
内存给4G
![在这里插入图片描述](https://img-blog.csdnimg.cn/22c65ca0e9c54d348c941b15dcc67ad1.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
CPU设置如下,模块那儿没有该选项,直接手敲
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a145ed57e7742809a57607163a192e0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
需要两块网卡,剩下的随意
![在这里插入图片描述](https://img-blog.csdnimg.cn/5d932a37d5be420a934b6b32565b57f3.png)
更改网络配置文件
cd /etc/sysconfig/network-scripts
内容如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/d589520960f64314b65bf3d90816ffdf.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
让eth1网卡up
[root@server1 network-scripts]
[root@server1 network-scripts]
如下设置成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/83529a17060246329b4b5d8010854edf.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
配置时间同步
在真机编辑配置文件,使用阿里云的ntp服务
[root@lucky ~]
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
![在这里插入图片描述](https://img-blog.csdnimg.cn/a5fe3024d48d4e04833e55e511fc454f.png)
允许别的主机同步真机的时间
![在这里插入图片描述](https://img-blog.csdnimg.cn/8b205058e0024d31a7e54863625d695f.png)
访问阿里云的ntp服务没有问题
![在这里插入图片描述](https://img-blog.csdnimg.cn/260a7fca5aab49f6870b3592ec33745b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
下载时间同步工具,编辑配置文件,设置同步真机的时间,不允许别人同步自己的时间,然后启动NTP服务
[root@server1 network-scripts]
[root@server1 ~]
[root@server1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/d427a9a13a144670b887ebe18e22e090.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/509e40b37c6e4f87bbb5dc2558380d48.png)
如下已经检测到同步的主机
[root@server1 ~]
Tue Aug 17 10:52:19 CST 2021
[root@server1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/00ff11bb48d54f02ad202fc646e9b39a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
安装OpenStack
配置OpenStack源
[root@server1 ~]
[openstack]
name=openstack
baseurl=http://192.168.122.1/mitaka
gpgcheck=0
![在这里插入图片描述](https://img-blog.csdnimg.cn/47faf1aa9e0345fb93c3651ac8fd8b83.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
先升级再下载
[root@server1 ~]
[root@server1 ~]
[root@server1 ~]
[root@server1 ~]
[mysqld]
bind-address = 192.168.122.11
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collat<200b><200b>ion-server = utf8_general_ci
character-set-server = utf8
[root@server1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/05d0198a8bd84379bc7ed4bc91b80cc8.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
为了保证数据库服务的安全性,进行安全初始化
[root@server1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a92b336650b46859f72e59b920be49e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
安装 RabbitMQ 消息队列服务
OpenStack 使用 message queue (消息队列:将请求从客户端传递至合适的工作器并在工作完成后将输出返回至客户端)协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。
队列: 一个在守护进程间传递消息的中央集线器
首先要改主机名,因为RabbitMQ是根据主机名字配置的,重新改主机名可能会使之后创建的用户消失导致之后的服务无法启动
![在这里插入图片描述](https://img-blog.csdnimg.cn/b8cf783057f64b17ba5d4f0da961ed53.png)
域名解析也要更改
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/849457797e25426a9e39e84dd21273ce.png)
安装rabbitmq-server并启动
[root@server1 ~]
[root@server1 ~]
[root@server1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/2f451eb1770846b9bff2648c0f6cebae.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
添加 openstack 用户,并给openstack
用户配置写和读权限
[root@controller ~]
Creating user "openstack" ...
[root@controller ~]
RabbitMQ服务端口正常
![在这里插入图片描述](https://img-blog.csdnimg.cn/3e25005407114ca3af3c060b433f8699.png)
浏览器访问成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/acee0c1d41ff4bc0bc4eab8d0de817f0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
如下是登录进去的页面
![在这里插入图片描述](https://img-blog.csdnimg.cn/32aec0bbdd774538a74ac5761fcbf636.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
Memcached缓存令牌的安装
认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
下载并启动
[root@server1 ~]
[root@server1 ~]
服务端口11211处于监听状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/f2a3a541e9714b2e826ebe27368f5ad4.png)
修改配置文件重新启动
[root@server1 ~]
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
[root@server1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/0c8f6a210e024406a0c4caa3fd5792ba.png)
安装和配置OpenStack身份认证服务
在控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求。
使用带有mod_wsgi
的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。
在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌
[root@controller ~]
MariaDB [(none)]> create database keystone;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'\
-> IDENTIFIED BY 'keystone';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
-> IDENTIFIED BY 'keystone';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
![在这里插入图片描述](https://img-blog.csdnimg.cn/b254bf2810bf498b918c3c1d3d25ca56.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
用keystone用户身份登录成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/0abcc3c6aeae41aa9a8521e4875aa5f7.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
下载keystone和httpd
[root@controller ~]
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/e56085ded84e421f80d2bae3cc8b56d5.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
配置keystone
定义初始管理令牌的值,用openssl命令生成的值写入(随即的)
[root@controller ~]
dfbde0d6f3ec912e368a
[root@controller ~]
对文件做如下图更改
![在这里插入图片描述](https://img-blog.csdnimg.cn/ba1b9a62f7874f53948a8aaf21c24e48.png)
配置数据库访问
配置Fernet UUID令牌的提供者
![在这里插入图片描述](https://img-blog.csdnimg.cn/34ce096cb63440628d445a85361b6eb5.png)
初始化身份认证服务的数据库
[root@controller ~]
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/b9ad0fdbae5b4d6ab99555b7d40dfd30.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
初始化Fernet keys
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/8f7a7406e7484bae97cbcd23c39cbacf.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
配置 Apache HTTP 服务器
[root@controller keystone]
更改内容如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/d66a9da000a24cc588ae649666e3665d.png)
创建文件并写入以下内容
[root@controller keystone]
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>
[root@controller keystone]
查看端口,正常监听服务开启成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/0b2a1c00e7774d6394c00d126dbf86fe.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
创建服务实体和API端点
每个添加到OpenStack环境中的服务在目录中需要一个 service 实体和一些 API endpoints 。
在Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。
身份认证服务管理了一个与环境相关的 API 端点的目录。服务使用这个目录来决定如何与环境中的其他服务进行通信。
OpenStack使用三个API端点变种代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。
[root@controller keystone]
[root@controller keystone]
[root@controller keystone]
每个添加到OpenStack环境中的服务要求一个或多个服务实体和三个认证服务中的API 端点变种。
[root@controller keystone]
> --name keystone --description "OpenStack Identity" identity
[root@controller keystone]
> identity public http://controller:5000/v3
[root@controller keystone]
> identity internal http://controller:5000/v3
[root@controller keystone]
> identity admin http://controller:35357/v3
![在这里插入图片描述](https://img-blog.csdnimg.cn/47f93426beee4ac2aeb6194831209f46.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
创建域、项目、用户和角色
身份认证服务为每个OpenStack服务提供认证服务。认证服务使用 T domains, projects (tenants), :term:users<user>
和 :term:roles<role>
的组合
创建域default
[root@controller keystone]
在环境中,为进行管理操作,创建管理的项目、用户和角色
[root@controller keystone]
> --description "Admin Project" admin
[root@controller keystone]
> --password admin admin
[root@controller keystone]
[root@controller keystone]
同上创建service项目和常规(非管理)任务应该使用无特权的项目和用户demo
[root@controller keystone]
> --description "Service Project" service
[root@controller keystone]
> --description "Demo Project" demo
[root@controller keystone]
> --password demo demo
[root@controller keystone]
[root@controller keystone]
重置OS_TOKEN
和OS_URL
环境变量,作为 admin 用户,请求认证令牌
[root@controller keystone]
[root@controller keystone]
> --os-project-domain-name default --os-user-domain-name default \
> --os-project-name admin --os-username admin token issue
![在这里插入图片描述](https://img-blog.csdnimg.cn/bf37780c816e4c47b0abb8bf48a7d1af.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
作为demo
用户,请求认证令牌
[root@controller keystone]
> --os-project-domain-name default --os-user-domain-name default \
> --os-project-name demo --os-username demo token issue
![在这里插入图片描述](https://img-blog.csdnimg.cn/b3d127807c3d48ac89f3ea5b24a4927e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
创建 admin 和 demo项目和用户创建客户端环境变量脚本。
[root@controller ~]
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
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
![在这里插入图片描述](https://img-blog.csdnimg.cn/7a4c85d5eb1f46098c3b431bcd5bc16a.png)
[root@controller ~]
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
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
![在这里插入图片描述](https://img-blog.csdnimg.cn/cd1949393a3e47b3897fd675edcd6643.png)
加载admin-openrc
文件来身份认证服务的环境变量位置和admin
项目和用户证书:
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/fe7cebb10b514dbda2b9f070baab7354.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
在控制节点上安装和配置镜像服务(glance)
镜像服务 (glance) 允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST API,允许查询虚拟机镜像的 metadata 并获取一个现存的镜像。可以将虚拟机镜像存储到各种位置,从简单的文件系统到对象存储系统—-例如 OpenStack 对象存储, 并通过镜像服务使用。
OpenStack镜像服务包括以下组件:
glance-api:
接收镜像API的调用,诸如镜像发现、恢复、存储。
glance-registry:
存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。
数据库
存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
镜像文件的存储仓库
支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3。记住,其中一些仓库仅支持只读方式使用。
元数据定义服务
通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。
安装和配置镜像服务之前,必须创建创建一个数据库、服务凭证和API端点。
[root@controller ~]
MariaDB [(none)]> CREATE DATABASE glance;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
-> IDENTIFIED BY 'glance';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
-> IDENTIFIED BY 'glance';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
![在这里插入图片描述](https://img-blog.csdnimg.cn/0bef5aa43df94d109a2b6d4910696e71.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
创建 glance 用户,添加 admin 角色到 glance 用户和 service 项目上。
[root@controller ~]
[root@controller ~]
创建glance
服务实体,创建镜像服务的 API 端点
[root@controller ~]
> --description "OpenStack Image" image
[root@controller ~]
> image public http://controller:9292
[root@controller ~]
> image internal http://controller:9292
[root@controller ~]
> image admin http://controller:9292
安装glance服务并配置
[root@controller ~]
[root@controller ~]
[database]
connection = mysql+pymysql://glance:glance@controller/glance
[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 = glance
password = glance
[paste_deploy]
flavor = keystone
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
编辑文件 /etc/glance/glance-registry.conf
并完成如下动作:
[root@controller ~]
[database]
connection = mysql+pymysql://glance:glance@controller/glance
[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 = glance
password = glance
[paste_deploy]
flavor = keystone
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/24e739fbd24a4037a67557efda378082.png)
进入数据库查看数据写入成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/fc146e5061fe46908b04c0de13ace26a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
启动镜像服务、配置他们随机启动
[root@controller ~]
> openstack-glance-registry.service
![在这里插入图片描述](https://img-blog.csdnimg.cn/177663c6c6af4f18bdc94ce51c5a4862.png)
下载源镜像:wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
,使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它
[root@controller ~]
> --file cirros-0.5.1-x86_64-disk.img \
> --disk-format qcow2 --container-format bare \
> --public
确认镜像的上传并验证属性
![在这里插入图片描述](https://img-blog.csdnimg.cn/8c7f291f999445408c47bf40024f3085.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
在控制节点上安装和配置 Compute 服务
使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。
OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。
更多内容请参考:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/common/get_started_compute.html
在安装和配置 Compute 服务前,必须创建数据库服务的凭据以及 API endpoints
[root@controller images]
MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
-> IDENTIFIED BY 'nova';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
-> IDENTIFIED BY 'nova';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
-> IDENTIFIED BY 'nova';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
-> IDENTIFIED BY 'nova';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
要创建服务证书,完成这些步骤
[root@controller images]
> --password nova nova
[root@controller images]
[root@controller images]
> --description "OpenStack Compute" compute
[root@controller images]
> compute public http://controller:8774/v2.1/%\(tenant_id\)s
[root@controller images]
> compute internal http://controller:8774/v2.1/%\(tenant_id\)s
[root@controller images]
> compute admin http://controller:8774/v2.1/%\(tenant_id\)s
安装软件包
[root@controller images]
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler
编辑``/etc/nova/nova.conf``文件并完成下面的操作:
具体更改参照官网:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-controller-install.html
同步Compute 数据库
![在这里插入图片描述](https://img-blog.csdnimg.cn/e6b90c8b0738456b9be057bea1874ea1.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
启动 Compute 服务并将其设置为随系统启动
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
安装和配置计算节点
虚拟机配置和controller除了内存外都一样,内存为1.2G,网卡都是两个,时间同步也做了。
更改主机名并加解析
[root@server1 ~]
[root@compute1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/5e0e3fdc2bab414ba00c159d61937d08.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
配置openstsck的源
![在这里插入图片描述](https://img-blog.csdnimg.cn/3024333d2c5647049c033b6a3659b3dc.png)
先升级再安装软件包,然后修改配置
[root@compute1 ~]
[root@compute1 ~]
[root@compute1 ~]
照着这个链接改文件即可https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-compute-install.html
下图ip要改成自己的主机
![在这里插入图片描述](https://img-blog.csdnimg.cn/424d261f29d5405fa961548134401210.png)
看自己的计算节点是否支持虚拟机的硬件加速
[root@compute1 ~]
0
[root@compute1 ~]
我的不支持kvm,所以改为qemu
![在这里插入图片描述](https://img-blog.csdnimg.cn/fb962daec6c841dca20185945f7e07d3.png)
启动计算服务及其依赖,并将其配置为随系统自动启动
[root@compute1 ~]
列出服务组件,以验证是否成功启动并注册了每个进程
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/20bfb37a6b1b420197ae85926e8ced4d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
安装并配置网络服务(neutron)
OpenStack Networking(neutron),允许创建、插入接口设备,这些设备由其他的OpenStack服务管理。插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。
OpenStack网络主要和OpenStack计算交互,以提供网络连接到它的实例。
对于任意一个给定的网络都必须包含至少一个外部网络。不像其他的网络那样,外部网络不仅仅是一个定义的虚拟网络。相反,它代表了一种OpenStack安装之外的能从物理的,外部的网络访问的视图。外部网络上的IP地址可供外部网络上的任意的物理设备所访问
外部网络之外,任何 Networking 设置拥有一个或多个内部网络。这些软件定义的网络直接连接到虚拟机。仅仅在给定网络上的虚拟机,或那些在通过接口连接到相近路由的子网上的虚拟机,能直接访问连接到那个网络上的虚拟机。
如果外部网络想要访问实例或者相反实例想要访问外部网络,那么网络之间的路由就是必要的了。每一个路由都配有一个网关用于连接到外部网络,以及一个或多个连接到内部网络的接口。就像一个物理路由一样,子网可以访问同一个路由上其他子网中的机器,并且机器也可以访问路由的网关访问外部网络。
更多内容参照官网:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/common/get_started_networking.html
在配置OpenStack网络(neutron)服务之前,你必须为其创建一个数据库,服务凭证和API端点
[root@controller ~]
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'NEUTRON_DBPASS';
要创建服务证书,完成这些步骤
[root@controller ~]
[root@controller ~]
创建neutron服务实体
[root@controller ~]
> --description "OpenStack Networking" network
创建网络服务API端点
[root@controller ~]
> network public http://controller:9696
[root@controller ~]
> network internal http://controller:9696
[root@controller ~]
> network admin http://controller:9696
配置公共网络,Networking 服务器组件的配置包括数据库、认证机制、消息队列、拓扑变化通知和插件。
[root@controller ~]
> openstack-neutron-linuxbridge ebtables -y
[root@controller ~]
配置 Modular Layer 2 (ML2) 插件、配置Linuxbridge代理、配置DHCP代理
[root@controller ~]
[root@controller ~]
[root@controller ~]
neutron-controller-install-option1.html文件需要注意的地方
![在这里插入图片描述](https://img-blog.csdnimg.cn/f8e8c3a17a8840e0bebb9fcdd0bc09cb.png)
配置元数据代理
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/168d60b74b9e49cd861a9c9f680ede95.png)
配置网络服务
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/e6dbeb6dbee24808b5a458202db4fc45.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
。如果超链接不存在,使用下面的命令创建它,然后同步数据库
[root@controller ~]
[root@controller ~]
> --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
![在这里插入图片描述](https://img-blog.csdnimg.cn/e3be9649ad294eb49d7d75a35eaf93d2.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
重启计算API 服务
[root@controller ~]
计算节点:
安装组件修改配置
[root@compute1 ~]
[root@compute1 ~]
配置Linuxbridge代理
[root@compute1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/27fa043995d546948f62d9f8dbd2a8f8.png)
[root@compute1 ~]
重启计算服务,启动Linuxbridge代理并配置它开机自启动
[root@compute1 ~]
[root@compute1 ~]
在控制节点列出加载的扩展来验证neutron-server
进程是否正常启动![在这里插入图片描述](https://img-blog.csdnimg.cn/a7661e7b629c41ada3ffbd531cf0e0a6.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
列出代理以验证启动 neutron 代理是否成功,如下图成功啦
#输出结果应该包括控制节点上的四个代理和每个计算节点上的一个代理。
至此openstack平台已初步搭建好,只不过功能较简单
启动一个实例(启动一个云主机)
创建提供者网络
用管理员的身份创建一个网络
[root@controller ~]
> --provider:network_type flat provider
创建子网
[root@controller ~]
> --allocation-pool start=192.168.122.100,end=192.168.122.200 \
> --dns-nameserver 114.114.114.114 --gateway 192.168.122.1 \
> provider 192.168.122.0/24
![在这里插入图片描述](https://img-blog.csdnimg.cn/a52f94aca35e41b7b3bed9d4cbb26108.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
查看自带的云主机类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/2d7b4b3992544cafa99dfbe6130cf851.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
创建m1.nano规格的主机
可以自己创建云主机类型
[root@controller ~]
云主机只会调度到计算器上,不会调度到控制器上
![在这里插入图片描述](https://img-blog.csdnimg.cn/9fbfb46fde854e5ba46b181c947b22be.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
生成一个键值对
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
公钥在云主机启动时会自动注入公钥,私钥自己拿着以后可以ssh免密连接
![在这里插入图片描述](https://img-blog.csdnimg.cn/e482baaad6674c4987c20337ab1e02a0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
增加安全组规则
允许ping和ssh(本地的安全策略)
[root@controller ~]
[root@controller ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/5ed078947ea842858462018be8d9845d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
启动实例
构建一个云主机服务
[root@controller ~]
> --nic net-id=616093b3-f09d-435a-b866-c86e44cdea07 --security-group default --key-name mykey provider-instance
![在这里插入图片描述](https://img-blog.csdnimg.cn/2c93200fbf51424681b83c5f84018808.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
检查实例的状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/ed083bf628854085b1b1dcb4756b07aa.png)
使用虚拟控制台访问实例
查看vnc地址(vnc:用于远程控制台访问虚机的开源GUI和CLI工具。被计算服务支持。)
![](https://img-blog.csdnimg.cn/a93f4c32cbdb4266bad2046c38e79875.png)
想要访问vnc真机必须有解析,因为浏览器用的是真机的
![在这里插入图片描述](https://img-blog.csdnimg.cn/8145f83bcb294447be482320f63aa389.png)
用真机的浏览器输入上边获得的vnc地址访问,访问后的页面如下,但可以看到是有错误的。初步判断是镜像的问题,换一个镜像试试
![在这里插入图片描述](https://img-blog.csdnimg.cn/a0e23d58e99d4a4bb4e693fd48b00be9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
删除云主机和之前的镜像
![在这里插入图片描述](https://img-blog.csdnimg.cn/d9076bbc95a1474ab3b59104e0a3fa42.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
更换镜像
![在这里插入图片描述](https://img-blog.csdnimg.cn/9fd7de06df694cbc9283d210ded375db.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
重新创建云主机
![在这里插入图片描述](https://img-blog.csdnimg.cn/9865e050769340238ed636728af3c38a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
获取vnc地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/720652a504114a6783ed78aa4f941e57.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
访问成功!只要计算节点可以上网那么该云主机就可以上网
![在这里插入图片描述](https://img-blog.csdnimg.cn/da20d0b699fe426caaf956568e3cc296.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
在计算节点下载虚拟机管理工具(云主机就相当于是计算节点上的一个虚拟机)
[root@compute1 ~]
[root@compute1 ~]
![在这里插入图片描述](https://img-blog.csdnimg.cn/f17936e1cfc049378806667ee6496e1d.png)
eth1下面的就是虚拟云主机的网络接口
![在这里插入图片描述](https://img-blog.csdnimg.cn/b64a8377dc6440d59017576106cea645.png)
可以ssh连接,云主机不允许用超户身份登录,只能以普通用户身份登录
![在这里插入图片描述](https://img-blog.csdnimg.cn/476db45392bb4a3db20ea2fd0c36a002.png)
因为本地持有私钥所以可以直接免密连接
![在这里插入图片描述](https://img-blog.csdnimg.cn/856617a8d4e149fda159b67c5406dd2a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1MDA1MzEx,size_16,color_FFFFFF,t_70)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)