openstack基础

openstack基础

文章目录

openstack介绍

OpenStack 是一个开源的云计算管理平台,由多个核心组件协同工作,实现计算、存储、网络、身份认证、镜像管理等功能。

重要组件介绍

  • horizon 仪表盘

    • Web 图形界面组件,提供可视化的操作入口,是用户和管理员管理 OpenStack 资源的主要界面。
    • 统一操作入口 :集成所有核心服务的功能,无需记忆命令行即可管理虚拟机、网络、存储等资源。多角色支持 :区分普通用户和管理员权限,管理员可进行全局配置,普通用户管理自己的资源。可视化监控:展示资源使用情况、节点状态、告警信息等。
    • 配置文件 :主配置文件 /etc/openstack-dashboard/local_settings.py,配置 Keystone 认证地址、界面主题、权限策略等。
    • 服务管理 :Horizon 通常部署在 Apache 或 Nginx 上,通过 systemctl restart httpd 重启服务。
    • 界面操作:直接通过浏览器访问 Horizon 地址,使用 Keystone 账号登录后进行资源管理。
  • heat 编排服务

    • 编排服务组件,通过模板(Template)自动化部署和管理 OpenStack 资源栈(Stack)。
    • 资源编排:通过模板一次性创建多个关联资源,如虚拟机、网络、卷、安全组等。
    • 命令行 :使用 openstack stack 系列命令,如 openstack stack create -t template.yamlopenstack stack list配置文件 :主配置文件 /etc/heat/heat.conf,配置模板验证、资源类型等。
  • nova 计算

    • 核心计算组件,负责虚拟机实例的全生命周期管理,是实现 IaaS 核心功能的组件。
    • 资源调度 :通过调度器(Scheduler)将实例部署到合适的计算节点(Compute Node),虚拟化层适配:支持 KVM、QEMU、VMware、Xen 等多种虚拟化技术。
    • 命令行 :使用 openstack server 系列命令,如 openstack server createopenstack server list,主配置文件 /etc/nova/nova.conf,配置虚拟化驱动、调度策略、数据库连接等。
  • swift 对象存储

    • 分布式对象存储组件,用于存储非结构化数据(如图片、视频、日志文件),具有高可用、高扩展性的特点。
    • 对象存储 :以容器(Container)- 对象(Object)的层级存储数据,支持海量数据存储。高可用设计:数据多副本存储,节点故障时自动切换,保证数据不丢失。
    • 命令行 :使用 openstack object 系列命令,如 openstack container createopenstack object upload配置文件 :主配置文件 /etc/swift/swift.conf,配置副本数、存储策略、环(Ring)等核心参数。
  • cinder 块存储

    • 块存储服务组件 ,为虚拟机提供持久化的块存储设备(类似云硬盘)。快照与备份 :为卷创建快照,支持基于快照恢复数据,或备份到 Swift。与 Nova 协同:将卷挂载到虚拟机实例,实现数据持久化(虚拟机删除后卷数据不丢失)。
    • 命令行 :使用 openstack volume 系列命令,如 openstack volume createopenstack volume snapshot create配置文件 :主配置文件 /etc/cinder/cinder.conf,配置存储后端、驱动类型等。
  • neutron 网络

    • 网络服务组件,提供灵活的软件定义网络(SDN)功能,为实例构建虚拟网络环境。
    • 三层网络功能 :实现子网内通信、跨子网路由、NAT 转发(如浮动 IP)。网络服务扩展:支持防火墙(FWaaS)、负载均衡(LBaaS)、VPN 等高级功能。
    • 命令行 :使用 openstack networkopenstack subnetopenstack router 等命令。配置文件 :主配置文件 /etc/neutron/neutron.conf,配置网络插件、L2/L3 代理等。
  • keystone 身份认证

    • 核心身份认证与授权组件,基于角色(Role)的访问控制(RBAC),决定用户能操作哪些资源,生成和验证访问令牌(Token),用户通过 Token 访问其他服务,无需重复认证。
    • 使用 openstack 客户端命令,如 openstack user createopenstack role add,主配置文件 /etc/keystone/keystone.conf,配置认证驱动、令牌过期时间等。
  • glance 镜像管理

    • 虚拟机镜像管理组件,提供镜像的创建、查询、存储和删除功能。
    • 支持多种后端存储,如本地文件系统、Swift、Ceph 等,支持多种镜像格式 :如 QCOW2、RAW、VMDK 等主流虚拟机镜像格式,镜像元数据管理:为镜像添加属性(如操作系统类型、架构),方便用户筛选。
    • 命令行 :使用 openstack image 系列命令,如 openstack image createopenstack image list,主配置文件 /etc/glance/glance-api.conf,配置存储后端、镜像格式限制等。
  • ceilometer 计量监控(不讨论)

  • ironic 裸金属(不讨论)

