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       #登录mysqlMariaDB [(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.confListen 5000
Listen 35357<VirtualHost *:5000>WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}WSGIProcessGroup keystone-publicWSGIScriptAlias / /usr/bin/keystone-wsgi-publicWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /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-adminWSGIScriptAlias / /usr/bin/keystone-wsgi-adminWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /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-openrcexport 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-openrcexport 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 -prootMariaDB [(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 -prootMariaDB [(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 -prootCREATE 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连接,云主机不允许用超户身份登录,只能以普通用户身份登录

因为本地持有私钥所以可以直接免密连接

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

  1. 2018最值得期待:为AI提供基础云平台的海云捷迅

    今天是大年初二,给您拜年! 今年春节不一样,中国云报携手为AI提供基础云平台的海云捷迅给您拜年! 以下是海云捷迅CTO李华的新年寄语 北京海云捷迅科技有限公司(简称AWCloud海云捷迅),国内领先的 ...

  2. kubernetes(K8s):管理云平台中多个主机上的容器化的应用

    目录 kubernetes简介 Kubernetes生态 Kubernetes概述 Kubernetes官网 kubernetes简介 kubernetes,简称K8s,是用8代替8个字符" ...

  3. 服务器云平台 系统,服务器云平台 系统

    服务器云平台 系统 内容精选 换一换 云服务器创建后区域固定,不能将云服务器转移到另一个区域,也不能将云服务器转移到另一个帐号.您可以通过镜像迁移方式实现云服务器的跨帐号跨区域迁移.服务器迁移的常见场 ...

  4. 云上的云:AVOS Cloud在云平台上构建云服务的经验分享

    2019独角兽企业重金招聘Python工程师标准>>> 云上的云:AVOS Cloud在云平台上构建云服务的经验分享 AVOS Cloud作为国内领先的云后端服务提供商,为移动应用开 ...

  5. UVM学习——搭建简单的UVM平台

    引言 本专栏的博客均与 UVM 的学习相关,学习参考: [1]UVM Tutorial [2]张强著,UVM实战 (卷 Ⅰ) [3]Download UVM (Standard Universal V ...

  6. 大数据环境-云平台(阿里云)

    由于电脑配置原因,无法在本地利用虚拟机搭建环境,因此使用云平台来当做学习的环境. 本节内容参考: [2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop.Hive,云平台实战项目全 ...

  7. 秒云容器云平台:一站式云原生PaaS平台

    本篇文章开始之前,我们以目前室内装修里比较流行的2种方式做对比,来讲一下所谓的"半包"和"全包"的区别.简单讲半包和全包的差别其实就是辅材和主材由谁提供的问题. ...

  8. 快速云:一文看懂云平台存储相关云服务(云硬盘)如何使用?

    随着云计算技术的逐渐成熟和快速发展,特别是数字化转型的持续推进,企业的云化速度大幅提升,同时在各类业务分布式改造和业务场景化的推动下,业务逐渐扁平化.耦合化及云化.在此背景下企业通过自建或采购的形式来 ...

  9. 服务器云平台 系统,服务器云平台系统

    服务器云平台系统 内容精选 换一换 您可以选择在云服务器上安装一个或多个应用.如需在云服务器上安装其他应用,请参考如下操作进行添加.暂时仅允许支持VR应用的云服务器安装VR应用.暂时仅允许支持3D应用 ...

最新文章

  1. c语言bool怎么用_C语言中的一维数组和二维数组什么?怎么用?
  2. 如何理解矩阵的特征向量和特征值?
  3. 分分钟玩转多进程编程
  4. BZOJ 1009: [HNOI2008]GT考试(kmp+dp+矩阵优化)
  5. java中channelmessage,MessagePack在Netty中的应用
  6. linux 查看flash大小,Linux OpenWRT查看CPU,RAM,Flash信息参数
  7. linux下wxr的权限,Day16-Linux权限知识和应用实践讲解
  8. django入门与实践 3-1 环境搭建
  9. 说说那些死于决斗的大牛
  10. Oracle 12.1.0.1 GI+DATABASE打PSU
  11. 【科研论文】基于HTTP协议的嵌入式远程监控系统的研究
  12. 学弟学妹看我文章顺利毕业,基于HTML+Javascript五子棋人机博弈系统设计与实现《记得收藏》
  13. mumu模拟器Android版本才6,MuMu模拟器官方下载
  14. 怎么使用计算机公式,在excel怎么运用计算公式进行运算?
  15. html如何做站内搜索,站内搜索-Search.html
  16. 济南“90后”打金女孩:打造有温度的金属
  17. 前端登录界面通用模版
  18. MySQL之between and 临界值问题
  19. ubuntu 下最简单的歌词软件osdlyric (with banshee)
  20. Siemens Simcenter FloEFD 2021.2.0 for Catia V5

热门文章

  1. Ubuntu16.04深度学习环境搭建
  2. HiveConf of name hive.metastore.local does not exis问题
  3. NRDP要比NSCA更好使用
  4. Linux设置密码dictionary,Linux中修改密码出现it is based on a dictionary word解决方法
  5. SpringBoot整合druid数据源,quartz定式框架
  6. poi操作excel之填充数据、删除行
  7. java中正则表达式校验日期,1999-01-01 ,1991\01\01,-分割和\分割两种形式
  8. iphone计算机怎样打开声音,mac系统启动的时候咚声音怎么开启或关闭?
  9. 三维纽结与弦理论的一些猜想
  10. 安全生产预测预警系统解决方案