openNebula集群搭建
OpenNebula概述
OpenNebula是专门为云计算打造的开源系统,用户可以使用Xen、KVM、VMware等虚拟化软件一起打造企业云。利用OpenNebula可以轻松构建私有云、混合云、公开云。
OpenNebula提供丰富的接口和许多资源管理、预配置目录,可以快速、安全地构建富有弹性的云平台。
OpenNebula的工作机制相对比较简单,传输方式为SSH将虚拟化管理命令传输至各节点,这样做的好处是无需安装额外的服务或软件,降低了软件的复杂性。
参考链接:https://docs.opennebula.io/6.1/installation_and_configuration/frontend_installation/opennebula_repository_configuration.html
环境介绍及部署前准备
| 主控端部署: |
| 这里直接用hosts文件做DNS解析 |
| [root@node4 ~] |
| 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 |
| ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 |
| 172.30.1.24 cloud |
| 172.30.1.25 node1 |
| 172.30.1.26 node2 |
| 172.30.1.27 node3 |
| 172.30.1.28 node4 |
| |
| 将所有主机上hosts文件进行替换: |
| |
| [root@cloud ~] |
| [root@cloud ~] |
| |
| |
| 关闭SELINUX |
| SELINUX=disabled |
| |
| 在每台主机上关闭相关安全策略: |
| |
| [root@cloud ~] |
| [root@cloud ~] |
| [root@cloud ~] |
| |
| 配置epel源地和opennebula源:(每台主机都要添加) |
| centos7 |
| cat << "EOT" > /etc/yum.repos.d/opennebula.repo |
| [opennebula] |
| name=opennebula |
| baseurl=https://downloads.opennebula.org/repo/5.10/CentOS/7/$basearch |
| enabled=1 |
| gpgkey=https://downloads.opennebula.org/repo/repo.key |
| gpgcheck=1 |
| repo_gpgcheck=1 |
| EOT |
| |
| [root@node4 yum.repos.d] |
| [opennebula] |
| name=OpenNebula Community Edition |
| baseurl=https://downloads.opennebula.io/repo/6.0/CentOS/8/$basearch |
| enabled=1 |
| gpgkey=https://downloads.opennebula.io/repo/repo.key |
| gpgcheck=1 |
| repo_gpgcheck=1 |
| [root@node4 yum.repos.d] |
| /etc/yum.repos.d |
| [root@node4 yum.repos.d] |
| |
| 安装EPEL源: |
| [root@cloud ~] |
| |
| 安装OpenNebula主控依赖: |
| [root@cloud ~] |
| |
| 安装OpenNebula主控额外依赖和主程序: |
| [root@cloud ~] |
| |
| 根据自己系统选择,我是centos所以选1 |

