静看光阴荏苒
不管不顾不问不说也不念

CentOS7部署OpenNebula开设KVM小鸡

之前在开设KVM小鸡这块,我介绍过SolusVM以及ProxMox,但是在我的认知里,OpenNebula才是最适合开KVM的神器。下面简单说一下我这么喜欢OpenNebula的原因。

1.OpenNebula能够自定义虚拟机内的CPU型号和架构。

2.OpenNebula可以设置显示假的CPU核心数。

3.OpenNebula默认创建的虚拟机硬盘镜像是qcow2,qcow2与其他格式最大的不同之处就在于qcow2是“硬盘空间你实际用了多少我就给你划分多少”。

我就随便说了上面3点,奸商们都懂,这里就不多BB了。下面就开始部署OpenNebula。

我使用的环境:

Xshell
FlashFXP
主控:CentOS7X64(Linode)
被控:CentOS7X64(Hetzner使用救援系统安装,别用VNC安装,别问为什么。另外KVM需要桥接网卡,每台机器需要的网卡配置可能不同,本文下方的配置仅供参考)

OpenNebula分为主控和被控(节点)两个部分。我们先来部署主控。

关防火墙:

systemctl stop firewalld.service

关Selinux:

vi /etc/selinux/config

里面的值改成:

SELINUX=disabled

然后重启机器:

reboot

新建一个yum源:

vi /etc/yum.repos.d/opennebula.repo

写入:

[opennebula]
name=opennebula
baseurl=https://downloads.opennebula.org/repo/5.6/CentOS/7/x86_64
enabled=1
gpgkey=https://downloads.opennebula.org/repo/repo.key
gpgcheck=1
#repo_gpgcheck=1

安装EPEL源:

yum -y install epel-release

安装OpenNebula主控依赖:

yum -y install opennebula-server opennebula-sunstone opennebula-ruby opennebula-gate opennebula-flow

安装OpenNebula主控额外依赖和主程序:

/usr/share/one/install_gems

修改默认的oneadmin密码(这个账号密码用于登录OpenNebula的控制面板):

echo "oneadmin:设置一个你的密码" > /var/lib/one/.one/one_auth

启动opennebula:

systemctl start opennebula
systemctl start opennebula-sunstone

访问你的服务器公网IP+端口9869,应该可以看到如下图界面:

主控这块的安装暂时告一段落,现在来装被控。

在开始之前和装主控一样,要关闭系统防火墙以及Selinux,相关命令自己往上翻就能找到,这里就不重复了。

做完这一系列事情之后,新建一个yum源:

vi /etc/yum.repos.d/opennebula.repo

写入:

[opennebula]
name=opennebula
baseurl=https://downloads.opennebula.org/repo/5.6/CentOS/7/x86_64
enabled=1
gpgkey=https://downloads.opennebula.org/repo/repo.key
gpgcheck=1
#repo_gpgcheck=1

然后开始安装:

yum -y install opennebula-node-kvm

完成之后记得重启libvirtd:

systemctl restart libvirtd

现在来设置KVM网卡桥接,首先装两个依赖:

yum -y install net-tools bridge-utils

新建一个br0网卡:

vi /etc/sysconfig/network-scripts/ifcfg-br0

写入:

DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
IPADDR=服务器的公网IP
NETMASK=子网掩码
SCOPE="peer 网关IP"
ONBOOT=yes
DELAY=0
IPV6INIT=yes

然后再新建一个路由:

vi /etc/sysconfig/network-scripts/route-br0

写入:

ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=网关IP

重要!现在就重启你的网卡:

/etc/init.d/network restart

重启完成之后,编辑主网卡配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-enp3s0

写入:

DEVICE=enp3s0
HWADDR=服务器MAC地址
IPV6INIT=yes
ONBOOT=yes
BRIDGE=br0

然后再重启一遍网卡:

/etc/init.d/network restart

如果没有意外,你做完这些事情之后,你的服务器依旧可以联网。

现在来配置OpenNebula主控和被控的SSH无密码访问。这也是非常关键的一步,因为OpenNebula大部分功能都依靠SSH实现,所以这里一定不能出错。

重要!以下操作在主控和被控上都要完成。

首先编辑:

vi /etc/ssh/ssh_config

在这个配置文件内找到:

# StrictHostKeyChecking ask

修改成:

