用OpenStack搭建简单的云平台并启动云主机

2023-05-16

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
在这里插入图片描述
CPU设置如下,模块那儿没有该选项,直接手敲
在这里插入图片描述
需要两块网卡,剩下的随意
在这里插入图片描述
更改网络配置文件

cd /etc/sysconfig/network-scripts

内容如下
在这里插入图片描述
让eth1网卡up

[root@server1 network-scripts]# ifup eth1
[root@server1 network-scripts]# ip addr 

如下设置成功
在这里插入图片描述

配置时间同步

在真机编辑配置文件,使用阿里云的ntp服务

[root@lucky ~]# vim /etc/chrony.conf

#pool 2.rhel.pool.ntp.org iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst

在这里插入图片描述

允许别的主机同步真机的时间
在这里插入图片描述

访问阿里云的ntp服务没有问题
在这里插入图片描述
下载时间同步工具,编辑配置文件,设置同步真机的时间,不允许别人同步自己的时间,然后启动NTP服务

[root@server1 network-scripts]# yum install -y chrony
[root@server1 ~]# vim /etc/chrony.conf
[root@server1 ~]# systemctl enable --now chronyd	#启动 NTP 服务并将其配置为随系统启动

在这里插入图片描述
在这里插入图片描述

如下已经检测到同步的主机

[root@server1 ~]# date
Tue Aug 17 10:52:19 CST 2021
[root@server1 ~]# chronyc sources -v

在这里插入图片描述

安装OpenStack

配置OpenStack源

[root@server1 ~]# vim /etc/yum.repos.d/openstack.repo
[openstack]
name=openstack
baseurl=http://192.168.122.1/mitaka		#真机的离线安装包地址
gpgcheck=0

在这里插入图片描述
先升级再下载

[root@server1 ~]# yum upgrade
[root@server1 ~]# yum install python-openstackclient -y		#安装 OpenStack 客户端,2.3.0版本
[root@server1 ~]# yum install mariadb-server -y				#安装mysql
[root@server1 ~]# vim /etc/my.cnf.d/openstack.cnf			#编辑配置文件,内容如下
[mysqld]
bind-address = 192.168.122.11		#写的是本机ip
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 ~]# systemctl enable --now mariadb.service	#启动数据库

在这里插入图片描述
为了保证数据库服务的安全性,进行安全初始化

[root@server1 ~]# mysql_secure_installation
##密码我设置的为root

在这里插入图片描述

安装 RabbitMQ 消息队列服务

OpenStack 使用 message queue (消息队列:将请求从客户端传递至合适的工作器并在工作完成后将输出返回至客户端)协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。
队列: 一个在守护进程间传递消息的中央集线器

首先要改主机名,因为RabbitMQ是根据主机名字配置的,重新改主机名可能会使之后创建的用户消失导致之后的服务无法启动
在这里插入图片描述

域名解析也要更改

[root@controller ~]# vim /etc/hosts

在这里插入图片描述

安装rabbitmq-server并启动

[root@server1 ~]# yum install rabbitmq-server -y
[root@server1 ~]# systemctl enable --now rabbitmq-server.service	#启动消息队列服务并将其配置为随系统启动:
[root@server1 ~]# rabbitmq-plugins enable rabbitmq_management		#启动插件

在这里插入图片描述
添加 openstack 用户,并给openstack用户配置写和读权限

[root@controller ~]# rabbitmqctl add_user openstack openstack
Creating user "openstack" ...
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

RabbitMQ服务端口正常
在这里插入图片描述
浏览器访问成功
在这里插入图片描述
如下是登录进去的页面
在这里插入图片描述

Memcached缓存令牌的安装

认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。

下载并启动

[root@server1 ~]# yum install memcached python-memcached -y
[root@server1 ~]# systemctl enable --now memcached.service

服务端口11211处于监听状态
在这里插入图片描述
修改配置文件重新启动