openstack安装

bash 复制代码
[root@controller ~ 14:00:56]# yum install -y openstack-packstack

[root@controller ~ 14:01:27]# packstack --gen-answer-file=answers.txt
Packstack changed given value  to required value /root/.ssh/id_rsa.pub
Additional information:
 * Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS plugin. Geneve will be used as the encapsulation method for tenant networks
[root@controller ~ 14:01:40]# sed -i '/^CONFIG_COMPUTE_HOSTS=/cCONFIG_COMPUTE_HOSTS=192.168.108.10,192.168.108.11' answers.txt
[root@controller ~ 14:01:52]# sed -i '/^CONFIG_PROVISION_DEMO=/cCONFIG_PROVISION_DEMO=n' answers.txt
[root@controller ~ 14:01:56]# sed -i '/^CONFIG_HEAT_INSTALL=/cCONFIG_HEAT_INSTALL=y' answers.txt
[root@controller ~ 14:02:04]# sed -i '/^CONFIG_NEUTRON_OVN_BRIDGE_IFACES=/cCONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:ens160' answers.txt
[root@controller ~ 14:02:12]# sed -i.bak -r 's/(.+_PW)=[0-9a-z]+/\1=123/g' answers.txt
[root@controller ~ 14:02:21]# systemctl stop NetworkManager; systemctl disable NetworkManager; systemctl mask NetworkManager
Removed /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
Created symlink /etc/systemd/system/NetworkManager.service → /dev/null.
[root@controller ~ 14:02:41]# packstack --answer-file=answers.txt

[root@controller ~ 14:25:26]# systemctl start network
[root@controller ~ 14:26:53]# systemctl enable network
network.service is not a native service, redirecting to systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable network
[root@controller ~ 14:26:58]# openstack complete >> /etc/bash_completion.d/complete
The 'openstack bgp speaker show dragents' CLI is deprecated and will be removed in the future. Use 'openstack bgp dragent list' CLI instead.
[root@controller ~ 14:27:22]# init 0

#
[root@compute ~ 14:01:01]# systemctl stop NetworkManager; systemctl disable NetworkManager; systemctl mask NetworkManager
Removed /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
Created symlink /etc/systemd/system/NetworkManager.service → /dev/null.
[root@compute ~ 14:02:43]# systemctl start network
[root@compute ~ 14:27:03]# systemctl enable network
network.service is not a native service, redirecting to systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable network
[root@compute ~ 14:27:09]# init 0

相关基础命令

bash 复制代码
[root@controller ~ 15:39:27]# ls
 anaconda-ks.cfg   answers.txt   answers.txt.bak  'gpgcheck=0'   keystonerc_admin
