当前位置: 首页 > java >正文

OpenStack入门体验

1.1云计算概述

相信大家都听到很多的阿里云、腾讯云、百度云等等这些词,那到底什么是云计算?云
计算又能做什么?

1.1.1什么是云计算

云计算(cloud computing)是一种基于网络的超级计算模式,基于用户的不同需求,提供所需的资源,包括计算资源、存储资源、网络资源等。云计算服务务运行在若干台高性能物理服务器之上,提供每秒10万亿次的运算能力,可以用于模拟核爆炸、预测气候变化以及市场发展趋势。

云计算有广义和狭义之分。
> 狭义的云计算是指通过网络按需向用户提供IT基础设施,包括硬件、平台和软件,提
供资源的网络被称为"云"。

> 广义的云计算是指服务的交付和使用模式,通过网络以按需、、易扩展的方式获得所需的
服务。

1.1.2云计算的服务模型

云计算模型中有laaS (Infrastructure as a Service,基础架构即服务)、Paas(Platform
as a Service,平台即服务)、SaaS (Software as a Service,软件即服务)三种基本服务模型

1.laaS

laas提供最底层的IT基础设施服务,包括处理能力、存储空间、网各资源等。

2.PasS

Paas是把已经安装好开发环境的系统平台作为一种服务通通过互联网提供给用户。

3.Saas

Saas可直接通过互联网为用户提供软件和应用程序等服务

1.1.3OpenStack概述

OpenStack 是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它不是一个单一的软件,而是由多个组件组成的云计算平台。这些组件相互协作,提供诸如创建和管理虚拟机、分配和管理存储资源、配置网络等功能。​

OpenStack 主要包含以下核心组件:​

  1. Nova:计算服务组件,负责虚拟机实例的生命周期管理,包括创建、启动、停止、删除虚拟机等操作。​
  2. Cinder:块存储服务组件,为虚拟机提供持久化的块存储设备,类似于我们在物理服务器上使用的硬盘。​
  3. Neutron:网络服务组件,用于管理和配置云环境中的网络,包括创建网络、子网、路由器,以及配置安全组等网络功能。​
  4. Glance:镜像服务组件,用于存储和管理虚拟机镜像,用户可以通过 Glance 上传、下载和共享镜像。​
  5. Horizon:OpenStack 的 Web 管理界面,通过图形化的方式,方便用户对 OpenStack 资源进行管理和操作,无需频繁使用命令行。​
  6. Keystone:身份认证服务组件,负责用户身份验证、权限管理和服务目录管理,确保只有授权用户才能访问相应的资源。​

了解这些核心组件的基本功能,有助于我们在后续的操作中更好地理解和使用 OpenStack。

1.2 OpenStack一键部署

1.2.1环境介绍

  • CPU:至少 4 核及以上​
  • 内存:16GB 及以上​
  • 存储:100GB 及以上可用磁盘空间
  • 操作系统:Ubuntu 20.04 LTS 或 CentOS 8(本次实验以 Ubuntu 20.04 LTS 为例)​
  • 网络:确保实验环境能够连接互联网,以便安装所需的软件包和依赖项​

在准备好实验环境后,我们还需要对操作系统进行一些基本的配置,如更新系统软件包、设置主机名和网络配置等。

  1. 更新系统软件包​

在终端中执行以下命令,更新系统已安装的软件包到最新版本:

sudo apt update

sudo apt upgrade -y

2设置主机名

执行以下命令设置主机名(假设我们将主机名设置为 openstack - node):

sudo hostnamectl set - hostname openstack - node

3关闭防火墙和 SELinux(仅在测试环境中)​

为了避免防火墙和 SELinux 对 OpenStack 服务造成干扰,在测试环境中可以将它们关闭。执行以下命令关闭防火墙:​

TypeScript

取消自动换行复制

sudo ufw disable​

对于 CentOS 系统,还需要关闭 SELinux,编辑/etc/selinux/config文件,将SELINUX的值改为disabled,然后重启系统使更改生效。​

三、安装 OpenStack 软件包​

(一)安装 OpenStack 源​

OpenStack 官方提供了稳定的软件源,我们可以通过添加源来安装 OpenStack 相关软件包。执行以下命令添加 OpenStack 源:​

TypeScript

取消自动换行复制

sudo apt - install software - properties - common​

sudo add - apt - repository cloud - archive:ussuri​

sudo apt update​

这里我们使用的是 OpenStack Ussuri 版本的源,你也可以根据自己的需求选择其他版本。​

(二)安装数据库​

