lala.im:CentOS7部署OpenNebula开设KVM小鸡

運維技術·lala.im · 2018-08-29 · 146 人浏览

原文地址:https://lala.im/3974.html,請支持原作者!該處僅作轉載。

之前在开设KVM小鸡这块,我介绍过SolusVM以及ProxMox,但是在我的认知里,OpenNebula才是最适合开KVM的神器。下面简单说一下我这么喜欢OpenNebula的原因。
1.OpenNebula能够自定义虚拟机内的CPU型号和架构。
2.OpenNebula可以设置显示假的CPU核心数。
3.OpenNebula默认创建的虚拟机硬盘镜像是qcow2,qcow2与其他格式最大的不同之处就在于qcow2是“硬盘空间你实际用了多少我就给你划分多少”。
我就随便说了上面3点,奸商们都懂,这里就不多BB了。下面就开始部署OpenNebula。
我使用的环境:
Xshell\nFlashFXP\n主控:CentOS7X64(Linode)\n被控: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?

運維技術 lala.im
Theme Jasmine by Kent Liao