[root@controller ~ 15:40:37]# source keystonerc_admin 
[root@controller ~(keystone_admin)]# opens
openssl                         openstack-3                     openstack-keystone-sample-data
openstack                       openstack-inventory             
[root@controller ~(keystone_admin)]# opens
openssl                         openstack-3                     openstack-keystone-sample-data
openstack                       openstack-inventory             
[root@controller ~(keystone_admin)]# openstack project list 
+----------------------------------+----------+
| ID                               | Name     |
+----------------------------------+----------+
| bcae23b5930d472dae180dc47c5f2c6a | admin    |
| f5cff4b9a08b496ea5f830bcefa3c30b | services |
+----------------------------------+----------+
[root@controller ~(keystone_admin)]# cp keystonerc_admin keystonerc_user1
[root@controller ~(keystone_admin)]# vim keystonerc_user1
[root@controller ~(keystone_admin)]# source keystonerc_user1 
[root@controller ~(keystone_user1)]# openstack project list 
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| bcae23b5930d472dae180dc47c5f2c6a | admin |
+----------------------------------+-------+
[root@controller ~(keystone_user1)]# source keystonerc_admin 
[root@controller ~(keystone_admin)]# openstack domain list 
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| default                          | Default | True    | The default domain |
| e44a414a6f5a4c94ac72ca74c8c394cc | heat    | True    |                    |
+----------------------------------+---------+---------+--------------------+
[root@controller ~(keystone_admin)]# openstack domain create domain-test
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| enabled     | True                             |
| id          | d8606570059a4333ad3d986c1f8d759a |
| name        | domain-test                      |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+
[root@controller ~(keystone_admin)]# openstack domain set --disable domain-test
[root@controller ~(keystone_admin)]# openstack domain delete domain-test
[root@controller ~(keystone_admin)]# openstack domain list 
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| default                          | Default | True    | The default domain |
| e44a414a6f5a4c94ac72ca74c8c394cc | heat    | True    |                    |
+----------------------------------+---------+---------+--------------------+
[root@controller ~(keystone_admin)]# cd /etc/openstack-dashboard/
[root@controller openstack-dashboard(keystone_admin)]# ls
cinder_policy.json  keystone_policy.json  local_settings.d     nova_policy.d
glance_policy.json  local_settings        neutron_policy.json  nova_policy.json
[root@controller openstack-dashboard(keystone_admin)]# vim local_settings
[root@controller openstack-dashboard(keystone_admin)]# systemctl restart httpd
[root@controller openstack-dashboard(keystone_admin)]# openstack user list
+----------------------------------+------------+
| ID                               | Name       |
+----------------------------------+------------+
| 23fc6e663dd04efbb2244f0208b0af5a | admin      |
| 62de6d30da8b405eb9c43692687db2ff | heat_admin |
| 07e133167c64442e90c8ffb9aa26aabf | glance     |
| 459a35e1fda74edc894aae2fbdf011d0 | cinder     |
| c694fb6ef44343ac8df788e7b51e247c | nova       |
| 06a04ccf40744199901938c27fff5cac | placement  |
| d95cf9dd81dd4bba848db9345e382d2f | neutron    |
| 1222e413361a4b16bc14cd0d5ca67547 | swift      |
| 6073c6b45a5046f8b0b24d8aad87140f | heat       |
| 283df5db4cf0490fa3cf2ea5a6a2bfac | heat-cfn   |
| d17bb468773749c08e71ce8f02c68bc6 | gnocchi    |
| 506231d1a75d4ec697f9e37924e41346 | ceilometer |
| 36c6698b2006422d899a8c6ebca9544e | aodh       |
| f8b8eaefb58347c7b634f43d40ea9394 | user1      |
+----------------------------------+------------+
[root@controller openstack-dashboard(keystone_admin)]# openstack user create --password 123 user2
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aff97795f3204f0284bbfd3b7af1d92c |
| name                | user2                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller openstack-dashboard(keystone_admin)]# openstack user list
+----------------------------------+------------+
| ID                               | Name       |
+----------------------------------+------------+
| 23fc6e663dd04efbb2244f0208b0af5a | admin      |
| 62de6d30da8b405eb9c43692687db2ff | heat_admin |
| 07e133167c64442e90c8ffb9aa26aabf | glance     |
| 459a35e1fda74edc894aae2fbdf011d0 | cinder     |
| c694fb6ef44343ac8df788e7b51e247c | nova       |
| 06a04ccf40744199901938c27fff5cac | placement  |
| d95cf9dd81dd4bba848db9345e382d2f | neutron    |
| 1222e413361a4b16bc14cd0d5ca67547 | swift      |
| 6073c6b45a5046f8b0b24d8aad87140f | heat       |
| 283df5db4cf0490fa3cf2ea5a6a2bfac | heat-cfn   |
| d17bb468773749c08e71ce8f02c68bc6 | gnocchi    |
| 506231d1a75d4ec697f9e37924e41346 | ceilometer |
| 36c6698b2006422d899a8c6ebca9544e | aodh       |
| f8b8eaefb58347c7b634f43d40ea9394 | user1      |
| aff97795f3204f0284bbfd3b7af1d92c | user2      |
+----------------------------------+------------+
[root@controller openstack-dashboard(keystone_admin)]# openstack user show user2
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aff97795f3204f0284bbfd3b7af1d92c |
| name                | user2                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller openstack-dashboard(keystone_admin)]# openstack group create group1
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| id          | d80b6ef40c554713a049eaef5a392f5b |
| name        | group1                           |
+-------------+----------------------------------+
[root@controller openstack-dashboard(keystone_admin)]# openstack group list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| d80b6ef40c554713a049eaef5a392f5b | group1 |
+----------------------------------+--------+
[root@controller openstack-dashboard(keystone_admin)]# openstack group show group1
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| id          | d80b6ef40c554713a049eaef5a392f5b |
| name        | group1                           |
+-------------+----------------------------------+
[root@controller openstack-dashboard(keystone_admin)]# openstack group add user group1 user2
[root@controller openstack-dashboard(keystone_admin)]# openstack group contains user group1 user2
user2 in group group1

