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

MAAS Anvil - 高可用 MAAS 部署管理工具

本文翻译整理自:https://github.com/canonical/maas-anvil


一、关于 MAAS Anvil

MAAS Anvil 是一个用于管理 charmed (高可用) MAAS 部署的 snap 工具。

注:MAAS Anvil 目前处于封闭测试阶段,正在接近生产稳定性

MAAS 部署组件

MAAS Anvil 是 MAAS 部署策略的一部分,包括:

1、MAAS Charms:MAAS 组件的 Charmed 版本
- MAAS Agent Charm
- MAAS Region Charm
2、MAAS Anvil:使用 MAAS charms 简化 MAAS 部署
3、MAAS Terraform Provider:配置活跃的 MAAS 部署

MAAS Anvil 使用 MAAS charms 简化部署流程。部署完成后,可以使用 MAAS Terraform provider 对活跃的 MAAS 环境进行进一步配置。


相关链接资源

  • github : https://github.com/canonical/maas-anvil
  • 官网:https://maas.io
  • 官方文档:https://maas.io/docs
  • MAAS Agent Charm : https://charmhub.io/maas-agent
  • MAAS Region Charm : https://charmhub.io/maas-region
  • Terraform Provider : https://registry.terraform.io/providers/maas/maas/latest/docs
  • Juju 文档:https://juju.is/docs/juju/charmed-operator

二、文档目录

学习资源工作资源
教程 MAAS Anvil 功能实践入门操作指南 关键操作的分步指南
参考文档 技术规范

三、教程


1、引导 maas-anvil 集群学习基础知识

以下说明假设您有三个运行 Ubuntu 24.04 LTS 的节点 infra1infra2infra3,并且它们的网络配置正确。

此外,说明假设 MAAS Anvil 在所有三个节点上部署所有可用组件(角色):

  • MAAS 区域控制器
  • MAAS 机架控制器(agent)
  • PostgreSQL
  • HAProxy

每个节点的准备步骤

首先需要安装 MAAS Anvil 并设置一些先决条件。这需要在每个节点上完成。您可以在 CLI 接口参考 中了解 maas-anvil prepare-node-script 的具体作用。

ubuntu@infra{1,2,3}:~$ sudo snap install maas-anvil --edge
ubuntu@infra{1,2,3}:~$ maas-anvil prepare-node-script | bash -x

prepare-node-script 会将当前用户添加到 snap_daemon 组。为了使组更改生效,您必须_注销_并_重新登录_。如果文件所属组对您不是主要问题,您也可以运行以下命令立即激活组更改。

ubuntu@infra{1,2,3}:~$ newgrp snap_daemon

引导第一个节点

要初始化集群,您需要在第一个节点上运行引导命令。

ubuntu@infra1:~$ maas-anvil cluster bootstrap \--role database --role region --role agent --role haproxy \--accept-defaults

注:--accept-defaults 标志,顾名思义,接受 MAAS Anvil 的默认配置。最重要的配置是 虚拟 IP、PostgreSQL 最大连接数 和 TLS 终止。如果省略 --accept-defaults 标志,系统会在部署过程中提示您输入配置。如果您想预先指定配置,可以创建一个清单文件并通过 --manifest 标志提供该文件。了解更多关于如何使用清单文件配置 MAAS Anvil 部署的信息。


向 MAAS 集群添加新节点

要向集群添加其他节点,您必须首先在引导集群的初始节点上创建加入令牌。确保在 fqdn 标志中指定要加入节点的完全限定域名(FQDN)。