OpenStack 的多个组件需要使用数据库来存储配置和运行数据,我们选择安装 MySQL 数据库。执行以下命令安装 MySQL:​

TypeScript

取消自动换行复制

sudo apt - install mariadb - server python3 - pymysql​

安装完成后,对 MySQL 进行安全配置,执行以下命令:​

TypeScript

取消自动换行复制

sudo mysql_secure_installation​

按照提示设置 root 用户密码,删除匿名用户、禁止 root 远程登录、删除 test 数据库等操作,以提高数据库的安全性。​

(三)安装消息队列服务​

OpenStack 组件之间通过消息队列进行通信,我们选择安装 RabbitMQ 作为消息队列服务。执行以下命令安装 RabbitMQ:​

TypeScript

取消自动换行复制

sudo apt - install rabbitmq - server​

安装完成后,添加一个 OpenStack 用户,并赋予其访问权限:​

TypeScript

取消自动换行复制

sudo rabbitmqctl add_user openstack password​

sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"​

这里将password替换为你设置的密码。​

(四)安装身份认证服务(Keystone)​

  1. 创建数据库​

登录 MySQL 数据库:​

TypeScript

取消自动换行复制

sudo mysql - u root - p​

输入之前设置的 root 密码后,执行以下 SQL 语句创建 Keystone 数据库:​

TypeScript

取消自动换行复制

CREATE DATABASE keystone;​

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'password';​

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'password';​

FLUSH PRIVILEGES;​

EXIT;​

将password替换为你设置的密码。​

  1. 安装 Keystone 软件包​

执行以下命令安装 Keystone:​

TypeScript

取消自动换行复制

sudo apt - install keystone python3 - keystoneclient apache2 libapache2 - mod - wsgi - python3​

  1. 配置 Keystone​

编辑/etc/keystone/keystone.conf文件,找到并修改以下配置项:​

TypeScript

取消自动换行复制

[database]​

connection = mysql+pymysql://keystone:password@localhost/keystone​

[token]​

provider = fernet​

将password替换为你设置的密码。​

  1. 初始化 Keystone 数据库​

执行以下命令初始化 Keystone 数据库:​

TypeScript

取消自动换行复制

sudo su - s /bin/bash - c "keystone-manage db_sync" keystone​

  1. 配置 Fernet 令牌​

执行以下命令初始化 Fernet 密钥:​

TypeScript

取消自动换行复制

sudo keystone - manage fernet_setup --keystone - user keystone --keystone - group keystone​

sudo keystone - manage credential_setup --keystone - user keystone --keystone - group keystone​

  1. 启动 Keystone 服务​

重启 Apache 服务使配置生效:​

TypeScript

取消自动换行复制

sudo systemctl enable --now apache2​

  1. 配置 Keystone 服务端点​

通过命令行设置 Keystone 服务端点:​

TypeScript

取消自动换行复制

export OS_USERNAME=admin​

export OS_PASSWORD=password​

export OS_PROJECT_NAME=admin​

export OS_USER_DOMAIN_NAME=Default​

export OS_PROJECT_DOMAIN_NAME=Default​

export OS_AUTH_URL=http://controller:5000/v3​

export OS_IDENTITY_API_VERSION=3​

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​

将password替换为你设置的密码。​

(五)安装镜像服务(Glance)​

  1. 创建数据库​

登录 MySQL 数据库,执行以下 SQL 语句创建 Glance 数据库:​

TypeScript

取消自动换行复制

CREATE DATABASE glance;​

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'password';​

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'password';​

FLUSH PRIVILEGES;​

EXIT;​

将password替换为你设置的密码。​

  1. 创建服务用户和端点​

创建 Glance 服务用户:​

TypeScript

取消自动换行复制

openstack user create --domain default --password - prompt glance​

输入密码后,将 Glance 用户添加到service项目,并赋予admin角色:​

TypeScript

取消自动换行复制

openstack role add --project service --user glance admin​

创建 Glance 服务实体:​

TypeScript

取消自动换行复制

openstack service create --name glance --description "OpenStack Image" image​

创建 Glance 服务端点:​

TypeScript

取消自动换行复制

openstack endpoint create --region RegionOne image public http://controller:9292​

openstack endpoint create --region RegionOne image internal http://controller:9292​

openstack endpoint create --region RegionOne image admin http://controller:9292​

  1. 安装 Glance 软件包​

执行以下命令安装 Glance:​

TypeScript

取消自动换行复制

sudo apt - install glance​

  1. 配置 Glance​

编辑/etc/glance/glance - api.conf和/etc/glance/glance - registry.conf文件,找到并修改以下配置项:​