上传镜像不可用解决方案

bash 复制代码
[root@controller ~(keystone_admin)]# openstack image list 
+--------------------------------------+---------+--------+
| ID                                   | Name    | Status |
+--------------------------------------+---------+--------+
| 85c53e6b-689e-4e0e-a27a-5c8f8863f226 | Img_web | active |
+--------------------------------------+---------+--------+

[root@controller ~ 09:38:55]# source keystonerc_admin 
[root@controller ~(keystone_admin)]# openstack image set --property architecture=x86_64 85c53e6b-689e-4e0e-a27a-5c8f8863f226

cli综合实验

bash 复制代码
#创建实例类型/规格
[root@controller ~]# source keystonerc_admin
[root@controller ~(keystone_admin)]# openstack flavor create --help

[root@controller ~(keystone_admin)]# openstack flavor create --vcpus 1 --ram 1000 
--disk 1 m1.1u.1g

#上传镜像

[root@controller ~(keystone_admin)]# openstack image create --file /root/cirros0.5.2-x86_64-disk.img
 --disk-format qcow2 --public cirros-0.5.2

#创建外部网络
[root@controller ~(keystone_admin)]# openstack network create --project-domain 
admin --provider-network-type flat --provider-physical-network extnet --external 
waiwang
[root@controller ~(keystone_admin)]# openstack subnet create --subnet-range 
192.168.108.0/24 --gateway 192.168.108.2 --allocation-pool 
start=192.168.108.100,end=192.168.108.200 --network waiwang waiwang_subnet

#创建内网
[root@controller ~(keystone_admin)]# openstack network create --project-domain 
admin neiwang1
[root@controller ~(keystone_admin)]# openstack subnet create --subnet-range 
172.16.0.0/24 --gateway 172.16.0.1 --allocation-pool 
start=172.16.0.100,end=172.16.0.200 --dns-nameserver 8.8.8.8 --network neiwang1 
neiwang_subnet1

#创建路由
[root@controller ~(keystone_admin)]# openstack router create router1
[root@controller ~(keystone_admin)]# openstack router set --external-gateway 
waiwang router1
[root@controller ~(keystone_admin)]# openstack router add subnet router1 
neiwang_subnet1

#此时观察web界面网络拓扑出现路由器

#创建实例
[root@controller ~(keystone_admin)]# openstack server create --image cirros-0.5.2 
--flavor m1.1u.1g --network neiwang1 instance1

#查看实例
[root@controller ~(keystone_admin)]# openstack server list

[root@controller ~(keystone_admin)]# openstack server show instance1

#web界面instance1控制台测试外网访问成功即可

由器

#创建实例

root@controller \~(keystone_admin)\]# openstack server create --image cirros-0.5.2 --flavor m1.1u.1g --network neiwang1 instance1 #查看实例 \[root@controller \~(keystone_admin)\]# openstack server list \[root@controller \~(keystone_admin)\]# openstack server show instance1 #web界面instance1控制台测试外网访问成功即可 ``` ```

相关推荐
赵文宇(温玉)1 天前
Docker发展时间线(2008~2025)
运维·docker·容器
代码AC不AC1 天前
【Linux】进程状态
linux·进程·进程状态
wdfk_prog1 天前
[Linux]学习笔记系列 -- [fs]read_write
linux·笔记·学习
看见繁华1 天前
Linux 相关
linux·运维·服务器
源图客1 天前
CentOS系统安装Python3.12.10
linux·运维·centos
阿蔹1 天前
泰和昌商城接口自动化项目框架介绍
运维·自动化
立夏陆之昂1 天前
Ubuntu下安装easyconnect
linux·ubuntu
运维之美@1 天前
linux主机ping不通问题排查
linux·运维·服务器
MyCollege19991 天前
以UEFI模式从U盘安装centos遇到空间不足
linux·运维·centos