openNebula集群搭建
阅读原文时间:2023年09月07日阅读:1

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 ~]# cat /etc/hosts
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 ~]# scp /etc/hosts root@node1:/etc/hosts
[root@cloud ~]# scp /etc/hosts root@node4:/etc/hosts



关闭SELINUX
SELINUX=disabled

在每台主机上关闭相关安全策略:

[root@cloud ~]# systemctl stop firewalld
[root@cloud ~]# iptables -F
[root@cloud ~]# setenforce 0

配置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]# cat opennebula.repo
[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]# pwd
/etc/yum.repos.d
[root@node4 yum.repos.d]# 

安装EPEL源:
[root@cloud ~]# yum -y install epel-release

安装OpenNebula主控依赖:
[root@cloud ~]# yum -y install opennebula-server opennebula-sunstone opennebula-ruby opennebula-gate opennebula-flow

安装OpenNebula主控额外依赖和主程序:
[root@cloud ~]# /usr/share/one/install_gems

根据自己系统选择,我是centos所以选1

修改默认的oneadmin密码(这个账号密码用于登录OpenNebula的控制面板):
[root@opennebula ~]# echo "oneadmin:910zxq" > /var/lib/one/.one/one_auth

1.关闭防火墙

1、关闭防火墙
关闭SELINUX
SELINUX=disabled
在每台主机上关闭相关安全策略:
[root@cloud ~]# systemctl stop firewalld
[root@cloud ~]# iptables -F
[root@cloud ~]# setenforce 0

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
# Sample configuration for MySQL
   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

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/

### FAQ
选择导入虚拟机后,会修改默认的/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

# After some time (up to 1 minute)

$ 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 (导入虚拟机)指南进行操作。

以后可以随时导入虚拟机。

现在,您可以继续:

扩展和控制您的云。