[root@server1 ~]# vim /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
#OPTIONS="-l 127.0.0.1,::1"			#这一行注释掉
[root@server1 ~]# systemctl restart memcached.service

在这里插入图片描述

安装和配置OpenStack身份认证服务

在控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求。
使用带有mod_wsgi的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。

在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌

[root@controller ~]# mysql -proot		#登录mysql

MariaDB [(none)]> create database keystone;		#创建 keystone 数据库
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'\
    ->   IDENTIFIED BY 'keystone';			#对keystone数据库授予本地的权限
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
    ->   IDENTIFIED BY 'keystone';			#对keystone数据库授予远程登录的权限
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye

在这里插入图片描述
用keystone用户身份登录成功
在这里插入图片描述
下载keystone和httpd

[root@controller ~]# yum install openstack-keystone httpd mod_wsgi -y
[root@controller ~]# grep -v ^# /etc/keystone/keystone.conf | uniq		#筛选看有哪些模块

在这里插入图片描述

配置keystone

定义初始管理令牌的值,用openssl命令生成的值写入(随即的)

[root@controller ~]# openssl rand -hex 10
dfbde0d6f3ec912e368a
[root@controller ~]# vim /etc/keystone/keystone.conf

对文件做如下图更改
在这里插入图片描述
配置数据库访问
在这里插入图片描述配置Fernet UUID令牌的提供者
在这里插入图片描述

初始化身份认证服务的数据库

[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@controller ~]# mysql -ukeystone -pkeystone

在这里插入图片描述
初始化Fernet keys