ubuntu@infra1:~$ maas-anvil cluster add --fqdn infra2、Token for the Node infra2.: eyJuYW1lIjoibWFhcy00Lm1hYXMiLCJzZWNyZXQiOiI3MmE512342abcdEASWWxOWNlYWNkYmJjMWRmMjk4OThkYWFkYzQzMDAzZjk4NmRkZDI2MWRhYWVkZTIxIiwiZmluZ2VycHJpbnQiOiJlODU5ZmY5NjAwMDU4OGFjZmQ5ZDM0NjFhMDk5NmU1YTU3YjhjN2Q2ZjE4M2NjZDRlOTg2NGRkZjQ3NWMwZWM1Iiwiam9pbl9hZGRyZXNzZXMiOlsiMTAuMjAuMC43OjcwMDAiLCIxMC4yMC4wLjg6NzAwMCJdfQ==ubuntu@infra1:~$ maas-anvil cluster add --fqdn infra3、Token for the Node infra3.: eyJuYW1lIjoibWFhcy00Lm1hYXMiLCJzZWNyZXQiOiI3MmE512342abcdEASWWxOWNlYWNkYmJjMWRmMjk4OThkYWFkYzQzMDAzZjk4NmRkZDI2MWRhYWVkZTIxIiwiZmluZ2VycHJpbnQiOiJlODU5ZmY5NjAwMDU4OGFjZmQ5ZDM0NjFhMDk5NmU1YTU3YjhjN2Q2ZjE4M2NjZDRlOTg2NGRkZjQ3NWMwZWM1Iiwiam9pbl9hZGRyZXNzZXMiOlsiMTAuMjAuMC43OjcwMDAiLCIxMC4yMC4wLjg6NzAwMCJdfQ==

将新节点加入 MAAS 集群

现在我们必须使用 cluster join 命令和刚创建的加入令牌在加入节点上加入集群。节点加入集群的角色可以特定于该节点,不必与引导节点的角色匹配。在本例中,我们选择每个节点都有每个组件的配置。

ubuntu@infra2:~$ maas-anvil cluster join \--role database --role region --role agent --role haproxy \--token eyJuYW1lIjoibWFhcy00Lm1hYXMiLCJzZWNyZXQiOiI3MmE512342abcdEASWWxOWNlYWNkYmJjMWRmMjk4OThkYWFkYzQzMDAzZjk4NmRkZDI2MWRhYWVkZTIxIiwiZmluZ2VycHJpbnQiOiJlODU5ZmY5NjAwMDU4OGFjZmQ5ZDM0NjFhMDk5NmU1YTU3YjhjN2Q2ZjE4M2NjZDRlOTg2NGRkZjQ3NWMwZWM1Iiwiam9pbl9hZGRyZXNzZXMiOlsiMTAuMjAuMC43OjcwMDAiLCIxMC4yMC4wLjg6NzAwMCJdfQ==
ubuntu@infra3:~$ maas-anvil cluster join \--role database --role region --role agent --role haproxy \--token eyJuYW1lIjoibWFhcy00Lm1hYXMiLCJzZWNyZXQiOiI3MmE512342abcdEASWWxOWNlYWNkYmJjMWRmMjk4OThkYWFkYzQzMDAzZjk4NmRkZDI2MWRhYWVkZTIxIiwiZmluZ2VycHJpbnQiOiJlODU5ZmY5NjAwMDU4OGFjZmQ5ZDM0NjFhMDk5NmU1YTU3YjhjN2Q2ZjE4M2NjZDRlOTg2NGRkZjQ3NWMwZWM1Iiwiam9pbl9hZGRyZXNzZXMiOlsiMTAuMjAuMC43OjcwMDAiLCIxMC4yMC4wLjg6NzAwMCJdfQ==

确认集群状态

如果一切顺利,MAAS-Anvil 集群现在应该已经运行。您可以使用以下命令检查集群状态。如果您想了解更多关于如何监控正在进行的 MAAS Anvil 部署的信息,可以在 监控正在进行的部署 部分内容。

ubuntu@infra1:~$ maas-anvil cluster list
┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┓
┃ Node   ┃ Status ┃ Region ┃ Agent ┃ Database ┃ HAProxy ┃
┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━┩
│ infra1 │   up   │   x    │   x   │    x     │    x    │
│ infra2 │   up   │   x    │   x   │    x     │    x    │
│ infra3 │   up   │   x    │   x   │    x     │    x    │
└────────┴────────┴────────┴───────┴──────────┴─────────┘

创建 MAAS 管理员用户

要完成部署,您可以使用以下命令创建 MAAS 管理员用户:

ubuntu@infra1:~$ maas-anvil create-admin --username admin --password pass --email admin@maas.io --ssh-import=lp:maasadmin

您现在应该有一个运行中的 MAAS Anvil HA 集群和一个管理员用户 ✨。


四、操作指南


1、引导集群

这是 引导 maas-anvil 集群学习基础知识 教程的简化版本。如果您之前部署过 MAAS Anvil 集群,但需要复习流程,可以参考此操作指南。


准备节点

在每个节点上,您需要运行以下命令为 MAAS Anvil 使用做准备:

ubuntu@infra{1,2,3}:~$ sudo snap install maas-anvil --edge
ubuntu@infra{1,2,3}:~$ maas-anvil prepare-node-script | bash -x

prepare-node-script 会将当前用户添加到 snap_daemon 组。为了使组更改生效,您必须_注销_并_重新登录_。如果文件所属组对您不是主要问题,您也可以运行以下命令立即激活组更改。

ubuntu@infra{1,2,3}:~$ newgrp snap_daemon

引导第一个节点

要初始化集群,您需要在第一个节点上运行引导命令。

ubuntu@infra1:~$ maas-anvil cluster bootstrap \--role database --role region --role agent --role haproxy \--accept-defaults

添加新节点

要向集群添加新节点,请在引导节点上运行以下 cluster add 命令并记下令牌。

ubuntu@infra1:~$ maas-anvil cluster add --fqdn infra2、Token for the Node infra2.: eyJuYW1lIjoibWFhcy00Lm1hYXMiLCJzZWNyZXQiOiI3MmE512342abcdEASWWxOWNlYWNkYmJjMWRmMjk4OThkYWFkYzQzMDAzZjk4NmRkZDI2MWRhYWVkZTIxIiwiZmluZ2VycHJpbnQiOiJlODU5ZmY5NjAwMDU4OGA5ZDM0NjFhMDk5NmU1YTU3YjhjN2Q2ZjE4M2NjZDRlOTg2NGRkZjQ3NWMwZWM1Iiwiam9pbl9hZGRyZXNzZXMiOlsiMTAuMjAuMC43OjcwMDAiLCIxMC4yMC4wLjg6NzAwMCJdfQ==ubuntu@infra1:~$ maas-anvil cluster add --fqdn infra3、Token for the Node infra3.: eyJuYW1lIjoibWFhcy00Lm1hYXMiLCJzZWNyZXQiOiI3MmE512342abcdEASWWxOWNlYWNkYmJjMWRmMjk4OThkYWFkYzQzMDAzZjk4NmRkZDI2MWRhYWVkZTIxIiwiZmluZ2VycHJpbnQiOiJlODU5ZmY5NjAwMDU4OGFjZmQ5ZDM0NjFhMDk5NmU1YTU3YjhjN2Q2ZjE4M2NjZDRlOTg2NGRkZjQ3NWMwZWM1Iiwiam9pbl9hZGRyZXNzZXMiOlsiMTAuMjAuMC43OjcwMDAiLCIxMC4yMC4wLjg6NzAwMCJdfQ==

将新节点加入集群

使用 cluster join 命令、刚创建的加入令牌以及您希望特定节点具有的角色,在加入节点上加入集群。

ubuntu@infra2:~$ maas-anvil cluster join \--role database --role region --role agent --role haproxy \--token eyJuYW1lIjoibWFhcy00Lm1hYXMiLCJzZWNyZXQiOiI3MmE512342abcdEASWWxOWNlYWNkYmJjMWRmMjk4OThkYWFkYzQzMDAzZjk4NmRkZDI2MWRhYWVkZTIxIiwiZmluZ2VycHJpbnQiOiJlODU5ZmY5NjAwMDU4OGFjZmQ5ZDM0NjFhMDk5NmU1YTU3YjhjN2Q2ZjE4M2NjZDRlOTg2NGRkZjQ3NWMwZWM1Iiwiam9pbl9hZGRyZXNzZXMiOlsiMTAuMjAuMC43OjcwMDAiLCIxMC4yMC4wLjg6NzAwMCJdfQ==
ubuntu@infra3:~$ maas-anvil cluster join \--role database --role region --role agent --role haproxy \--token eyJuYW1lIjoibWFhcy00Lm1hYXMiLCJzZWNyZXQiOiI3MmE512342abcdEASWWxOWNlYWNkYmJjMWRmMjk4OThkYWFkYzQzMDAzZjk4NmRkZDI2MWRhYWVkZTIxIiwiZmluZ2VycHJpbnQiOiJlODU5ZmY5NjAwMDU4OGFjZmQ5ZDM0NjFhMDk5NmU1YTU3YjhjN2Q2ZjE4M2NjZDRlOTg2NGRkZjQ3NWMwZWM1Iiwiam9pbl9hZGRyZXNzZXMiOlsiMTAuMjAuMC43OjcwMDAiLCIxMC4yMC4wLjg6NzAwMCJdfQ==