| 修改默认的oneadmin密码(这个账号密码用于登录OpenNebula的控制面板): |
| [root@opennebula ~] |
1. 安装步骤
1.关闭防火墙
| 1、关闭防火墙 |
| 关闭SELINUX |
| SELINUX=disabled |
| 在每台主机上关闭相关安全策略: |
| [root@cloud ~] |
| [root@cloud ~] |
| [root@cloud ~] |
2.配置epel源地和opennebula源
| centos7 |
| cat << "EOT" > /etc/yum.repos.d/opennebula.repo |
| [opennebula] |
| name=opennebula |
| baseurl=https://downloads.opennebula.org/repo/5.10/CentOS/7/$basearch |
| enabled=1 |
| gpgkey=https://downloads.opennebula.org/repo/repo.key |
| gpgcheck=1 |
| repo_gpgcheck=1 |
| EOT |
| |
| centos8 |
| cat << "EOT" > /etc/yum.repos.d/opennebula.repo |
| [opennebula] |
| name=opennebula |
| baseurl=https://downloads.opennebula.org/repo/5.10/CentOS/8/$basearch |
| enabled=1 |
| gpgkey=https://downloads.opennebula.org/repo/repo.key |
| gpgcheck=1 |
| repo_gpgcheck=1 |
| EOT |
3.安装软件
| yum install epel-release |
| 在 RHEL 8 上,您可以通过运行以下命令启用 EPEL: |
| rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm |
| |
| 安装相关主控相关依赖包Install OpenNebula |
| yum install opennebula-server opennebula-sunstone opennebula-ruby opennebula-gate opennebula-flow -y |
| |
| CentOS/RHEL 软件包说明 |
| OpenNebula 前端和虚拟化主机的软件包如下: |
| opennebula :命令行界面。 |
| opennebula-server :主OpenNebula守护进程、调度程序等。 |
| opennebula-Sunstone : Sunstone (GUI)和 EC2 API 。 |
| opennebula-gate : OneGate 服务器,支持虚拟机和OpenNebula之间的通信。 |
| opennebula-flow : OneFlow 管理服务和弹性。 |
| opennebula-provision : OneProvision 在远程裸机云提供商上部署新集群。 |
| opennebula-node-kvm :安装oneadmin user、libvirt和kvm的元包。 |
| opennebula-common :OpenNebula软件包的通用文件。 |
| opennebula-rubygems :依赖于所有必需的 Ruby 宝石的元包。 |
| opennebula-rubygem-$NAME :包含红宝石的包装 $NAME. |
| opennebula-debuginfo :包含调试信息的包。 |
| opennebula-ruby :Ruby Bindings。 |
| opennebula-java :Java Bindings。 |
| python-pyone :Python Bindings。 |
| python3-pyone :Python3 Bindings。 |
| |
| |
| 注意:配置文件位于 /etc/one 和 /var/lib/one/remotes/etc. |
4、Ruby 运行环境安装(V5.10版本之后可选)
| 从 OpenNebula 5.10 开始,此步骤是 可选的 ,所有必需的 Ruby 宝石都作为一组 opennebula-rubygem-$NAME opennebula-rubygem-$NAME 包和 opennebula-rubygems 元包提供。Ruby gem 安装到专用目录中 /usr/share/one/gems-dist/,但OpenNebula通过(符号链接)位置使用它们 /usr/share/one/gems/ 这指向 gems-dist/ 目录。当 gems/ 目录(默认)存在,OpenNebula 专门 通过从搜索路径中删除任何其他系统 Ruby gems 位置来 |
| |
| 查看: |
| ls -lad /usr/share/one/gems* |
| lrwxrwxrwx 1 root root 9 Aug 13 11:41 /usr/share/one/gems -> gems-dist |
| drwxr-xr-x 9 root root 4096 Aug 13 11:41 /usr/share/one/gems-dist |
| |
| 如果要使用系统范围的 Ruby gem 而不是打包的 Ruby gem,请删除符号链接 /usr/share/one/gems/ 并使用 install_gems 脚本如下所述。被移除的 /usr/share/one/gems/ 符号链接 不会在下一次OpenNebula升级时再次创建 。OpenNebula 附带的 Ruby gem 无法卸载,但可以通过删除 /usr/share/one/gems/ 符号链接。 |
| |
| 如果自定义驱动程序或钩子需要额外的 Ruby gem,则必须将它们安装到引入的专用目录中。例如,在 中设置 gem 名称 $GEM_NAME 并在特权用户根目录下运行: |
| export GEM_PATH=/usr/share/one/gems/ |
| export GEM_HOME=/usr/share/one/gems/ |
| gem install --no-document --conservative $GEM_NAME |
| |
| |
| 一些OpenNebula组件需要Ruby库。OpenNebula提供了一个脚本,用于安装所需的gem以及所需的一些开发库包。 |
| |
| 作为根用户执行: |
| 自动修复: |
| test -L /usr/share/one/gems && unlink /usr/share/one/gems |
| /usr/share/one/install_gems |
| |
| 手动修复: |
| sqlite3 development library |
| mysql client development library |
| curl development library |
| libxml2 and libxslt development libraries |
| ruby development library |
| gcc and g++ |
| make |
| 以上安装包 |
5、mysql数据库配置
| 1、创建用户 |
| GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin' IDENTIFIED BY '<thepassword>'; |
| |
| 2、配置事务隔离级别 |
| SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED; |
| |
| 3、配置oned.configuration |
| |
| DB = [ backend = "mysql", |
| server = "localhost", |
| port = 0, |
| user = "oneadmin", |
| passwd = "<thepassword>", |
| db_name = "opennebula" ] |
| 4、定期清理索引 |
| alter table vm_pool drop index ftidx; |
| alter table vm_pool add fulltext index ftidx (search_token); |
| 5、虚拟机自定义配置 |
6、启动OpenNebula
| 1、使用 oneadmin 用户 |
| su oneadmin |
| 2、修改默认密码 |
| echo "oneadmin:mypassword" > ~/.one/one_auth |
| 3、启动 |
| systemctl start opennebula |
| systemctl start opennebula-sunstone |
| 4、出错验证Ruby环境是否有问题 |
7、验证安装
| 1、命令: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 |
| 2、网页 |
| http://<frontend_address>:9869 |
| 3、错误日志 |
| /var/log/one/sunstone.log |
| /var/log/one/sunstone.error |
| 4、程序说明 |
| Path Description |
| /etc/one/ Configuration Files |
| /var/log/one/ Log files, notably: oned.log, sched.log, sunstone.log and <vmid>.log |
| /var/lib/one/ oneadmin home directory |
| /var/lib/one/datastores/<dsid>/ Storage for the datastores |
| /var/lib/one/vms/<vmid>/ Action files for VMs (deployment file, transfer manager scripts, etc…) |
| /var/lib/one/.one/one_auth oneadmin credentials |
| /var/lib/one/remotes/ Probes and scripts that will be synced to the Hosts |
| /var/lib/one/remotes/hooks/ Hook scripts |
| /var/lib/one/remotes/vmm/ Virtual Machine Manager Driver scripts |
| /var/lib/one/remotes/auth/ Authentication Driver scripts |
| /var/lib/one/remotes/im/ Information Manager (monitoring) Driver scripts |
| /var/lib/one/remotes/market/ MarketPlace Driver scripts |
| /var/lib/one/remotes/datastore/ Datastore Driver scripts |
| /var/lib/one/remotes/vnm/ Networking Driver scripts |
| /var/lib/one/remotes/tm/ Transfer Manager Driver scripts |
| 5、端口说明 |
| Port Description |
| 9869 Sunstone server. |
| 29876 VNC proxy port, used for translating and redirecting VNC connections to the hypervisors. |
| 2633 OpenNebula daemon, main XML-RPC API endpoint. |
| 2474 OneFlow server. This port only needs to be opened if OneFlow server is used. |
| 5030 OneGate server. This port only needs to be opened if OneGate server is used. |
| 端口都可以自定义配置,或者代理。 |
8、后续步骤
| 1、重置密码 |
| oneuser passwd 0 <PASSWORD> |
| echo 'oneadmin:PASSWORD' > /var/lib/one/.one/one_auth |
| |
| 2、Opennebula 扩展应用 |
| OneFlow |
| 说明 |
| 用于将多个虚拟机应用程序定义和管理为单个实体。OneFlow还让您为应用程序组件定义依赖关系和自动扩展策略。 |
| 配置文件 |
| |
| 服务器配置 |
| |
| #OpenNebula 守护程序联系信息# |
| :one_xmlrpc : http:// localhost:2633 / RPC2 |
| #生命周期管理器步骤之间的时间(以秒为单位) |
| # |
| :lcm_interval : 30 |
| #OneFlow服务器将运行的主机和端口 |
| :host : 127.0.0.1 |
| :port : 2474 |
| |
| 默认值 |
| |
| |
| #缩放操作后的默认冷却时间,以秒为单位 |
| :default_cooldown : 300 |
| |
| #默认关闭操作。值:'shutdown','shutdown-hard' |
| :shutdown_action : 'shutdown' |
| |
| #默认oneflow动作选项当只有一个被提供 |
| :action_number : 1 |
| :action_period : 60 |
| |
| #oneflow创建的虚拟机的默认名称。您可以使用 |
| 以下 |
| #个 |
| 占位符中的任意一个:#$ SERVICE_ID #$ SERVICE_NAME |
| #$ ROLE_NAME |
| #$ VM_NUMBER |
| |
| :vm_name_template : '$ ROLE_NAME_ $ VM_NUMBER_(service_ $ SERVICE_ID)' |
| |
| |
| Auth |
| |
| #与OpenNebula核心进行通信的身份验证驱动程序 |
| #-密码,用于令牌的对称密码加密 |
| #-x509,用于令牌的x509证书加密 |
| :core_auth : 密码 |
| |
| 日志 |
| |
| |
| #日志调试级别 |
| #0 =错误,1 =警告,2 =信息,3 =调试 |
| # |
| :debug_level : 2 |
| |
| 3、应用 |
| 启动: |
| service opennebula-flow start |
| 日志: |
| /var/log/one/oneflow.error |
| /var/log/one/oneflow.log |
| |
| |
2、Opennedula node节点安装
1、要添加OpenNebula存储库,请以root用户身份执行以下操作:
| cat << "EOT" > /etc/yum.repos.d/opennebula.repo |
| [opennebula] |
| name=OpenNebula Community Edition |
| baseurl=https://downloads.opennebula.io/repo/6.1/CentOS/8/$basearch |
| enabled=1 |
| gpgkey=https://downloads.opennebula.io/repo/repo.key |
| gpgcheck=1 |
| repo_gpgcheck=1 |
| EOT |
| yum makecache |
| |
| yum -y install epel-release |
| rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm |
2、安装软件
| 执行以下命令安装 OpenNebula KVM 节点软件包并重新启动 libvirt 以使用 OpenNebula 提供的配置文件: |
| sudo yum install opennebula-node-kvm |
| sudo systemctl restart libvirtd |
| |
| 可选:较新的 QEMU/KVM(仅限 CentOS/RHEL 7) |
| qemu-kvm安装 |
| sudo yum install centos-release-qemu-ev |
| sudo yum install qemu-kvm-ev |
3、禁用SElinux
| vim /etc/selinux/config |
| SELINUX=disabled |
4、配置无密码的SSH
| 1、前端服务器以前端服务器,节点服务器为参数,生成known_hosts文件 |
| |
| ssh-keyscan <frontend> <node1> <node2> <node3> ... >> /var/lib/one/.ssh/known_hosts |
| |
| 2、服务器分发文件 |
| scp -rp /var/lib/one/.ssh <node1>:/var/lib/one/ |
| scp -rp /var/lib/one/.ssh <node2>:/var/lib/one/ |
| scp -rp /var/lib/one/.ssh <node3>:/var/lib/one/ |
| |
| |
| |
| 选择导入虚拟机后,会修改默认的/etc/libvirt/qemu.conf |
| 还原为 |
| user = "qemu" |
| group = "qemu" |
| 就可以继续使用命令行启动 |
5.存储配置(可选)
| 在默认的OpenNebula配置中,本地存储用于存储映像和运行虚拟机。这对于基本用途来说已经足够了,除非您想要部署高级存储解决方案,否则您现在不需要采取任何额外的步骤。 |
| 按照开放 云存储设置 指南了解如何使用 Ceph、NFS、LVM 等。 |
按照开放 云存储设置 指南了解如何使用 Ceph、NFS、LVM 等。
6.Adding Host to OpenNebula
| 打开此处记录的日光石 here。在左侧菜单中,转到 基础架构 → 主机 。点击 + 按钮。 |

Then fill in the hostname, FQDN, or IP of the Node in the Hostname
field.

最后,返回到主机 Hosts 列表,并检查主机是否已切换到 ON
地位。最多可能需要 1 分钟。单击刷新按钮以更频繁地检查状态。

7.Add Host with CLI
要将节点添加到云,请运行此命令 oneadmin
在前端(替换 <node01>
使用您的节点主机名):
| $ onehost create <node01> -i kvm -v kvm |
| |
| $ onehost list |
| ID NAME CLUSTER RVM ALLOCATED_CPU ALLOCATED_MEM STAT |
| 1 localhost default 0 - - init |
| |
| |
| |
| $ onehost list |
| ID NAME CLUSTER RVM ALLOCATED_CPU ALLOCATED_MEM STAT |
| 0 node01 default 0 0 / 400 (0%) 0K / 7.7G (0%) on |
8.导入现有虚拟机(可选)
(可选)可以导入已在主机上运行的虚拟机。您将能够从OpenNebula控制此类虚拟机,尽管操作集大大减少(与从OpenNebula启动的虚拟机相比)。按照Importing Wild VMs (导入虚拟机)指南进行操作。
以后可以随时导入虚拟机。
现在,您可以继续:
扩展和控制您的云。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类