[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

在这里插入图片描述

配置 Apache HTTP 服务器

[root@controller keystone]# vim /etc/httpd/conf/httpd.conf

更改内容如下
在这里插入图片描述
创建文件并写入以下内容

[root@controller keystone]# vim /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>

[root@controller keystone]# systemctl enable --now httpd.service	#启动apache服务

查看端口,正常监听服务开启成功
在这里插入图片描述

创建服务实体和API端点

每个添加到OpenStack环境中的服务在目录中需要一个 service 实体和一些 API endpoints 。
在Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。
身份认证服务管理了一个与环境相关的 API 端点的目录。服务使用这个目录来决定如何与环境中的其他服务进行通信。
OpenStack使用三个API端点变种代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。

[root@controller keystone]# export OS_TOKEN=dfbde0d6f3ec912e368a	#配置认证令牌,这个token就是上面生成的那个
[root@controller keystone]# export OS_URL=http://controller:35357/v3	#配置端点URL
[root@controller keystone]# export OS_IDENTITY_API_VERSION=3	#配置认证 API 版本

每个添加到OpenStack环境中的服务要求一个或多个服务实体和三个认证服务中的API 端点变种。

[root@controller keystone]# openstack service create \
>   --name keystone --description "OpenStack Identity" identity		#创建服务实体和身份认证服务

[root@controller keystone]# openstack endpoint create --region RegionOne \
>   identity public http://controller:5000/v3		#创建认证服务的 API 端点

[root@controller keystone]# openstack endpoint create --region RegionOne \
>   identity internal http://controller:5000/v3		#创建认证服务的 API 端点

[root@controller keystone]# openstack endpoint create --region RegionOne \
>   identity admin http://controller:35357/v3		#创建认证服务的 API 端点

在这里插入图片描述

创建域、项目、用户和角色

身份认证服务为每个OpenStack服务提供认证服务。认证服务使用 T domains, projects (tenants), :term:users<user>和 :term:roles<role>的组合

创建域default

[root@controller keystone]# openstack domain create --description "Default Domain" default

在环境中,为进行管理操作,创建管理的项目、用户和角色

[root@controller keystone]# openstack project create --domain default \
> --description "Admin Project" admin		#项目
[root@controller keystone]# openstack user create --domain default \
> --password admin admin			#用户
[root@controller keystone]# openstack role create admin		#角色
[root@controller keystone]# openstack role add --project admin --user admin admin	#添加admin角色到admin项目和用户上

同上创建service项目和常规(非管理)任务应该使用无特权的项目和用户demo

[root@controller keystone]# openstack project create --domain default \
> --description "Service Project" service
[root@controller keystone]# openstack project create --domain default \
> --description "Demo Project" demo
[root@controller keystone]# openstack user create --domain default \
> --password demo demo
[root@controller keystone]# openstack role create user
[root@controller keystone]# openstack role add --project demo --user demo user

重置OS_TOKENOS_URL 环境变量,作为 admin 用户,请求认证令牌

[root@controller keystone]# unset OS_TOKEN OS_URL
[root@controller keystone]# 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

在这里插入图片描述
作为demo 用户,请求认证令牌

[root@controller keystone]# 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

在这里插入图片描述
创建 admin 和 demo项目和用户创建客户端环境变量脚本。

[root@controller ~]# 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
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

在这里插入图片描述

[root@controller ~]# 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
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

在这里插入图片描述

加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书:

[root@controller ~]# source admin-openrc

在这里插入图片描述

在控制节点上安装和配置镜像服务(glance)

镜像服务 (glance) 允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST API,允许查询虚拟机镜像的 metadata 并获取一个现存的镜像。可以将虚拟机镜像存储到各种位置,从简单的文件系统到对象存储系统—-例如 OpenStack 对象存储, 并通过镜像服务使用。
OpenStack镜像服务包括以下组件:
glance-api:
接收镜像API的调用,诸如镜像发现、恢复、存储。
glance-registry:
存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。
数据库
存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
镜像文件的存储仓库
支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3。记住,其中一些仓库仅支持只读方式使用。
元数据定义服务
通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。

安装和配置镜像服务之前,必须创建创建一个数据库、服务凭证和API端点。

[root@controller ~]# mysql -u root -proot

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

在这里插入图片描述
创建 glance 用户,添加 admin 角色到 glance 用户和 service 项目上。

[root@controller ~]# openstack user create --domain default --password glance glance
[root@controller ~]# openstack role add --project service --user glance admin

创建glance服务实体,创建镜像服务的 API 端点

[root@controller ~]# openstack service create --name glance \
>   --description "OpenStack Image" image
[root@controller ~]# openstack endpoint create --region RegionOne \
>   image public http://controller:9292
[root@controller ~]# openstack endpoint create --region RegionOne \
>   image internal http://controller:9292
[root@controller ~]# openstack endpoint create --region RegionOne \
>   image admin http://controller:9292

安装glance服务并配置

[root@controller ~]# yum install openstack-glance -y
[root@controller ~]# vim /etc/glance/glance-api.conf

[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 ~]# vim /etc/glance/glance-registry.conf

[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 ~]# su -s /bin/sh -c "glance-manage db_sync" glance		#写入镜像服务数据库

在这里插入图片描述
进入数据库查看数据写入成功
在这里插入图片描述
启动镜像服务、配置他们随机启动

[root@controller ~]# systemctl enable --now openstack-glance-api.service \
>   openstack-glance-registry.service

在这里插入图片描述
下载源镜像:wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img,使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它

[root@controller ~]# openstack image create "cirros" \
>   --file cirros-0.5.1-x86_64-disk.img \
>   --disk-format qcow2 --container-format bare \
>   --public

在这里插入图片描述确认镜像的上传并验证属性
在这里插入图片描述

在控制节点上安装和配置 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]# mysql -u root -proot

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]# openstack user create --domain default \
>   --password nova nova
[root@controller images]# openstack role add --project service --user nova admin
[root@controller images]# openstack service create --name nova \
>   --description "OpenStack Compute" compute
[root@controller images]# openstack endpoint create --region RegionOne \
>   compute public http://controller:8774/v2.1/%\(tenant_id\)s
[root@controller images]# openstack endpoint create --region RegionOne \
>   compute internal http://controller:8774/v2.1/%\(tenant_id\)s
[root@controller images]# openstack endpoint create --region RegionOne \
>   compute admin http://controller:8774/v2.1/%\(tenant_id\)s