2、登录 Juju 控制器

如果您收到类似以下错误消息:

Please enter password for $node on anvil-controller

这是因为 Juju OAuth macaroons 通常会在 24 小时后过期。如果您需要在 macaroon 过期后与 MAAS Anvil Juju 控制器交互,您需要重新验证会话。您可以使用以下命令重新验证会话:

ubuntu@$node:~$ maas-anvil juju-login

您也可以手动从 MAAS Anvil 获取登录凭据:

ubuntu@$node:~$ cat ~/snap/maas-anvil/current/account.yaml
password: $password
user: $user

然后像往常一样使用 juju login


3、配置您的 MAAS Anvil 部署

在高可用性部署 MAAS 时,您可能需要配置数据库的最大连接数、虚拟 IP、TLS、使用的 charms 版本,甚至是组件的部署方式。MAAS Anvil 允许您配置所有这些内容,本节将解释如何操作。

如果您想确切了解有哪些配置选项可用以及它们有什么效果,请阅读 配置选项 部分。

MAAS Anvil 的配置选项通常分为两类:

  • 部署
  • 软件

在部署类别中,您可以配置部署的一般选项;在软件类别中,您可以选择 MAAS Anvil 中使用的所有 charms 的版本和配置,并定义这些 charms 的部署方式。


--accept-defaults 标志

如果在引导节点和加入节点上设置 --accept-defaults 标志,您将接受 MAAS Anvil 附带的默认配置。对于所有

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

相关文章:

  • 纳米AI搜索体验:MCP工具的实际应用测试,撰写报告 / 爬虫小红书效果惊艳
  • Matplotlib核心课程-2
  • JavaWeb学习打卡-Day7-正向代理、反向代理、Nginx
  • 使用AI-01开发板和开源后端服务搭建整套小智服务系统
  • 在运行 Hadoop 作业时,遇到“No such file or directory”,如何在windows里打包在虚拟机里运行
  • 赎金信(简单)
  • 单一职责原则(SRP)
  • 安妮推广导航系统开心版多款主题网址推广赚钱软件推广变现一键统计免授权源码Annie
  • 写了个脚本将pdf转markdown
  • C/C++工程师使用 DeepSeek
  • [面试]SoC验证工程师面试常见问题(三)
  • 2505C++,wmi客户端示例
  • MySQL:联合查询
  • Linux-07-Shell
  • 大模型在终末期肾脏病风险预测与临床方案制定中的应用研究
  • 如何封装一个线程安全、可复用的 HBase 查询模板
  • Encoder-free无编码器多模态大模型EVEv2模型架构、训练方法浅尝
  • Windows 使用set和setx设置环境变量(skywalk3)
  • 2.LED灯的控制和按键检测
  • 【MySQL】事务管理
  • 区块链+IoT:创新场景落地背后的技术攻坚战
  • Python镜像源配置:
  • 数据结构-线性结构(链表、栈、队列)实现
  • MATLAB图像加密案例
  • 状压 DP 详解
  • 揭开并发编程的面纱:从零开始构建 Java 阻塞队列
  • 【AI提示词】系统分析员
  • Redis怎么避免热点数据问题
  • 软件第三方测试:关键部分、意义、流程及方法全解析?
  • 轻量级在线Excel预览工具