1 vRouter(虚拟路由器)简述
CloudStack作为一个虚拟化平台,提供了计算资源、网络资源和存储资源的虚拟化管理和使用。在网络虚拟化上,vRouter起到了至关紧要的作用。几乎所有虚拟网络功能,都是vRouter来实现的,比如:IPAM (DHCP)、DNS、NAT、Source NAT、防火墙、端口转发、负载均衡、VPN等等。也有些功能可以借助外部设备来实现。
每个来宾网络(客户网络)对应至少一个vRouter,当启动某个网络的第一台客户虚拟机时,vRouter会自动创建出来,若一个客户网络长时间不存在启动的虚拟机,该网络的vRouter会自动关闭。
2 操作系统
CloudStack的vRouter虚拟机使用了Debian 6.0操作系统 2.6.32内核,为了节省开销,仅安装系统所需的程序包,如:xen、vmware和kvm工具,haproxy、iptables、ipsec等网络包,使用最新版本jre保证安全和速度。默认情况下,只打开了3922端口,且只能通过hypervisor服务器ssh上去。
3 vRouter网卡介绍
vRouter有三个网络,分别是外网,来宾网络(客户网络)和链路本地网络。
外网的作用是提供一个外网访问CloudStack内部环境的门户;来宾网络保证外部访问通过vRouter中转后能够到达内部的虚拟机,也为客户虚拟机提供了DHCP和DNS功能;链路本地网络用于内部的一些通信。
4 vRouter提供的主要功能介绍:
CloudStack提供了丰富的网络功能,配置起来却极其容易,只需要从UI简单点击就可以完成,这些功能都是通过vRouter实现的。
点击【网络】,选择网络,然后点击【IP地址】,选择外网IP。然后就可以进行这些网络功能的配置了。
-
防火墙
默认情况下,vRouter拒绝外网的一切访问,所以启动任何网络功能,都需要先配置防火墙。点击【防火墙】,可以添加外部访问权限。比如下面配置:
源CIDR: 0.0.0.0/24
协议: TCP
起始端口: 500
结束端口: 800
意思是允许所有公网IP,通过TCP协议访问vRouter该IP下的500-800端口。
该功能是通过Linux iptables实现,UI配置后,vRouter内部加入相应的ip包过滤规则,使得这些访问得到允许。
-
端口转发
端口转发功能,可以让外网直接连接到内网某个虚拟机的指定端口。比如:
点击【端口转发】,添加新的规则:
专用端口: 22
公用端口: 622
协议: TCP
指定虚机: i-2-188-VM
则可以通过ssh该公网IP的622端口,直接ssh连接到内部环境虚拟机i-2-188-VM上。
该功能也是通过iptables实现。前面提过vRouter可以同时连接外网和客户网络,从UI上添加一条端口转发规则,vRouter的iptables同时添加该转发规则,从而实现了端口转发功能。
-
负载均衡
负载均衡功能,可以把外网的访问,分布到多台装有相同服务的内网虚拟机上,扩展服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。比如:
点击【负载均衡】,添加如下规则:
名称: 测试1
公用端口: 522
专用端口: 22
算法: 轮询算法
然后添加2台虚拟机(linux可以ssh访问22端口)进去,这样,通过ssh访问该IP地址的522端口,可以轮询访问到2台虚拟机。
负载均衡功能是通过haproxy实现,UI上添加规则的同时,会修改vRouter内部haproxy的配置文件。
-
VPN
CloudStack提供了虚拟专用网络(Virtual Private Network)功能,可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。
点击【网络】,选择网络,然后点击【IP地址】,选择外网IP;
点击启动VPN按键;确认点击“是”;
这样该外网IP的VPN就启动了,可以看到,除了详细信息、配置,多出来一个VPN标签,里面记录了IP地址、共享密钥等信息。然后添加该连接的用户,就可以通过这个VPN连接访问内网的虚机了。
CloudStack的VPN功能使用了IPSec技术,当启动VPN服务后,管理服务器会去启动vRouter内的IPSec服务,并进行相关的配置,上文所提到的外网IP实际就是vRouter的IP地址,所有VPN连接都是以vRouter为中转连到内部环境虚拟机的。
-
DNS DHCP
客户虚拟机的DNS DHCP Server,都是vRouter内部的Dnsmasq工具实现的。当vRouter创建、启动或者有新虚拟机创建时,系统会动态从数据库加载Dnsmasq配置信息。
5 vRouter相关的全局配置
router.check.interval | 报告冗余路由器状态的间隔时间(秒) |
router.cpu.mhz | 虚拟路由器的缺省CPU速度(MHz) |
router.extra.public.nics | 为虚拟路由器指定额外的公用网卡(最高5) |
router.stats.interval | 报告路由器统计间隔时间(秒) |
router.template.id | 模板的缺省ID |
不知博主有没兴趣放个配置(视频)教程上来,对于高级网络设置看他们的英文文档还是有些晦涩
I want to send you an award for most helpful inertent writer.
近期正在准备下个月18号的技术沙龙,视频近期无法准备了.但高级网络部署的这部分内容将会在技术沙龙上介绍.
Thinking like that is ralely impressive
Thinking like that is really ipmrsesive
推荐這篇文章,之前在設定vRouter的port forwarding不知道要先把防火牆的port先開起來,卡超久才知道要先做這個步驟orz。
You’ve impersesd us all with that posting!
I’m not easily impressed but you’ve done it with that ptiosng.
楼主:
我遇到一个问题,我有两台kvm主机,host1和host2,vrouter创建在了host1上,但是我在host2上创建的虚拟机无法从vrouter获得来宾ip地址,只是得到了一个169.254.x.x的地址,我的vrouter的ip地址是192.168.1.1,按道理应该获得192.168.x.x的ip。在Host1上创建的虚拟机就没有问题,vrouter的外部ip的防火墙也设置了tcp 1~65535, udp 1-65535,icpm -1 -1, 0.0.0.0/0的规则,请帮个忙啊,谢谢
我也有很多其他问题。
同样的问题