StrictHostKeyChecking no

接着再编辑:

vi /etc/ssh/sshd_config

找到:

# PubkeyAuthentication no

改为:

PubkeyAuthentication yes

然后重启sshd:

systemctl restart sshd.service

现在我们回到主控中,切换到oneadmin用户:

su oneadmin

执行如下命令:

ssh-keyscan 主控服务器公网IP 被控服务器公网IP >> /var/lib/one/.ssh/known_hosts

完成之后,使用FlashFXP找到主控内的如下目录:

/var/lib/one/.ssh

把这个目录下载到本地,然后再用FlashFXP上传到被控的如下目录:

/var/lib/one/

如此一来,两台机器相互的SSH无密码访问应该已经配置完成,可以自行在两台服务器中进行简单测试:

在主控中执行如下命令测试:

ssh 被控服务器公网IP

在被控中执行如下命令测试:

ssh 主控服务器公网IP

现在我们打开OpenNebula的控制面板,使用我们之前的oneadmin账号和密码进行登录,初次登录页面大概长这个样子:

首先我们要把主控和被控进行对接,对接方法如下图所示:

如果一切正常,那么状态会显示“启用”:

接下来我们要新建一个“虚拟网络”:

按如下图填写:

继续:

然后“安全”和“QoS”这块我们直接跳过,来到Context这里,按如下图填写:

接着我们来下载系统模板:

选择把模板存储在我们的主控中,然后点击下载即可:

然后我们点击“模板-虚拟机”,选中一个模板进行编辑(更新):

选中KVM虚拟化,然后在这里设置一些默认值,比如CPU/内存之类的:

关键!点击存储-高级选项:

在这里把总线和缓存分别改为:Virtio/WriteBack。这将大幅度提升虚拟机的硬盘IO速度。

然后看到系统和CPU,在这里你可以随意更改虚拟机CPU的型号:

还有一些其他设置这里就不多说了,下面我们就可以来尝试开设一台KVM小鸡试试了。点击实例-虚拟机,左上角+号开始新建:

选择一个系统模板:

然后进行具体的配置,注意这里有一个VCPU的功能,这里就是虚拟机内实际看到的CPU核心数,你可以自由发挥,写个100核都没问题233:

然后点击网络选项卡,给虚拟机分配一个网络接口:

然后点击左上角的创建按钮即可,虚拟机现在就开始创建了,我们点击进入虚拟机内,可以看到具体的日志,虚拟机创建并运行成功后,会有如下图字样:

因为OpenNebula的特性,默认情况下虚拟机只能通过SSH密钥访问,所以我们要生成SSH密匙对,具体的生成方法这里就不讲了,主要讲一下如何把SSH密匙添加到虚拟机内。首先我们要关闭正在运行的虚拟机,然后点击如下图的按钮:

然后把你的SSH公钥粘贴到这里:

然后重新启动虚拟机即可使用SSH密匙登录了。

就问你们这种12个核心的E3 KVM小鸡,你们怕不怕?

一般人用命令还真看不出来有什么问题,除了这核心数很假就是了233:

然后我们再来说一下这个qcow2的硬盘,都说KVM无法超售硬盘,但实际上轻轻松松就能超,我们在虚拟机内看到确实划分给这台机器100GB硬盘了:

但实际上这台机器只使用了不到2GB的硬盘,那么根据qcow2的机制实际上宿主机内就只划分了2G不到的空间给这台小鸡了,100G只是一个峰值而已,只有当用户真正用到100G了,那宿主机内的硬盘才会占用100G。事实是不是如此,我们看下宿主机内的硬盘占用不就清楚了,如下图宿主机内的硬盘才占用了5G不到:

所以综合上述所说,你有什么理由不玩玩OpenNebula?

赞(1)
未经允许不得转载:荒岛 » CentOS7部署OpenNebula开设KVM小鸡
分享到: 更多 (0)

