OpenStack Trove&manila的网络依赖




这俩项目架构都差不多,

Trove是trove-api(接收用户请求)、 trove-taskmanager(用户管理操作逻辑适配层)、 trove-conductor(通过RPC接收数据库操作) trove-guestagent(运行在虚拟机里面,实际管理数据库实例,具有多种类型数据库driver以驱动不同数据库类型)。

https://docs.openstack.org/trove/latest/install/get_started.html

Manila是manila-api(接收用户请求)、manila-data(处理备份、迁移等数据相关逻辑)、manila-scheduler(调度文件共享服务节点,也即share service节点)、manila-share(文件共享服务节点,提供实际的共享文件服务,可以运行在物理机上或者虚拟机里)。

https://docs.openstack.org/manila/pike/install/get-started-with-shared-file-systems.html

这两个服务有一个共同点,多个子服务同时运行在物理机和虚拟机里面,这种场景下,就得考虑物理网络到虚拟网络的连通性问题,否则服务之间不能互通,肯定没法正常运行。2种服务的解决方案也比较类似,都是通过L2或者L3来打通物理和虚拟网络:

https://wiki.openstack.org/wiki/Manila/Networking

L2方式下,需要使用FLAT网络,所有物理机和虚拟机都在一个2层下,业务和管理数据都在一个平面,性能好,但是不安全,大规模环境下也存在网络广播风暴问题。

L3方式下,也有两种方法,虚拟路由和物理路由。虚拟路由模式下,服务提供节点(数据库的guestagent节点和共享文件服务节点)需要跟物理机上的管理服务互通,以便接收用户管理操作请求,但实际的业务面数据(客户端虚拟机到服务节点虚拟机,如读写数据库、读写共享文件)仍然是走的同一个私有网络(同一个network的subnet)。如果服务节点(提供数据库或共享文件服务的虚拟机)上有2个port,可以配置为1个租户私有网port,用来提供业务面的网络数据服务,另一个配置为service port(也即FLAT模式网络),用来提供跟物理机网络互通的控制面网络数据服务。如果服务节点上只有一个port,那就需要两个虚拟路由器,一个是租户私有网的,一个是服务网络,二者之间要通过一个interface来打通。

https://www.jianshu.com/p/d04f829e3330

http://ju.outofmemory.cn/entry/113174

我们用的是VLAN网络模式,这种模式下需要用到物理路由器,来打通各个VLAN的子网,这样就可以做到物理网络和虚拟网络(分属不同VLAN,可避免广播风暴问题),这种方案在中小规模私有云下,非常稳定可靠,性能也更好,也更接近传统IDC的网络模型,对传统企业的IT运维人员比较友好。