之前在CentOS7上面部署了一套完整的OpenNebula,试用了几天发现OpenNebula也有一些这样那样的小问题,当然即便如此也还是比BUG王SolusVM要好用很多。
因为OpenNebula在CentOS7上面的表现我个人不是很满意,所以我决定把它重新装在Debian9上试试,经过我的多次试用,目前表现良好。主控这里我就还是使用CentOS7了,主控没什么问题,所以我也懒得重装。出现问题一般都是在被控上面,所以这篇文章只部署被控。
环境:Debian9X64(Hetzner救援系统安装)
我建议在安装开始之前就先把KVM的桥接配置好,尤其是Hetzner这种“网络复杂”的服务商,辛辛苦苦装好了被控,配置桥接网络的时候把网搞炸了,又要重头来很烦的。下面我给一套目前在Hetzner的Debian9上可行的桥接方案。
安装桥接需要的依赖:
apt-get install bridge-utils
然后看看自己的主网卡名字以及主网卡MAC地址:
ifconfig
然后编辑主网卡配置文件:
nano /etc/network/interfaces
把里面带up route add的一行复制下来保存好,然后修改里面的内容为:
### Hetzner Online GmbH installimage source /etc/network/interfaces.d/* auto lo iface lo inet loopback iface lo inet6 loopback auto enp3s0 iface enp3s0 inet manual
注:enp3s0是你的主网卡名字,别照搬我这里的,每个人可能都不一样。
然后新建一个br0桥接网卡:
nano /etc/network/interfaces.d/br0
写入如下配置:
auto br0 iface br0 inet static address 服务器公网IP netmask 服务器子网掩码 gateway 网关IP hwaddress ether 主网卡MAC地址 bridge_ports enp3s0(改成你的主网卡名字) bridge_stp off bridge_fd 0 bridge_maxwait 0 up route add -net xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gw xxx.xxx.xxx.xxx dev br0(xxx替换为你之前复制的)
重启网络服务:
/etc/init.d/networking restart
如果能够重启成功,并且机器还有网,那么一般情况下你的KVM桥接就配置好了,接着我们直接重启服务器,重新登录上来之后可以看到网卡的配置信息应该如下:
OJBK,网卡桥接配置好了后,下面开始装被控。
先更新一波系统:
apt-get update apt-get upgrade
添加OpenNebula源的Key:
wget -q -O- https://downloads.opennebula.org/repo/repo.key | apt-key add -
添加OpenNebula源:
echo "deb https://downloads.opennebula.org/repo/5.6/Debian/9 stable opennebula" > /etc/apt/sources.list.d/opennebula.list
安装这个玩意:
apt-get install apt-transport-https
更新源信息:
apt-get update
然后就可以安装OpenNebula被控了:
apt-get install opennebula-node
完成之后重启libvirtd:
systemctl restart libvirtd
这里有一个坑,如果你的主控是CentOS7,被控是Debian9,那么做一下这个软连接:
mkdir -p /usr/libexec/ ln -s /usr/bin/qemu-system-x86_64 /usr/libexec/qemu-kvm
因为OpenNebula创建虚拟机的时候调用qemu-kvm的路径是/usr/libexec/qemu-kvm,但是在Debian9上,qemu-kvm的路径是/usr/bin/qemu-system-x86_64。做个软连接就好了。
然后就是在主控上面扫描获取被控的SSH信息配置SSH无密码登录了,这些我就不写了,可以参考之前的文章:
下面补充一些关于OpenNebula的使用细节。
首先是OpenNebula默认开设的虚拟机只允许SSH密匙登录,这个其实我们可以自己修改模板,实现虚拟机支持密码登录的。方法如下:
在OpenNebula的后台“模板”-“虚拟机”,选中一个你打算修改的模板:
点“更新”:
点击“Context”,在“启动脚本”内输入修改ssh配置的命令。我这里写了2个模板目前可用的。
Debian9模板:
sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config sed -i "s/PermitRootLogin without-password/PermitRootLogin yes/g" /etc/ssh/sshd_config systemctl restart sshd.service
CentOS7模板:
sed -i "s/#PasswordAuthentication yes/PasswordAuthentication yes/g" /etc/ssh/sshd_config sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config systemctl restart sshd.service
注意:如果你的被控宿主机系统是CentOS7,CentOS7的模板不要使用这些命令来修改ssh,如果使用了会导致虚拟机开机后没网。这是OpenNebula被控在CentOS7上的问题之一。我们现在用的被控系统是Debian9,无此问题,大可放心使用。
接着我们创建一个“用户输入”配置,这样可用让用户在创建虚拟机的时候自己设置ROOT密码,如图所示:
如此设置之后,使用此模板创建的虚拟机就可以让用户自己设置ROOT密码了,然后系统开机后用户就可以用ROOT密码登录了。
接着关于虚拟机硬盘IO的限制,在“模板”-“虚拟机”-“存储”-“高级选项”内可以设置,有两个可以设置的地方,一个是“节流”一个是“IOPS”,这里我测试了一下,IOPS是MB/s为单位,节流就是界面上面说的B/s,建议用节流来限制,因为IOPS限制的太死了,反而会导致虚拟机CPU占用率升高:
然后关于OpenNebula的超卖设置很简单,在被控这里可以设置“超分使用”,当然我不是很清楚这个超分使用最大可以设置的值是多少。。
最后友情提醒一下,OpenNebula的网速限制是只对新创建的虚拟机生效,也就是说如果你打算限制虚拟机的网速,就一定要先设置好,否则虚拟机创建之后就无法再做限制或者更改了。另外OpenNebula没有限制使用流量的功能,所以我觉得OpenNebula的设计初衷更偏向于“私有云”就和ProxMox类似。