之前在开设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?
最新评论
5211314
能不能教我 一点不会