目录:
第一节 多节点OpenStack Charms 部署指南0.0.1.dev223–1--OpenStack Charms 部署指南
第二节 多节点OpenStack Charms 部署指南0.0.1.dev223–2-安装MAAS
第三节 多节点OpenStack Charms 部署指南0.0.1.dev223–3-安装Juju
第四节 多节点OpenStack Charms 部署指南0.0.1.dev223–4-安装openstack
第五节 多节点OpenStack Charms 部署指南0.0.1.dev223–5--使bundle安装openstack
第六节 多节点OpenStack Charms 部署指南0.0.1.dev223–6--配置vault和设置数字证书生命周期
第七节 多节点OpenStack Charms 部署指南0.0.1.dev223–7--juju 离线部署bundle
第八节 多节点OpenStack Charms 部署指南0.0.1.dev223–8--配置 OpenStack
附录 t 多节点OpenStack Charms 部署指南0.0.1.dev223–附录T–OpenStack 高可用性
第九节 多节点OpenStack Charms 部署指南0.0.1.dev223–9--网络拓扑
第十节 多节点OpenStack Charms 部署指南0.0.1.dev223–10–OpenStack 高可用基础架构实际
第十一节 多节点OpenStack Charms 部署指南0.0.1.dev223–11–访问Juju仪表板
第十二节 多节点OpenStack Charms 部署指南0.0.1.dev223–12–OpenStack 配置openstack失败后处理
第十三节 多节点OpenStack Charms 部署指南0.0.1.dev223–13–OpenStack配置高可用后无法登陆openstack dashboard
第十四节 多节点OpenStack Charms 部署指南0.0.1.dev223–14–ssh端口转发解决IDC机房国际线路不良问题
第十五节 多节点OpenStack Charms 部署指南0.0.1.dev299–15–OpenStack 实例高可用
第十六节 多节点OpenStack Charms 部署指南0.0.1.dev299–16–OpenStack基础架构高可用The easyrsa resource is missing. .
第十七节 多节点OpenStack Charms 部署指南0.0.1.dev303–17–修改实例数量等quota上限
第十八节 多节点OpenStack Charms 部署指南0.0.1.dev303–18–backup备份
第十九节 多节点OpenStack Charms 部署指南0.0.1.dev303–19–juju log
第二十节 多节点OpenStack Charms 部署指南0.0.1.dev303–20–控制器高可用性
第二十一节 多节点OpenStack Charms 部署指南0.0.1.dev303–21–控制器备份和还原
第二十二节 多节点OpenStack Charms 部署指南0.0.1.dev223–22-- Resource: res_masakari_haproxy not running
第二十三节 多节点OpenStack Charms 部署指南0.0.1.dev223–23-登录openstack-dashboad,SSLError(SSLCertVerificationError
第二十四节 多节点OpenStack Charms 部署指南0.0.1.dev223–24-Resource: res_masakari_f8b6bde_vip not running
第二十五节 多节点OpenStack Charms 部署指南0.0.1.dev223–25–rsyslog 日志服务器构建实际
第二十六节 多节点OpenStack Charms 部署指南0.0.1.dev223–26–跨model 建立关系构建rsyslog 日志服务器构建实际
第二十七节 多节点OpenStack Charms 部署指南0.0.1.dev223–27–Charm Hook
第二十八节 多节点OpenStack Charms 部署指南0.0.1.dev223–28–Command run
第三十节 多节点OpenStack Charms 部署指南0.0.1.–30–参考体系结构—Dell EMC硬件上的Canonical Charmed OpenStack(Ussuri)
第三十一节 多节点OpenStack Charms 部署指南0.0.1.–31–vm hosting-1
第三十二节 多节点OpenStack Charms 部署指南0.0.1.–32–vm hosting-2-VM host networking (snap/2.9/UI)
第三十三节 多节点OpenStack Charms 部署指南0.0.1.–33–vm hosting-3-Adding a VM host (snap/2.9/UI)
第三十四节 多节点OpenStack Charms 部署指南0.0.1.–34–vm hosting-4-VM host存储池和创建和删除vm (snap/2.9/UI)
第三十五节 多节点OpenStack Charms 部署指南0.0.1.–35–Command export-bundle备份opensack并重新部署openstack
第三十六节 多节点openstack charms 部署指南0.0.1-36-graylog实际-1
第三十七节 多节点openstack charms 部署指南0.0.1-37-graylog实际-2
第三十八节 多节点openstack charms 部署指南0.0.1-38-graylog实际-3
第三十九节 多节点openstack charms 部署指南0.0.1-39-graylog-4-filebeat
第四十节 多节点openstack charms 部署指南0.0.1-40-prometheus2
安装 OpenStack
在前面的部分中,我们安装了 Juju 并创建了 Juju 控制器和模型。我们现在要使用 Juju 来安装 OpenStack 本身。有两种方法可供选择:
1 通过单独的charm。这种方法会使您对 Juju 如何工作以及 OpenStack各组件如何组合在一起工作有深刻的理解。如果您从未在 Juju 中安装 OpenStack,请选择此选项。
2 使用charm bundle。这种方法提供了一种自动安装 OpenStack 的方法。如果您熟悉 OpenStack 是如何使用 Juju 构建的,请选择此选项。
当前页面介绍了方法 # 1。方法 # 2请参阅使用bundle部署 OpenStack。
重要事项 无论采用何种安装方式,一旦部署云计算,推荐以下与charm版本和机器系列相关的管理实践: 1
用于管理云端的整套charm服务应在云端作出任何重大改变(例如迁移到新charm服务、升级云端服务、升级机器系列)之前升级到最新的稳定charm版本。详情请参阅charm升级。
2 组成云的 Juju 机器应该运行相同的系列(例如“ bionic”或“ focal”
,但不是两者的混合)。有关详细信息,请参阅系列升级。
尽管这个页面很长,但是只使用三个不同的 Juju 命令: juju deploy
、 juju add-unit
和 juju add-relation
。在继续之前,您可能需要阅读 Juju 文档中的相关章节:
这个页面将展示如何安装一个最小的非高可用 OpenStack 云。高可用主题,可以参考 OpenStack 高可用性。
OpenStack release 发行版
正如指南的概述部分所说,OpenStack Ussuri 将部署在 Ubuntu 20.04 LTS (Focal)云节点之上。为了实现这一点,在每个 OpenStack 应用程序的安装过程中将使用云节点的默认包存档(“ distro”)。请注意,有些应用程序本身并不是 OpenStack 项目的一部分,因此不适用(例外情况下,Ceph 应用程序使用这种方法)
请参阅 OpenStack 升级附录中的 Perform the upgrade,以获得更多关于云归档发行版以及升级 OpenStack 时如何使用它们的详细信息。
重要事项 选择的 OpenStack 发行版可能会影响安装和配置说明。
安装进度
有许多变动部分涉及到一个charm的 OpenStack 安装。在这个过程的大部分时间里,将有一些组件尚未得到满足,这将导致类似错误的消息显示在 juju status
命令的输出中。不要惊慌。事实上,这些都是了解各种软件的相互依赖性的机会。一旦添加和处理了适当的应用程序和关系,诸如丢失关系和阻塞关系之类的消息将消失。
小贴士 监视安装进度的一个方便的方法是让命令
watch -n 5 -c juju status --color
在一个单独的终端中运行。
部署 OpenStack
假设您已经精确地遵循了 Install Juju 页面上的说明,那么现在应该有一个名为“ maas-controller”的 Juju 控制器和一个名为“ openstack”的空 Juju 模型。现在就切换到这个背景:
juju switch maas-controller:openstack
在接下来的部分中,各种 OpenStack 组件将被添加到“ OpenStack”模型中。每个应用程序将从在线 Charm 存储安装,许多将通过 YAML 文件指定配置选项。
注意 您不需要等待 Juju 命令完成后才发出进一步的命令。但是,了解一个命令对云的当前状态的影响是非常有益的。
Ceph OSD
Ceph-osd 应用程序使用 ceph-osd 符号部署到四个节点。支持 osd 的块设备的名称取决于节点上的硬件。节点上所有可能的设备都应该作为 osd-devices 选项的值(空格分隔)。在这里,我们将在每个云节点上使用相同的设备:/dev/sdb。文件 ceph-osd.yaml 包含了配置
vim ceph-osd.yaml
ceph-osd:
osd-devices: /dev/sdb
source: distro
要部署应用程序,我们将使用我们在 Install MAAS 页面上的每个节点上放置的“ compute”标记。
juju deploy -n 4 --config ceph-osd.yaml --constraints tags=compute ceph-osd
如果来自 ceph-osd 单元(如“检测到非原始设备”)的消息出现在 juju 状态的输出中,则需要使用“ ceph-osd”符号附带的操作 zap-disk 和 add-disk。Zap-disk 操作本质上是破坏性的。仅当您想清除磁盘中供 Ceph 使用的所有数据和签名时才使用它。
注意 由于 ceph-osd 部署在四个节点上,并且在这个环境中只有四个节点可用,因此严格来说不需要使用“ compute”标记
Nova计算
Nova-compute 应用程序使用 nova-compute charm 部署到一个节点。然后,我们将把应用程序扩展到另外两台机器。文件 nova-compute.yaml 包含以下配置:
vim nova-compute.yaml
nova-compute:
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
openstack-origin: distro
由于没有更多的空闲 Juju 机(MAAS 节点)可用,因此初始节点必须由计算机定位。这意味着我们在节点上放置了多个服务。我们选择了机器1,2和3:
juju deploy -n 3 --to 1,2,3 --config nova-compute.yaml nova-compute
注意
“nova compute”的charm是设计来支持一个镜像格式类型的每个应用程序在任何给定的时间。当现有实例使用先前的格式时,更改格式(请参阅
charm 选项 libvirt-image-backend)将需要为每个实例手动进行镜像转换。见 bug LP # 1826888。
Swift storage
速存储应用程序以swift storage的charm部署到三个节点(计算机0、2和3)。swift-storage.yaml 包含以下配置:
vim swift-storage.yaml
swift-storage:
block-device: sdc
overwrite: "true"
openstack-origin: distro
此配置指向块设备/dev/sdc。根据可用的硬件进行调整。在生产环境中,避免使用环回设备。
部署到三台机器上:
juju deploy -n 3 --to 0,2,3 --config swift-storage.yaml swift-storage
MySQL InnoDB Cluster 集群
MySQL InnoDB 集群总是需要至少三个数据库单元,它们将被集成在0、1和2机器上:
juju deploy -n 3 --to lxd:0,lxd:1,lxd:2 mysql-innodb-cluster
Vault 保险库
Vault 是管理 TLS 证书所必需的,这些证书将支持云应用程序之间的加密通信。
以这种方式部署它:
juju deploy --to lxd:3 vault
这是第一个与上一节中设置的云数据库联接的应用程序。过程如下:
- 创建一个 mysql 路由器的特定于应用程序的实例(一个从属)
- 在 mysql 路由器实例和数据库之间添加一个关系
- 在应用程序和 mysql 路由器实例之间添加一个关系
步骤2和步骤3的组合将应用程序连接到云数据库。
以下是 Vault 的相应命令:
juju deploy mysql-router vault-mysql-router
juju add-relation vault-mysql-router:db-router mysql-innodb-cluster:db-router
juju add-relation vault-mysql-router:shared-db vault:shared-db
Vault现在需要启动和解封。这种charm还需要获得授权才能执行某些任务。这些步骤都包含在Vault页面中。现在就做。
一旦完成上面的单位部分输出命令charm状态应该看起来类似于这样:
Unit Workload Agent Machine Public address Ports Message
ceph-osd/0* blocked idle 0 10.0.0.206 Missing relation: monitor
ceph-osd/1 blocked idle 1 10.0.0.208 Missing relation: monitor
ceph-osd/2 blocked idle 2 10.0.0.209 Missing relation: monitor
ceph-osd/3 blocked idle 3 10.0.0.213 Missing relation: monitor
mysql-innodb-cluster/0* active idle 0/lxd/0 10.0.0.211 Unit is ready: Mode: R/W
mysql-innodb-cluster/1 active idle 1/lxd/0 10.0.0.212 Unit is ready: Mode: R/O
mysql-innodb-cluster/2 active idle 2/lxd/0 10.0.0.214 Unit is ready: Mode: R/O
nova-compute/0* blocked idle 1 10.0.0.208 Missing relations: image, messaging
nova-compute/1 blocked idle 2 10.0.0.209 Missing relations: image, messaging
nova-compute/2 blocked idle 3 10.0.0.213 Missing relations: messaging, image
swift-storage/0* blocked idle 0 10.0.0.206 Missing relations: proxy
swift-storage/1 blocked idle 2 10.0.0.209 Missing relations: proxy
swift-storage/2 blocked idle 3 10.0.0.213 Missing relations: proxy
vault/0* active idle 3/lxd/0 10.0.0.217 8200/tcp Unit is ready (active: true, mlock: disabled)
vault-mysql-router/0* active idle 10.0.0.217 Unit is ready
Neutron网络
Neutron网络有四种应用:
- neutron-api
- neutron-api-plugin-ovn (subordinate)
- ovn-central
- ovn-chassis (subordinate)
文件 neutron.yaml 包含其中三个所需的配置:
vim neutron.yaml
ovn-chassis:
bridge-interface-mappings: br-ex:eth1
ovn-bridge-mappings: physnet1:br-ex
neutron-api:
neutron-security-groups: true
flat-network-providers: physnet1
openstack-origin: distro
ovn-central:
source: distro
桥接接口映射bridge-interface-mappings设置引用 OVN 底盘Chassis将绑定到的网络接口。在上面的例子中,它是‘ eth1’ ,它应该是一个未使用的接口。在 MAAS 中,这个接口必须具有“未配置”的 IP 模式(见 MAAS 文档中的后委托配置)。所有四个节点都应该具有这个接口,以确保任何节点都能够容纳 OVN 底盘 Chassis。
扁平网络提供商flat-network-providers 设置允许本示例场景中使用的neutron扁平网络提供商,并将其命名为“ physnet1”。当我们在下一页设置公共网络时,将引用扁平网络提供商及其名称。
Ovn-bridge-mappings 设置将数据端口接口映射到平面网络提供者
OVN 的主要应用程序是 OVN-central,它至少需要三个单元。它们将用0、1和2号机器集装:
juju deploy -n 3 --to lxd:0,lxd:1,lxd:2 --config neutron.yaml ovn-central
neutron-api 应用程序将装入1号机器:
juju deploy --to lxd:1 --config neutron.yaml neutron-api
部署下级charm应用程序:
juju deploy neutron-api-plugin-ovn
juju deploy --config neutron.yaml ovn-chassis
添加必要的关系:
juju add-relation neutron-api-plugin-ovn:neutron-plugin neutron-api:neutron-plugin-api-subordinate
juju add-relation neutron-api-plugin-ovn:ovsdb-cms ovn-central:ovsdb-cms
juju add-relation ovn-chassis:ovsdb ovn-central:ovsdb
juju add-relation ovn-chassis:nova-compute nova-compute:neutron-plugin
juju add-relation neutron-api:certificates vault:certificates
juju add-relation neutron-api-plugin-ovn:certificates vault:certificates
juju add-relation ovn-central:certificates vault:certificates
juju add-relation ovn-chassis:certificates vault:certificates
将 neutron-api 加入云数据库:
juju deploy mysql-router neutron-api-mysql-router
juju add-relation neutron-api-mysql-router:db-router mysql-innodb-cluster:db-router
juju add-relation neutron-api-mysql-router:shared-db neutron-api:shared-db
Keystone
关键的应用程序将集装箱机器0。
部署:
juju deploy --to lxd:0 --config openstack-origin=distro keystone`
加入云数据库的 keystone:
juju deploy mysql-router keystone-mysql-router
juju add-relation keystone-mysql-router:db-router mysql-innodb-cluster:db-router
juju add-relation keystone-mysql-router:shared-db keystone:shared-db
此时还可以增加两个关系:
juju add-relation keystone:identity-service neutron-api:identity-service
juju add-relation keystone:certificates vault:certificates
RabbitMQ
Rabbitmq-server 应用程序将以 rabbitmq-server 的charm包装在机器2上:
juju deploy --to lxd:2 rabbitmq-server
此时可以增加两个关系:
juju add-relation rabbitmq-server:amqp neutron-api:amqp
juju add-relation rabbitmq-server:amqp nova-compute:amqp
此时juju status
输出的charm状态应该类似于这样:
Unit Workload Agent Machine Public address Ports Message
ceph-osd/0* blocked idle 0 10.0.0.206 Missing relation: monitor
ceph-osd/1 blocked idle 1 10.0.0.208 Missing relation: monitor
ceph-osd/2 blocked idle 2 10.0.0.209 Missing relation: monitor
ceph-osd/3 blocked idle 3 10.0.0.213 Missing relation: monitor
keystone/0* active idle 0/lxd/2 10.0.0.223 5000/tcp Unit is ready
keystone-mysql-router/0* active idle 10.0.0.223 Unit is ready
mysql-innodb-cluster/0* active idle 0/lxd/0 10.0.0.211 Unit is ready: Mode: R/W
mysql-innodb-cluster/1 active idle 1/lxd/0 10.0.0.212 Unit is ready: Mode: R/O
mysql-innodb-cluster/2 active idle 2/lxd/0 10.0.0.214 Unit is ready: Mode: R/O
neutron-api/0* active idle 1/lxd/2 10.0.0.220 9696/tcp Unit is ready
neutron-api-mysql-router/0* active idle 10.0.0.220 Unit is ready
neutron-api-plugin-ovn/0* active idle 10.0.0.220 Unit is ready
nova-compute/0* blocked idle 1 10.0.0.208 Missing relations: image
ovn-chassis/1 active idle 10.0.0.208 Unit is ready
nova-compute/1 blocked idle 2 10.0.0.209 Missing relations: image
ovn-chassis/0* active idle 10.0.0.209 Unit is ready
nova-compute/2 blocked idle 3 10.0.0.213 Missing relations: image
ovn-chassis/2 active idle 10.0.0.213 Unit is ready
ovn-central/0* active idle 0/lxd/1 10.0.0.218 6641/tcp,6642/tcp Unit is ready (leader: ovnnb_db, ovnsb_db northd: active)
ovn-central/1 active idle 1/lxd/1 10.0.0.221 6641/tcp,6642/tcp Unit is ready
ovn-central/2 active idle 2/lxd/1 10.0.0.219 6641/tcp,6642/tcp Unit is ready
rabbitmq-server/0* active idle 2/lxd/2 10.0.0.222 5672/tcp Unit is ready
swift-storage/0* blocked idle 0 10.0.0.206 Missing relations: proxy
swift-storage/1 blocked idle 2 10.0.0.209 Missing relations: proxy
swift-storage/2 blocked idle 3 10.0.0.213 Missing relations: proxy
vault/0* active idle 3/lxd/0 10.0.0.217 8200/tcp Unit is ready (active: true, mlock: disabled)
vault-mysql-router/0* active idle 10.0.0.217 Unit is ready
Nova cloud controller
Nova-cloud-controller 应用程序,包括 nova-scheduler、 nova-api 和 nova-conductor 服务,将使用 nova-cloud-controller charm 包装在机器0上。文件 nova-cloud-controller.yaml 包含以下配置:
vim controller.yaml
nova-cloud-controller:
network-manager: Neutron
openstack-origin: distro
部署:
juju deploy --to lxd:3 --config nova-cloud-controller.yaml nova-cloud-controller
加入 nova-cloud-controller 到云数据库:
juju deploy mysql-router ncc-mysql-router
juju add-relation ncc-mysql-router:db-router mysql-innodb-cluster:db-router
juju add-relation ncc-mysql-router:shared-db nova-cloud-controller:shared-db
注意 为了保持 juju 状态输出压缩,预期的 nova-cloud-controller-mysql-router
应用程序名称被缩短为 ncc-mysql-router。
此时可以增加另外五种关系:
juju add-relation nova-cloud-controller:identity-service keystone:identity-service
juju add-relation nova-cloud-controller:amqp rabbitmq-server:amqp
juju add-relation nova-cloud-controller:neutron-api neutron-api:neutron-api
juju add-relation nova-cloud-controller:cloud-compute nova-compute:cloud-compute
juju add-relation nova-cloud-controller:certificates vault:certificates
Placement
placement 应用将使用placemet charm集成安装到机器2
部署:
juju deploy --to lxd:3 --config openstack-origin=distro placement
加入云数据库的位置:
juju deploy mysql-router placement-mysql-router
juju add-relation placement-mysql-router:db-router mysql-innodb-cluster:db-router
juju add-relation placement-mysql-router:shared-db placement:shared-db
此时可以增加另外三种关系:
juju add-relation placement:identity-service keystone:identity-service
juju add-relation placement:placement nova-cloud-controller:placement
juju add-relation placement:certificates vault:certificates
OpenStack dashboard 指示板
Openstack-dashboard 应用程序(Horizon)将通过 openstack-dashboard charm集装在计算机1上
部署:
juju deploy --to lxd:1 --config openstack-origin=distro openstack-dashboard
加入 openstack-dashboard 到云数据库:
juju deploy mysql-router dashboard-mysql-router
juju add-relation dashboard-mysql-router:db-router mysql-innodb-cluster:db-router
juju add-relation dashboard-mysql-router:shared-db openstack-dashboard:shared-db
注意 为了保持 juju 状态输出压缩,预期的 openstack-dashboard-mysql-router 应用程序名称被缩短为
dashboard-mysql-router
还需要两个关系:
juju add-relation openstack-dashboard:identity-service keystone:identity-service
juju add-relation openstack-dashboard:certificates vault:certificates
Glance
glance应用将使用glance charm 集成安装在机器2上
部署:
juju deploy --to lxd:3 --config openstack-origin=distro glance
加入云数据库浏览:
juju deploy mysql-router glance-mysql-router
juju add-relation glance-mysql-router:db-router mysql-innodb-cluster:db-router
juju add-relation glance-mysql-router:shared-db glance:shared-db
此时可以增加四种关系:
juju add-relation glance:image-service nova-cloud-controller:image-service
juju add-relation glance:image-service nova-compute:image-service
juju add-relation glance:identity-service keystone:identity-service
juju add-relation glance:certificates vault:certificates
此时juju status命令输出的charn状态应该类似于这样:
Unit Workload Agent Machine Public address Ports Message
ceph-osd/0* blocked idle 0 10.0.0.206 Missing relation: monitor
ceph-osd/1 blocked idle 1 10.0.0.208 Missing relation: monitor
ceph-osd/2 blocked idle 2 10.0.0.209 Missing relation: monitor
ceph-osd/3 blocked idle 3 10.0.0.213 Missing relation: monitor
glance/0* active idle 3/lxd/3 10.0.0.224 9292/tcp Unit is ready
glance-mysql-router/0* active idle 10.0.0.224 Unit is ready
keystone/0* active idle 0/lxd/2 10.0.0.223 5000/tcp Unit is ready
keystone-mysql-router/0* active idle 10.0.0.223 Unit is ready
mysql-innodb-cluster/0* active idle 0/lxd/0 10.0.0.211 Unit is ready: Mode: R/W
mysql-innodb-cluster/1 active idle 1/lxd/0 10.0.0.212 Unit is ready: Mode: R/O
mysql-innodb-cluster/2 active idle 2/lxd/0 10.0.0.214 Unit is ready: Mode: R/O
neutron-api/0* active idle 1/lxd/2 10.0.0.220 9696/tcp Unit is ready
neutron-api-mysql-router/0* active idle 10.0.0.220 Unit is ready
neutron-api-plugin-ovn/0* active idle 10.0.0.220 Unit is ready
nova-cloud-controller/0* active idle 3/lxd/1 10.0.0.216 8774/tcp,8775/tcp Unit is ready
ncc-mysql-router/0* active idle 10.0.0.216 Unit is ready
nova-compute/0* active idle 1 10.0.0.208 Unit is ready
ovn-chassis/1 active idle 10.0.0.208 Unit is ready
nova-compute/1 active idle 2 10.0.0.209 Unit is ready
ovn-chassis/0* active idle 10.0.0.209 Unit is ready
nova-compute/2 active idle 3 10.0.0.213 Unit is ready
ovn-chassis/2 active idle 10.0.0.213 Unit is ready
openstack-dashboard/0* active idle 1/lxd/3 10.0.0.210 80/tcp,443/tcp Unit is ready
dashboard-mysql-router/0* active idle 10.0.0.210 Unit is ready
ovn-central/0* active idle 0/lxd/1 10.0.0.218 6641/tcp,6642/tcp Unit is ready (leader: ovnnb_db, ovnsb_db northd: active)
ovn-central/1 active idle 1/lxd/1 10.0.0.221 6641/tcp,6642/tcp Unit is ready
ovn-central/2 active idle 2/lxd/1 10.0.0.219 6641/tcp,6642/tcp Unit is ready
placement/0* active idle 3/lxd/2 10.0.0.215 8778/tcp Unit is ready
placement-mysql-router/0* active idle 10.0.0.215 Unit is ready
rabbitmq-server/0* active idle 2/lxd/2 10.0.0.222 5672/tcp Unit is ready
swift-storage/0* blocked idle 0 10.0.0.206 Missing relations: proxy
swift-storage/1 blocked idle 2 10.0.0.209 Missing relations: proxy
swift-storage/2 blocked idle 3 10.0.0.213 Missing relations: proxy
vault/0* active idle 3/lxd/0 10.0.0.217 8200/tcp Unit is ready (active: true, mlock: disabled)
vault-mysql-router/0* active idle 10.0.0.217 Unit is ready
Ceph 监视器
Ceph-mon 应用程序将用 ceph-mon charm安装在0、1和2台机器上。
部署:
juju deploy -n 3 --to lxd:0,lxd:1,lxd:2 --config source=distro ceph-mon
此时可以增加三个关系:
juju add-relation ceph-mon:osd ceph-osd:mon
juju add-relation ceph-mon:client nova-compute:ceph
juju add-relation ceph-mon:client glance:ceph
对于上述关系,
Nova-compute: Ceph 关系使 Ceph 成为 Nova 非可引导磁盘映像的存储后端。Nova-compute charm
选项 libvirt-image-backend 必须设置为“ rbd”才能生效。
glance:Ceph 关系使 Ceph 成为 Glance 的存储后端。
Cinder
cinder应用程序将使用cinder charm集成安装在机器1。文件 cinder.yaml 包含的配置:
vim cinder.yaml
cinder:
glance-api-version: 2
block-device: None
openstack-origin: distro
部署:
juju deploy --to lxd:1 --config cinder.yaml cinder
把cinder加入云数据库:
juju deploy mysql-router cinder-mysql-router
juju add-relation cinder-mysql-router:db-router mysql-innodb-cluster:db-router
juju add-relation cinder-mysql-router:shared-db cinder:shared-db
此时可以增加四种关系:
juju add-relation cinder:cinder-volume-service nova-cloud-controller:cinder-volume-service
juju add-relation cinder:identity-service keystone:identity-service
juju add-relation cinder:amqp rabbitmq-server:amqp
juju add-relation cinder:image-service glance:image-service
上面的glance:image-service关系将使Cinder能够使用Glance API.(例如,使Cinder能够执行Glance图片的卷快照)
Like Glance, Cinder will use Ceph as its storage backend (hence block-device: None in the configuration file). This will be implemented via the cinder-ceph subordinate charm:
与 Glance 一样,Cinder 将使用 Ceph 作为其存储后端(因此配置文件中的 block-device: None)。这将通过cinder-ceph的附属charm来实现:
juju deploy cinder-ceph
需要增加四个关系:
juju add-relation cinder-ceph:storage-backend cinder:storage-backend
juju add-relation cinder-ceph:ceph ceph-mon:client
juju add-relation cinder-ceph:ceph-access nova-compute:ceph-access
juju add-relation cinder:certificates vault:certificates
Swift proxy
Swift-proxy 应用程序将以 swift-proxy charm 包装在3号计算机上:
vim swift-proxy.yaml
swift-proxy:
zone-assignment: auto
swift-hash: "<uuid>"
Swift proxy需要提供一个唯一标识符/代理(UUID)。使用 uuid -v 4命令生成一个(可能需要首先安装 uuid deb 包)并将其插入文件。
部署:
juju deploy --to lxd:3 --config swift-proxy.yaml swift-proxy
我们需要两种关系:
juju add-relation swift-proxy:swift-storage swift-storage:swift-storage
juju add-relation swift-proxy:identity-service keystone:identity-service
NTP
最后一个组件是 NTP 客户机,用于同步每个云节点上的时间。这是通过 ntp 附属charm
完成的:
juju deploy ntp
下面的关系将在每个 ceph-osd 单元旁边添加一个 ntp 单元,从而在四个云节点上各添加一个:
juju add-relation ceph-osd:juju-info ntp:juju-info
最终结果和仪表盘访问
一旦所有的应用都部署完毕,并且加入了它们之间的关系,我们就需要等待juju
status的输出。最终结果应该没有任何类似错误的消息。这里给出了成功的云部署的示例输出(包括关系)。
OpenStack 部署中的一个里程碑是第一次登录 Horizon 仪表板。您将需要其 IP 地址和管理员密码。
以这种方式取得地址:
juju status --format=yaml openstack-dashboard | grep public-address | awk '{print $2}' | head -1
密码是从 Keystone 查询的:
juju run --unit keystone/0 leader-get admin_passwd
在这个例子中,地址是‘10.0.0.210’ ,密码是‘ kohy6shoh3diWav5’。
然后,仪表板的 URL 变成:
http://10.0.0.210/horizon
这些证书是:
Domain: admin_domain
User Name:admin
Password: kohy6shoh3diWav5 6shoh3diwav5
一旦登录,你应该会看到这样的东西:
使能进入控制台:
juju config nova-cloud-controller console-access-protocol=novnc
下一步
您已经成功地使用 Juju 和 MAAS 部署了 OpenStack。下一步是为用户呈现云功能。这将涉及到建立网络、图像和用户环境。现在进入配置 OpenStack。