lala.im:Debian9部署OpenNebula被控

運維技術·lala.im · 2018-09-02 · 113 人浏览

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

之前在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无密码登录了,这些我就不写了,可以参考之前的文章:
CentOS7部署OpenNebula开设KVM小鸡

下面补充一些关于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类似。

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