安装软件包

[root@controller images]# yum install openstack-nova-api openstack-nova-conductor \
  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 数据库

# su -s /bin/sh -c "nova-manage api_db sync" nova
# su -s /bin/sh -c "nova-manage db sync" nova

在这里插入图片描述
启动 Compute 服务并将其设置为随系统启动

# systemctl enable --now openstack-nova-api.service \
  openstack-nova-consoleauth.service openstack-nova-scheduler.service \
  openstack-nova-conductor.service openstack-nova-novncproxy.service

安装和配置计算节点

虚拟机配置和controller除了内存外都一样,内存为1.2G,网卡都是两个,时间同步也做了。

更改主机名并加解析

[root@server1 ~]# hostnamectl set-hostname compute1
[root@compute1 ~]# vim /etc/hosts

在这里插入图片描述
配置openstsck的源
在这里插入图片描述
先升级再安装软件包,然后修改配置

[root@compute1 ~]# yum uograde
[root@compute1 ~]# yum install openstack-nova-compute -y
[root@compute1 ~]# vim /etc/nova/nova.conf
照着这个链接改文件即可https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-compute-install.html
下图ip要改成自己的主机

在这里插入图片描述
看自己的计算节点是否支持虚拟机的硬件加速

[root@compute1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
0	#0就是不支持,需做修改
#如果返回非0数值则不用做下图修改
[root@compute1 ~]# vim /etc/nova/nova.conf

我的不支持kvm,所以改为qemu
在这里插入图片描述
启动计算服务及其依赖,并将其配置为随系统自动启动

[root@compute1 ~]# systemctl enable --now libvirtd.service openstack-nova-compute.service
#如果出现ERROR nova AccessRefused: (0, 0): (403) ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN. For details see the broker logfile.错误
#是rabbitmq用户openstack的问题,改主机名就会发生如下错误
#我启动时就报了这种错,重新建立了一遍rabbitmq用户openstack就好了

列出服务组件,以验证是否成功启动并注册了每个进程

[root@controller ~]# openstack compute service list

在这里插入图片描述

安装并配置网络服务(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 ~]# mysql -u root -proot

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 ~]# openstack user create --domain default --password neutron neutron
[root@controller ~]# openstack role add --project service --user neutron admin

创建neutron服务实体
[root@controller ~]# openstack service create --name neutron \
>   --description "OpenStack Networking" network

创建网络服务API端点
[root@controller ~]# openstack endpoint create --region RegionOne \
>   network public http://controller:9696
[root@controller ~]# openstack endpoint create --region RegionOne \
>   network internal http://controller:9696
[root@controller ~]# openstack endpoint create --region RegionOne \
>   network admin http://controller:9696

配置公共网络,Networking 服务器组件的配置包括数据库、认证机制、消息队列、拓扑变化通知和插件。

[root@controller ~]# yum install openstack-neutron openstack-neutron-ml2 \
>   openstack-neutron-linuxbridge ebtables -y
[root@controller ~]# vim /etc/neutron/neutron.conf
#照着这个链接改文件即可https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option1.html
#密码要和用户名一样

配置 Modular Layer 2 (ML2) 插件、配置Linuxbridge代理、配置DHCP代理