TypeScript

取消自动换行复制

[database]​

connection = mysql+pymysql://glance:password@localhost/glance​

[keystone_authtoken]​

auth_url = http://controller:5000/v3​

memcached_servers = controller:11211​

auth_type = password​

project_domain_name = Default​

user_domain_name = Default​

project_name = service​

username = glance​

password = password​

[paste_deploy]​

flavor = keystone​

将password替换为你设置的密码。​

  1. 初始化 Glance 数据库​

执行以下命令初始化 Glance 数据库:​

TypeScript

取消自动换行复制

sudo su - s /bin/bash - c "glance-manage db_sync" glance​

  1. 启动 Glance 服务​

执行以下命令启动 Glance 服务:​

TypeScript

取消自动换行复制

sudo systemctl enable glance - api glance - registry​

sudo systemctl start glance - api glance - registry​

(六)安装计算服务(Nova)​

  1. 创建数据库​

登录 MySQL 数据库,执行以下 SQL 语句创建 Nova 数据库:​

TypeScript

取消自动换行复制

CREATE DATABASE nova;​

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'password';​

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'password';​

FLUSH PRIVILEGES;​

EXIT;​

将password替换为你设置的密码。​

  1. 创建服务用户和端点​

创建 Nova 服务用户:​

TypeScript

取消自动换行复制

openstack user create --domain default --password - prompt nova​

输入密码后,将 Nova 用户添加到service项目,并赋予admin角色:​

TypeScript

取消自动换行复制

openstack role add --project service --user nova admin​

创建 Nova 服务实体:​

TypeScript

取消自动换行复制

openstack service create --name nova --description "OpenStack Compute" compute​

创建 Nova 服务端点:​

TypeScript

取消自动换行复制

openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s​

openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s​

openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s​

  1. 安装 Nova 软件包​

执行以下命令安装 Nova:​

TypeScript

取消自动换行复制

sudo apt - install nova - compute​

  1. 配置 Nova​

编辑/etc/nova/nova.conf文件,找到并修改以下配置项:​

TypeScript

取消自动换行复制

[database]​

connection = mysql+pymysql://nova:password@localhost/nova​

[DEFAULT]​

transport_url = rabbit://openstack:password@controller​

my_ip = <你的服务器IP地址>​

use_neutron = True​

firewall_driver = nova.virt.firewall.NoopFirewallDriver​

[api]​

auth_strategy = keystone​

[keystone_authtoken]​

auth_url = http://controller:5000/v3​

memcached_servers = controller:11211​

auth_type = password​

project_domain_name = Default​

user_domain_name = Default​

project_name = service​

username = nova​

password = password​

[vnc]​

enabled = True​

vncserver_listen = 0.0.0.0​

vncserver_proxyclient_address = $my_ip​

novncproxy_base_url = http://controller:6080/vnc_auto.html​

[glance]​

api_servers = http://controller:9292​

[oslo_concurrency]​

lock_path = /var/lib/nova/tmp​

将password替换为你设置的密码,并将<你的服务器IP地址>替换为实际的服务器 IP 地址。​

  1. 初始化 Nova 数据库​

执行以下命令初始化 Nova 数据库:​

TypeScript

取消自动换行复制

sudo su - s /bin/bash - c "nova-manage api_db sync" nova​

sudo su - s /bin/bash - c "nova-manage db sync" nova​

  1. 启动 Nova 服务​

执行以下命令启动 Nova 服务:​

TypeScript

取消自动换行复制

sudo systemctl enable nova - compute​

sudo systemctl start nova - compute​

(七)安装网络服务(Neutron)​

  1. 创建数据库​

登录 MySQL 数据库,执行以下 SQL 语句创建 Neutron 数据库:​

TypeScript

取消自动换行复制

CREATE DATABASE neutron;​

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'password';​

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'password';​

FLUSH PRIVILEGES;​

EXIT;​

将password替换为你设置的密码。​

  1. 创建服务用户和端点​

创建 Neutron 服务用户:​

TypeScript

取消自动换行复制

openstack user create --domain default --password - prompt neutron​

输入密码后,将 Neutron 用户添加到service项目,并赋予admin角色:​

TypeScript

取消自动换行复制

openstack role add --project service --user neutron admin​

创建 Neutron 服务实体:​

TypeScript

取消自动换行复制

openstack service create --name neutron --description "OpenStack Networking" network​

创建 Neutron 服务端点:​

TypeScript

取消自动换行复制

openstack endpoint create --region RegionOne network public http://controller:9696​

openstack endpoint create --region RegionOne network internal http://controller:9696​

