代码改变世界

使用openvswitch配置xen的虚拟化网络,实现网络隔离的故事

2012-04-06 14:32  onm  阅读(850)  评论(0编辑  收藏  举报

这事本没想难易,结果是花掉了我好几个周末的时间才搞通。

最开始对网络配置各种不懂,我偶有网络课程白学的想法。而且这次又玩虚幻,各种虚拟网络,各种配置,搞得头儿晕晕。实现的目的其实很简单:就是两台物理主机A、B,每台物理主机上各有采用Xen虚拟化的两个VM,可分别标记为A1,A2,B1,B2。可以让这4个虚拟机之间实现网络联通与隔离,消除掉物理主机的概念,好像所有虚拟机都运行在一台物理主机上一样。

说一下我的实验环境,一台物理主机,然后采用Vmware虚拟了两个主机,然后每个主机再通过Xen虚拟两个虚拟机。有如兔子生娃,一生俩,俩生四。这样我就有了4个虚拟主机。

(话说当初我的实验环境更为复杂,我搞到一台远程Windows主机,然后远程上去,在上面用Vmware建了个Centos的虚拟机,然后又用Xen虚拟了两个VM,搞得尤为复杂,后来遇到一些问题,遂搞到一台机器上了,这个稍后再说)

有了实验环境后,就是安装一些软件,首先我使用的是Centos5.x系列的操作系统,然后使用了Xen3.x版本的Xen。(话说这玩应当初我尝试了N多版本,各种问题,各种装操作系统,和配置Xen环境,各种等待的过程)

然后是Xen的虚拟化网络,Xen的虚拟化网络有三种方式,默认的bridge,还有route和nat(但是名字这我看了几个文档  ,各自介绍又有点区别)。

基础知识我这就不说了(前面已经跑偏不少了),几种网络方式可以参看如下几个网址:

  • http://wiki.kartbuilding.net/index.php/Xen_Networking#Overview_of_Networks_with_Xen
  • http://wiki.xen.org/wiki/Xen_Networking
  • http://wiki.xen.org/wiki/HostConfiguration/Networking

而且Xen的虚拟化网络搞出一堆设备、接口出来,如:eth0,peth0,vifx.x,veth,xenbr0等等。

这些东西其实主要是通过xen的几个网络脚本搞出来的,在/etc/xen/scripts目录下,有一些网络脚本,例如network-bridge,桥接方式,主机用到的脚本,仔细研读这个脚本还是很有好处的,能了解xen初始化虚拟网的过程。

有几篇博文不错,可以帮助理解,如下:

  • http://blog.csdn.net/sahusoft/article/details/5996453
  • https://sites.google.com/site/gnawux/Home/%E6%9C%AC%E4%BA%BA%E8%AF%91%E4%BD%9C/xen%E7%BB%84%E7%BD%91#network-bridge_%E8%84%9A%E6%9C%AC

好了,现在说openvswitch,这个是在查找网络隔离解决方案中,找到的,这个东西可以说是虚拟的交换机。

这篇博文介绍了一下openvswitch:http://bengo.blog.51cto.com/4504843/791213,可以大体了解一下。openvswitch有个http://openvswitch.org/support/config-cookbooks/vlan-configuration-cookbook/这么个文档,于是我一下相中了它,这个功能整合我意,于是开始鼓捣openvswitch,又是各种配置,但是怎么配置都不行,虽说openvswitch官方声明支持xen,但是缺乏良好的文档来说明怎么和xen结合起来,或者说根本没有文档,我翻看了一些邮件列表,找到一两个相关的讨论,但是也都是没有结果。

配置openvswitch虚拟网络,经常容易把xen的虚拟网络搞毁,终于偶有一次惊奇的发现使用openvswitch的虚拟网络,替换了linux bridge的网桥网络,一阵窃喜,不幸的是到隔了一周的时间,到下一个周末的时候,忘记上次是怎么配置的了,所以又是乱搞。搞了又搞,终于鼓捣成了,然后下一周又忘了,这过程中我几次想写个文,记录一下配置的过程,但是都没写,侥幸想这次应该不会忘了,于是就又忘了。但其实所谓忘了,不过是还没有了解其中的原理。后来驾轻就熟后,往往怎么搞都没有问题了。

后来又遇到一个问题,前面提到了,就是交换机truck口的问题,之前是两台vmware虚拟机,而且一台还是远程的,网段还小有区别,虽然是在一个网段里,后来问老师,老师说这样会有问题,于是搞到一台机器上,终于成功成仁。(话说最开始卡在网络上的时候,我一度狂乱,一天给老师发了10封左右邮件,老师当时1封没回,我就1封接1封的发,有什么想法就发过去)

写到这里我已经不想写什么解决方案,我发现这故事本身往往很精彩,而最后不过是几句话而已。

于是,最后我无耻的将标题最后加了“的故事”三个字。

未完,待续。。。