[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[root@controller ~]# vim /etc/neutron/dhcp_agent.ini
#照着这个链接改文件即可
#https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option1.html

neutron-controller-install-option1.html文件需要注意的地方
在这里插入图片描述
配置元数据代理

[root@controller ~]# vim /etc/neutron/metadata_agent.ini

在这里插入图片描述
配置网络服务

[root@controller ~]# vim /etc/nova/nova.conf

在这里插入图片描述
网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini。如果超链接不存在,使用下面的命令创建它,然后同步数据库

[root@controller ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
[root@controller ~]# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
>   --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

在这里插入图片描述
重启计算API 服务

[root@controller ~]# systemctl restart openstack-nova-api.service

计算节点:
安装组件修改配置

[root@compute1 ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y
[root@compute1 ~]# vim /etc/neutron/neutron.conf
#照着这个链接改文件即可
#https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-compute-install.html
#密码和用户名一样

配置Linuxbridge代理

[root@compute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
#照着这个链接改文件即可
#https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-compute-install-option1.html

在这里插入图片描述

[root@compute1 ~]# vim /etc/nova/nova.conf
#照着这个链接改文件即可
#https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-compute-install.html
#密码和用户名一样

重启计算服务,启动Linuxbridge代理并配置它开机自启动

[root@compute1 ~]# systemctl restart openstack-nova-compute.service
[root@compute1 ~]# systemctl enable --now neutron-linuxbridge-agent.service

在控制节点列出加载的扩展来验证neutron-server进程是否正常启动在这里插入图片描述
列出代理以验证启动 neutron 代理是否成功,如下图成功啦
#输出结果应该包括控制节点上的四个代理和每个计算节点上的一个代理。
在这里插入图片描述至此openstack平台已初步搭建好,只不过功能较简单

启动一个实例(启动一个云主机)

创建提供者网络

用管理员的身份创建一个网络

[root@controller ~]# neutron net-create --shared --provider:physical_network provider \
>   --provider:network_type flat provider

创建子网
[root@controller ~]# neutron subnet-create --name provider \
> --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

在这里插入图片描述
查看自带的云主机类型
在这里插入图片描述

创建m1.nano规格的主机

可以自己创建云主机类型

[root@controller ~]# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

云主机只会调度到计算器上,不会调度到控制器上
在这里插入图片描述

生成一个键值对

[root@controller ~]# source demo-openrc
[root@controller ~]# ssh-keygen -q -N ""
[root@controller ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
[root@controller ~]# openstack keypair list

公钥在云主机启动时会自动注入公钥,私钥自己拿着以后可以ssh免密连接
在这里插入图片描述

增加安全组规则

允许ping和ssh(本地的安全策略)

[root@controller ~]# openstack security group rule create --proto icmp default
[root@controller ~]# openstack security group rule create --proto tcp --dst-port 22 default

在这里插入图片描述

启动实例

构建一个云主机服务

[root@controller ~]# openstack server create --flavor m1.nano --image cirros \
> --nic net-id=616093b3-f09d-435a-b866-c86e44cdea07 --security-group default --key-name mykey provider-instance

在这里插入图片描述
检查实例的状态
在这里插入图片描述

使用虚拟控制台访问实例

查看vnc地址(vnc:用于远程控制台访问虚机的开源GUI和CLI工具。被计算服务支持。)

想要访问vnc真机必须有解析,因为浏览器用的是真机的
在这里插入图片描述

用真机的浏览器输入上边获得的vnc地址访问,访问后的页面如下,但可以看到是有错误的。初步判断是镜像的问题,换一个镜像试试
在这里插入图片描述
删除云主机和之前的镜像
在这里插入图片描述
更换镜像
在这里插入图片描述
重新创建云主机
在这里插入图片描述
获取vnc地址
在这里插入图片描述
访问成功!只要计算节点可以上网那么该云主机就可以上网
在这里插入图片描述
在计算节点下载虚拟机管理工具(云主机就相当于是计算节点上的一个虚拟机)

[root@compute1 ~]# yum install -y libvirt-client
[root@compute1 ~]# virsh list

在这里插入图片描述
eth1下面的就是虚拟云主机的网络接口
在这里插入图片描述
可以ssh连接,云主机不允许用超户身份登录,只能以普通用户身份登录
在这里插入图片描述

因为本地持有私钥所以可以直接免密连接
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用OpenStack搭建简单的云平台并启动云主机 的相关文章

  • kolla 部署 openstack v1.0

    准备 hosts配置 cat lt lt EOF gt gt etc hosts 192 168 179 90 kolla ansible controller 192 168 179 91 kolla ansible compute EO
  • Openstack常用命令

    目录 一 创建用户 二 创建删除模板和模板其他操作 三 创建更新删除镜像 四 创建网络 五 VPN的使用 六 创建容器swift模块 前言 在linux中使用openstakc命令前 需要source etc keystone admin
  • 先电Openstack云平台搭建【超级详细】【附带镜像】

    前言 大二上学期学习Openstack 苦于百度与CSDN上没有对应版本的教程 学的十分艰难 在此 将我的Openstack云平台搭建过程写出 留给新手学习 准备工作 VMware Workstation Pro 虚拟机 我使用版本 15
  • OpenStack--镜像制作

    通过 KVM 安装虚 Centos 和 Windwos 2008 R2 x86 64 操作系统步骤并将磁盘文件作为镜像上传到 openstack glance 作为批量创建虚拟机的镜像文件 其中 windowsn 2008 安装 virti
  • 私有云平台管理

    更改主机名 controller hostnamectl set hostname controller compute hostnamectl set hostname compute 更改hosts文件 vi etc hosts 插入以
  • OpenStack H版发布

    根据官方发布的消息 OpenStack 2013 2 代号Havana 最终版已经发布 除了增加OpenStack Metering Ceilometer 和OpenStack Orchestration Heat 两个新组件外 还完成了4
  • ceph安装记录总结

    1 环境准备 准备三台虚机 每个虚机配合三块数据盘 2块网卡 一个网卡设置外网 一个网卡设置成内网 配置文件设置 根据实际情况配置每一个节点 编辑 letc sysconfig network scripts ifcfg ethO 文件 外
  • 关注 OpenStack 的筒子们,福利来啦!

    2017 OpenStack Days China 将于 2017 年 7 月 24 日 25 日 周一至周二 在北京国家会议中心隆重召开 我们非常荣幸能和大家一起见证并打造这样一个强有力的 大规模的云计算标准软件平台 这一次 OpenSt
  • openstack排错

    创建云主机失败 neutron agent list 计算节点服务没起来 实际是起来的 观察时间有问题 同步时间 root compute ntpdate controller 再看控制节点 起来了 也能创建云主机了
  • OpenStack--部署认证服务keystone

    官方安装文档 https docs openstack org ocata zh CN install guide rdo index html 1 keystone数据库配置 1 创建数据库 root linux host4 mysql
  • 【OpenStack实战—实验环境准备02】

    目录 前言 准备虚拟机 1 VMware workstation配置 2 控制节点虚拟机配置 3 计算节点虚拟机配置 4 存储节点虚拟机配置 一 配置静态IP IP规划 命令解释 二 关闭防火墙和selinux 命令解释 三 同步时间 命令
  • OpenStack--实现内外网结构

    类似于阿里云 ECS 主机的内外网 双网卡不通网段 的结构 最终实现内外网区分隔离 https www aliyun com product ecs utm medium text utm source baidu utm campaign
  • openstack用户管理笔记

    1 创建项目 1 1 创建项目 需要确认集群环境是否初始化完毕 实验初始化需要几分钟时间 访问控制节点IP dashboard 如果正常弹出登录页面即初始化完毕 假设控制节点IP为172 20 6 22 则访问地址为 172 20 6 22
  • cehp 维护(二)常见告警维护

    零 修订记录 序号 修订时间 修订内容 1 2021 11 18 新增 一 摘要 笨猪主要介绍ceph常见告警及维护方法或过程中遇到的问题 二 环境信息 2 1 ceph版本 cephadmin proceph01 ceph v ceph
  • 用python画星空源代码

    from turtle import from random import random randint screen Screen width height 800 600 screen setup width height screen
  • OpenStack 中的通知

    我感兴趣的是如何向其他应用程序通知 openstack 中的事件 例如 我不想在我的应用程序中知道 nova 中的实例何时被挂起或恢复 是否有任何网络钩子或类似的东西我可以在哪里获得该信息 我正在查看有关通知的官方文档 但我无法从中得出任何
  • openstack 网络无法从虚拟机 ping/ssh 到虚拟机

    我已经使用 devstack 脚本安装了多节点 openstak 可以运行虚拟机 但存在网络问题 无法从一个虚拟机 ssh ping 到另一虚拟机 我只能从运行该虚拟机的主机 control1 computeX 通过 ssh 连接到虚拟机
  • 是否可以从 openstack 镜像创建 ami?

    我正在从 OpenStack 中正在运行的实例创建图像 nova image create
  • 安装pbr时出错

    我想在运行 OSX 10 8 5 的计算机上安装 openstack 客户端 作为先决条件 我需要安装 pbr 所以 我做了以下事情 git clone git github com openstack dev pbr git cd pbr
  • 服务无法启动虚拟机“DockerDesktopVM”,因为 Hyper-V 组件之一未运行

    我有 Window Server 2016 2019 虚拟机 Openstack 至此Hyper V安装成功 但无法启动 MobyLinuxVM ExposeVirtualizationExtensions 已通过 PowerShell 在

随机推荐

  • 手把手教你做计算机网络基础大题—报文交换

    一 题目 如图所示 xff0c 主机A要向主机B发送一个长度为300KB的报文 xff0c 发送速率为10Mbps xff0c 传输路径上要经过8个路由器 xff0c 连接路由器的链路长度为100km xff0c 信号在链路上的传播速度为2
  • 手把手教你做计算机网络基础大题—TCP头部结构

    一 题目 已知TCP头部用十六进制数表示为 xff1a 05320017 00000001 00000055 500207FF 00000000 请回答以下问题 xff1a xff08 1 xff09 源端口号是多少 xff1f xff08
  • 雅思大作文写作模版

    模版整理自Vince9120老师 xff0c 逻辑清晰 xff0c 对于写作遇到瓶颈的同学有帮助 xff0c 而且易上手使用 Vince老师视频在Bilibili xff0c 备考时间充足的同学建议观看学习 xff01 一 大作文段落详情及
  • 手把手教你做计算机网络基础大题—ARQ协议

    一 题目 假定使用连续ARQ协议 xff0c 发送窗口大小是3 xff0c 而序号范围是 0 xff0c 15 xff0c 而传输媒体保证在接收方能够按序收到分组 在某一时刻 xff0c 在接收方 xff0c 下一个期望收到的序号是5 试问
  • ARM开发中ubuntu设置成静态IP的优劣分析

    ARM linux开发中 xff0c 我们经常将主机ubuntu设置成静态IP 这有一些好处 xff0c 譬如你的uboot的环境变量中serverip就不用每次改来改去的了 我一直也是这么做的 xff0c 但是今天突然发现这样会带来很多问
  • 手把手教你做计算机网络基础大题—路由表

    一 题目 设某路由器建立了如下路由表 xff1a 目的网络子网掩码下一跳128 96 39 0255 255 255 128接口m0128 96 39 128255 255 255 128接口m1128 96 40 0255 255 255
  • 新手入门:ST-Link和J-Link仿真器的使用

    当编译完成之后 xff0c 点击下载 xff0c 出现这样的错误提示 xff0c 说明我们的仿真器配置没有配置好 xff0c 下面我们讲讲J Link和ST Link分别应该如何配置 xff08 1 xff1a 编译 xff0c 后续只编译
  • 深度学习图像分类实战——pytorch搭建卷积神经网络(AlexNet, LeNet, ResNet50)进行场景图像分类(详细)

    目录 1 一 实验过程 1 1 实验目的 1 2 实验简介 1 3 数据集的介绍 1 4 一 LeNet5网络模型 1 5 二 AlexNet网络模型 1 6 三 ResNet50 xff08 残差网络 xff09 网络模型 二 实验代码
  • c++实现经典游戏贪吃蛇(超详解)

    经典版 要求 xff1a 1碰到四周和自身游戏结束 xff1b 2迟到食物蛇身增长 xff1b 3食物吃得越多游戏越快 xff1b 4通过w a s d可控制蛇头的方向 xff1b 5蛇身颜色不一致 源码 xff08 需要easy x 贪吃
  • c++中求数组的长度

    c 43 43 中求数组的长度 数组长度 61 sizeof 数组名 sizeof 数组类型 span class token macro property span class token directive hash span span
  • 实验 1 UML 类图实验

    实验内容 作图工具 xff1a PowerDesigner 1 绘制以下类图并生成源代码 xff08 语言不限 xff09 xff1a 2 根据以下描述绘制类图 xff0c 再正向工程生成 Java 源代码 xff08 也可生成其他面 2
  • 贪吃蛇(C++)

    一 项目思路 该项目用于计算机软件课设 贪吃蛇要解决的问题有 xff1a 蛇身的移动 xff0c 事物的随机生成 xff0c 蛇头与食物重合 xff0c 蛇吃食物身体的变长 蛇身移动的处理可以改变蛇首元素 xff08 蛇身用数组存储 xff
  • C语言编程工具Dev C++的安装教程

    一 Dev C 43 43 安装包 xff08 5 11版本 xff09 无偿分享 Dev C 43 43 5 11 简体中文版下载地址 xff1a 百度网盘 xff1a 链接 xff1a https pan baidu com s 1Yb
  • winform基础 C#编程

    1 winform应用程序是一种智能客户端技术 xff0c 帮助我们获得信息或者传输信息 2 当后台需要获取前台控件属性 xff0c 需要使用Name属性 visible 指示一个空间是否可见 enabled 指示一个空间是否可用 3 事件
  • 联合索引为啥需要满足最左前缀原则?

    在回答这个问题之前 首先需要先了解清楚何为联合索引 联合索引就是MySQL设计大叔为了节省内存而创建的将多个列的值作为非叶子节点存储的B 43 树结构 比如按照key part1 key part2 key part3列创建了idx key
  • 堆栈和变量的分配区域

    转载自 http mengren425 blog 163 com blog static 56903931200791003721118 一 预备知识 程序的内存分配 一个由c C 43 43 编译的程序占用的内存分为以下几个部分 1 栈区
  • 2023海南大学835软件工程原理方法与应用考研总结

    不知不觉23考研已经结束一个星期了 xff0c 考试的过程还历历在目 政治复习虽然看完了徐的视频 xff0c 刷完了1000题 xff0c 写了肖8肖4 xff0c 背了肖4大题 xff0c 但选择题写的时候还是十分纠结 xff0c 用了一
  • vue 封装 axios 请求

    需求 xff1a 向后端请求拿数据 好处 xff1a 把所有的请求方法放在一个文件夹里面 xff0c 方便优化 先把 axios 安装起 npm install axios save 接下来按照步骤走吧 go go go 1 在src路径下
  • Python:从清华源安装第三方库

    python 在使用pip安装的时候 xff0c 一些小一点的还好 xff0c 安装一些大的包的时候 xff0c 会非常的慢甚至出现timeout的报错 xff0c 这时我们就可以使用清华大学的镜像来安装 xff0c 打开终端 xff1a
  • 用OpenStack搭建简单的云平台并启动云主机

    OpenStack OpenStack简介OpenStack重要集成组件OpenStack平台部署部署环境建立虚拟机 配置时间同步安装OpenStack安装 RabbitMQ 消息队列服务Memcached缓存令牌的安装安装和配置OpenS