openstack endpoint create --region RegionOne network admin http://controller:9696​

  1. 安装 Neutron 软件包​

执行以下命令安装 Neutron:​

TypeScript

取消自动换行复制

sudo apt - install neutron - server neutron - plugin - ml2 neutron - linuxbridge - agent neutron - dhcp - agent neutron - l3 - agent​

  1. 配置 Neutron​

编辑/etc/neutron/neutron.conf文件,找到并修改以下配置项:​

TypeScript

取消自动换行复制

[database]​

connection = mysql+pymysql://neutron:password@localhost/neutron​

[DEFAULT]​

core_plugin = ml2​

service_plugins = router​

transport_url = rabbit://openstack:password@controller​

auth_strategy = keystone​

notify_nova_on_port_status_changes = True​

notify_nova_on_port_data_changes = True​

[keystone_authtoken]​

auth_url = http://controller:5000/v3​

memcached_servers = controller:11211​

auth_type = password​

project_domain_name = Default​

user_domain_name = Default​

project_name = service​

username = neutron​

password = password​

[nova]​

auth_url = http://controller:5000/v3​

auth_type = password​

project_domain_name = Default​

user_domain_name = Default​

region_name = RegionOne​

project_name = service​

username = nova​

password = password​

将password替换为你设置的密码。​

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件,找到并修改以下配置项:​

TypeScript

取消自动换行复制

[ml2]​

type_drivers = flat,vlan,vxlan​

tenant_network_types = vxlan​

mechanism_drivers = linuxbridge,l2population​

extension_drivers = port_security​

[ml2_type_flat]​

flat_networks = provider​

[securitygroup]​

enable_ipset = True​

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件,找到并修改以下配置项:​

TypeScript

取消自动换行复制

[linux_bridge]​

physical_interface_mappings = provider:eth0​

[vxlan]​

enable_vxlan = True​

local_ip = <你的服务器IP地址>​

l2_population = True​

[securitygroup]​

enable_security_group = True​

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver​

将<你的服务器IP地址>替换为实际的服务器 IP 地址。​

编辑/etc/neutron/dhcp_agent.ini文件,找到并修改以下配置项:​

TypeScript

取消自动换行复制

[DEFAULT]​

interface_driver = linuxbridge​

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq​

enable_isolated_metadata = True​

编辑/etc/neutron/l3_agent.ini文件,找到并修改以下配置项:​

TypeScript

取消自动换行复制

[DEFAULT]​

interface_driver = linuxbridge​

  1. 初始化 Neutron 数据库​

执行以下命令初始化 Neutron 数据库:​

TypeScript

取消自动换行复制

sudo</doubaocanvas>​

http://www.xdnf.cn/news/14504.html

相关文章:

  • Oracle 详细解析及与 MySQL 的核心区别
  • AI时代的质量显得更为重要
  • 自动打电话软件设计与实现
  • 支持selenium的chrome driver更新到137.0.7151.119
  • 一站式用AI编程神奇Cursor/Trae(VScode环境)开发运行Scala应用
  • 《Effective Python》第九章 并发与并行——使用 Queue 实现并发重构
  • 【力扣 中等 C】2. 两数相加
  • 机器学习常用评估指标
  • win10/win11 快速隐藏/显示桌面图标
  • 亚矩阵云手机+Whatnot:直播电商的自动化增长引擎
  • Redis 持久化机制详解:RDB、AOF 原理与面试最佳实践(RDB篇)
  • SSL安全证书:数字时代的网络安全基石
  • 如何在 MX Linux 上安装 Blender CAD 软件
  • 学生成绩管理系统
  • 4. 时间序列预测的自回归和自动方法
  • 【MySQL】MySQL 数据库操作与设计
  • 使用 Java + WebSocket 实现简单实时双人协同 pk 答题
  • 【matlab】图片转视频
  • 网络编程TCP与UDP
  • 02 ( chrome 浏览器插件, 立马翻译), 搭建本地 api
  • 在劲牌工厂,探寻一瓶草本酒的科技之旅
  • 充电桩运维管理工具系统的**详细功能列表** - 慧知开源充电桩平台
  • 工业 AI Agent:智能化转型的核心驱动力
  • FPGA基础 -- Verilog语言要素之数组
  • 简说 python
  • Linux -- Ext系列文件系统介绍
  • Eureka、Nacos、Zookeeper 优雅上下线机制
  • 论文笔记:GTG: Generalizable Trajectory Generation Model for Urban Mobility.
  • FairyGUI学习
  • Rust 学习笔记:trait 对象