问题描述
该笔记将记录:如何部署 OpenNebula 平台,并使用其来管理虚拟机,以及常见问题的解决方案。
解决方案
参考 Installation and Configuration 文档,以获取集群安装及配置的完整方法。下面是结合我们需求的整理:
第一步、准备工作
在正式开始之前,建议阅读(并实践)以下文档的内容,以对 OpenNebula 具有整体的认识:
1)官方 Overview 文档,我们能够快速了解 OpenNebula 平台的基本概念及术语。
2)官方 Quick Start 文档,我们能够使用 GitHub – OpenNebula/minione 快速部署集群,并进行常见操作。
环境信息
1)操作系统:Ubuntu 21.04
2)软件版本:OpenNebula 6.0.2
第二步、安装 MySQL 服务
1)安装过程,参考 MySQL/on Debian 笔记;
2)进行数据库初始化设置:
# mysql -u root -p Enter password: Welcome to the MySQL monitor. [...] mysql> CREATE USER 'oneadmin' IDENTIFIED BY '<thepassword>'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin'; Query OK, 0 rows affected (0.00 sec) mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED; # vim /etc/one/oned.conf ... DB = [ BACKEND = "mysql", SERVER = "localhost", PORT = 0, USER = "oneadmin", PASSWD = "<thepassword>", DB_NAME = "opennebula", CONNECTIONS = 25, COMPARE_BINARY = "no" ] ...
这里创建 /etc/one/oned.conf 的目的是:在服务部署时,服务会自动启动并初始化数据库,这样就能初始化 MySQL 数据库。否则,默认使用 sqlite 数据库,而数据库迁移会是件很繁琐的事情。
第三步、添加 OpenNebula 仓库
apt-get update apt-get -y install gnupg wget apt-transport-https # Ubuntu 21.04 wget -q -O- https://downloads.opennebula.io/repo/repo.key | apt-key add - echo "deb https://downloads.opennebula.io/repo/6.0/Ubuntu/21.04 stable opennebula" > /etc/apt/sources.list.d/opennebula.list apt-get update
第四步、安装 Web 界面
3)安装应用
# apt-get update # apt-get -y install opennebula opennebula-sunstone opennebula-fireedge \ opennebula-gate opennebula-flow opennebula-provision
可选,安装 Docker Hub Marketplace 依赖:
# 安装 Docker 服务 ... # 添加用户到 Docker 组 usermod -a -G docker oneadmin
可选,安装边缘集群配置组件的依赖:
apt-get -y install python3-pip pip3 install 'cryptography<3.4' pip3 install 'ansible>=2.8.0,<2.10.0' pip3 install 'Jinja2>=2.10.0' curl 'https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip' | zcat >/usr/bin/terraform chmod 0755 /usr/bin/terraform
5)关于数据库
官方建议使用 MySQL/MariaDB 数据库。
6)配置 OpenNebula 服务
查看初始用户名密码
# cat /var/lib/one/.one/one_auth
FireEdge,为 Sunstone 提供附加功能。需要配置 Sunstone 访问 FireEdge 服务(应该是需要在页面中访问吧):
# vim /etc/one/sunstone-server.conf ... :public_fireedge_endpoint: http://one.example.com:2616 ... # systemctl restart opennebula-sunstone.service
OneGate(可选),允许 VM 与 OpenNebula 通讯,对于由 OneFlow 服务器编排的多 VM 服务至关重要。配置方法如下:
# vim /etc/one/onegate-server.conf ... :host: 0.0.0.0 ... # systemctl restart opennebula-gate.service # vim /etc/one/oned.conf ... ONEGATE_ENDPOINT="http://one.example.com:5030" ... # systemctl restart opennebula.service
OneFlow(可选),用于编排服务和多虚拟机部署。我们需要配置 OneFlow 以允许其被远程 API 控制:
# vim /etc/one/oneflow-server.conf ... :host: 0.0.0.0 ... # systemctl restart opennebula-flow.service
7)启动 OpenNebula 服务
按照如下顺序启动服务:
systemctl start opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow systemctl enable opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow
8)验证安装
在主机中执行如下命令,并查看输出:
# oneuser show USER 0 INFORMATION ID : 0 NAME : oneadmin GROUP : oneadmin PASSWORD : 3bc15c8aae3e4124dd409035f32ea2fd6835efc9 AUTH_DRIVER : core ENABLED : Yes USER TEMPLATE TOKEN_PASSWORD="ec21d27e2fe4f9ed08a396cbd47b08b8e0a4ca3c" RESOURCE USAGE & QUOTAS
类似如上输出,表示 oneadmin 能够正常连接 OpenNebula 服务。
访问 Web 界面:
# firefox http://<hostname>:9869/
参考文献
OpenNebula
Docs/Deployment Guide/Node Installation/Overview/Hypervisor Compatibility
GitHub/OpenNebula