评论 22

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    可惜whmcs没有插件来对接,不然的话。。。嘿嘿嘿 :oops:

    提皮tp11个月前 (08-29) Safari 12.0 Safari 12.0 iPad iOS 12.0 iPad iOS 12.0回复
    • 为什么你每次都能这么快的出现,细思极恐。。。

      LALA11个月前 (08-29) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 水tg看到了推送,而且才两次呀
        下次要快点,评论完再看文章 :wink:

        提皮tp11个月前 (08-29) Safari 12.0 Safari 12.0 iPad iOS 12.0 iPad iOS 12.0回复
        • 推送???RSS推送???

          LALA11个月前 (08-29) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
          • https://t.me/sabiarss
            :smile:

            提皮tp11个月前 (08-29) Safari 12.0 Safari 12.0 iPad iOS 12.0 iPad iOS 12.0
          • 人捏,人怎么跑了 :eek:

            提皮tp11个月前 (08-29) Safari 12.0 Safari 12.0 iPad iOS 12.0 iPad iOS 12.0
          • 我就默默的进去点了下订阅。。

            LALA11个月前 (08-30) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition
    • 这个或许可以用https://marketplace.whmcs.com/product/2058

      locyoo10个月前 (09-12) Google Chrome 68.0.3440.106 Google Chrome 68.0.3440.106 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 有想法的可以上,100刀对于我这种玩玩而言的人来说,太贵了。。。

        LALA10个月前 (09-13) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    我也订阅了哈哈哈 :mrgreen:

    欧文斯11个月前 (08-29) Safari 11.0 Safari 11.0 iPad iOS 11.4.1 iPad iOS 11.4.1回复
  3. #3

    要是可以对接whmcs就好了

    La2yCat11个月前 (08-29) Firefox 61.0 Firefox 61.0 Mac OS X  10.13 Mac OS X 10.13回复
  4. #4

    lala,我在安装主控的时候踩坑了,启动 OpenNebula出错,防火墙和selinux已经关闭,提示:
    [root@VM_0_7_centos ~]# systemctl status opennebula.service
    ● opennebula.service – OpenNebula Cloud Controller Daemon
    Loaded: loaded (/usr/lib/systemd/system/opennebula.service; disabled; vendor preset: disabled)
    Active: failed (Result: start-limit) since Thu 2018-08-30 16:59:07 CST; 7min ago
    Process: 25454 ExecStopPost=/usr/share/one/follower_cleanup (code=exited, status=0/SUCCESS)
    Process: 25452 ExecStart=/usr/bin/oned -f (code=exited, status=255)
    Process: 25439 ExecStartPre=/usr/sbin/logrotate -f /etc/logrotate.d/opennebula -s /var/lib/one/.logrotate.status (code=exited, status=0/SUCCESS)
    Main PID: 25452 (code=exited, status=255)

    Aug 30 16:59:02 VM_0_7_centos systemd[1]: opennebula.service: main process exited, code=exited, …n/a
    Aug 30 16:59:02 VM_0_7_centos systemd[1]: Failed to start OpenNebula Cloud Controller Daemon.
    Aug 30 16:59:02 VM_0_7_centos systemd[1]: Unit opennebula.service entered failed state.
    Aug 30 16:59:02 VM_0_7_centos systemd[1]: opennebula.service failed.
    Aug 30 16:59:07 VM_0_7_centos systemd[1]: opennebula.service holdoff time over, scheduling restart.
    Aug 30 16:59:07 VM_0_7_centos systemd[1]: start request repeated too quickly for opennebula.service
    Aug 30 16:59:07 VM_0_7_centos systemd[1]: Failed to start OpenNebula Cloud Controller Daemon.
    Aug 30 16:59:07 VM_0_7_centos systemd[1]: Unit opennebula.service entered failed state.
    Aug 30 16:59:07 VM_0_7_centos systemd[1]: opennebula.service failed.
    Hint: Some lines were ellipsized, use -l to show in full.

    coolk11个月前 (08-30) Google Chrome 68.0.3440.106 Google Chrome 68.0.3440.106 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 这么悲剧的吗。。。
      用这个命令看下更详细的日志:journalctl -xe
      实在解决不了,就换台机器装。

      LALA11个月前 (08-30) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
  5. #5

    羡慕玩的起杜甫的人。

    Rat's11个月前 (09-01) MIUI Browser 10.0.2 MIUI Browser 10.0.2 Android 7.0 Android 7.0回复
  6. #6

    老大, 有没有被控单IP用NAT转发的方式开小鸡的方法呢?

    TWM10个月前 (09-30) Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Mac OS X  10.12.6 Mac OS X 10.12.6回复
    • 没有,这个我可能搞不了,技术太菜了。。。

      LALA10个月前 (09-30) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