本系列以私有云为例,将为大家讲述网易云网络服务的研发实践。

作者:张晓龙

浙江大学计算机学院本科、博士毕业。网易专业技术委员会委员、网易云计算基础设施研发负责人。专注于云计算、虚拟化、软件自定义网络(SDN)、分布式存储、大数据处理等技术。

在网易云网络服务研发实践(一)(二)中,我们介绍了第一代、第二代云网络服务的功能、网络逻辑架构、技术选型以及自研功能与优化。今天,我们详细介绍网易云网络部署参考方案。

部署架构

上图(点开看图更清晰)展示了网易私有云IaaS平台中第二代云网络服务的部署架构。如图所示,第二代云网络服务部署环境中的物理节点主要可分为三类:控制节点、计算/网络节点和公共服务节点。

>>>>控制节点

控制节点负责运行私有云IaaS平台中的计算/网络服务的主控调度(nova-scheduler、neutron-server),以及身份验证服务(keystone)与镜像服务(glance),是整个私有云IaaS平台的指挥中心。为了提高整个服务的请求处理能力与可靠性,我们部署了两个控制节点。每个控制节点上都部署了nova-scheduler、glance、keystone服务,并将对外提供API的glance-api、keystone服务做了负载均衡处理,从而提高了控制节点的可用能力。在此要注意的是,由于Neutron架构的限制,neutron-server目前只能单点部署。

>>>>计算/网络节点

在OpenStack的设计中,计算与网络服务在部署上是相对独立的,一个物理节点可以只提供网络服务,也只可以提供计算服务,同时还可以同时提供计算/网络服务。为了节约硬件成本并最大程度利用硬件资源以及提高云网络服务可用能力,私有云IaaS平台在物理节点上同时部署计算和网络服务,我们称这类物理节点为计算/网络节点.实际上,计算/网络节点负责提供计算虚拟化(云主机)和网络虚拟化(云网络)的能力。

计算/网络节点上部署了一系列OpenStack Nova和Neutron服务,以及一些依赖的系统软件:qemu/libvirt、Open vSwitch、Openvpn-server、Dnsmasq。在计算/网络节点中部署Nova组件方面,为了提高IaaS平台API的访问可用程度和性能,我们在每个计算/网络节点上都部署了nova-api,并使用了HAProxy实现了API访问的高可用。

在计算/网络节点中部署网络服务Neutron组件方面, neutron-openvswitch-agent(ovs-agent) 是一个重要且必须部署的Neutron子服务。它负责与底层的虚拟交换机Open vSwitch交互,为云主机提供最基本的网络设备,同时将所有计算/网络节点上的虚拟网络连接起来。而负责云主机IP自动分配的neutron-dhcp-agent(dhcp-agent)子服务、负责提供云主机三层访问能力的neutron-l3-agent(l3-agent)以及负责获取访问云主机元信息的metadata-agent子服务则不需要在每个计算/网络节点上都部署,只需在IaaS平台的部分计算/网络节点上部署即可。

>>>>公共服务节点

公共服务节点部署了私有云IaaS平台的计算/网络服务所依赖数据库、消息队列、缓存等基础服务。由于这些基础服务的稳定性直接影响了私有云IaaS平台服务的稳定性,我们将这些服务独立安装在专用的物理节点上单独运维,并做高可用部署以提高可靠性。

系统内核及Open vSwitch版本选型

除了依赖稳定的Neutron服务外,云网络服务的正常稳定地运行,还依赖一个稳定的底层Linux系统内核以及一系列系统软件。因此,如何选择系统内核版本以及这些系统软件特别是云网络所依赖开源虚拟交换机Open vSwitch的版本,也是研发云网络服务中要考虑评估的重要内容。

网易云网络服务选择使用Linux内核3.10.x版本,主要是考虑以下几点:

1、尽量保证一个内核满足全部下层平台的要求。在3.10.x版本内核中,所有虚拟化技术基本完成,包括KVM,Virtio,VXLAN以及LXC未来可能会使用到的user namespace。

2、Neutron所依赖的Open vSwitch模块在3.10.x版本内核下的支持也非常好,同时在我们的测试过程中,没有遇到过问题。

3、更重要的是Linux社区对Linux 3.10版本也提供长时间支持(LTS),后续修正的bug都会backport到3.10中,综合上述原因,我们选择Linux 3.10.x版本作为云计算平台唯一使用内核版本,并且后续会持续跟进3.10分支上的bug修复。

网易云网络服务目前使用Open vSwitch的2.1.2版本,一个重要的原因是Open vSwitch 的2.1.2版本中提供了一个核心功能:TCP包标记位。后续我们计划研发的防火墙功能会依赖Open vSwitch 2.1.2版本提供的这个功能。考虑到对Open vSwitch升级的代价,后续为了避免后续对Open vSwitch的升级,我们决定使用Open vSwitch的2.1.2版本。此外,虽然Open vSwitch 的2.1.2版本不是长时间维护版本,但是在我们内部几个月的测试过程中,未发现其有任何方面问题,并且持续稳定运行良好。

OpenStack关键配置介绍

OpenStack 的配置项成百上千,大部分配置项都是可以使用默认值的,否则光是理解这么多的配置项的含义就足以让运维人员崩溃,尤其是对那些并不熟悉源码的运维人员来说更是如此。下面将列举并详细解释网易云网络服务中所用到OpenStack的关键配置项及其意义。

Nova关键配置

Nova.conf

neutron_url = http://{neutron_api_url}:{neutron_api_port}

Neutron服务的API地址

network_api_class = nova.network.neutronv2.api.API

配置Nova使用Neutron而不是Nova-Network响应Nova中的网络API请求

libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtGenericVIFDriver

linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver

配置使用Open vSwitch创建虚拟机使用的网络设备

libvirt_use_virtio_for_bridges = True

为Qemu/KVM虚拟机的网络设备开启Virtio特性

service_neutron_metadata_proxy = True

开启Neutron的Metadata API代理服务

Neutron关键配置

Neutron.conf

core_plugin = ml2

配置Neutron的核心插件,通常我们都使用ML2作为Neutron的核心插件。

allow_overlapping_ips = True

在Open vSwitch的帮助下,我们可以让每个云环境租户拥有一个独立的二层网络互不影响,开启这个配置以允许不同的网络中可以出现相同重复的IP地址。

dhcp_agents_per_network = 2

配置每个网络中dhcp-agent的数量。每个dhcp-agent中都运行着一个Dnsmasq进程作为DHCP server响应租户云主机的DHCP请求,根据DHCP协议的机制,一个网络中每个DHCP server都可以响应client的请求不会有冲突,这样在每个云环境租户的网络中都运行两个dhcp-agent后,可以有效的防止单个dhcp-agent挂掉导致的虚拟机丢失IP的问题。

amqp_durable_queues = True

开启AMQP消息队列持久化,防止消息丢失造成的服务异常。

dhcp_agent.ini

interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver

配置dhcp-agent的interface driver。由于我们使用的是Open vSwitch,这里使用OVSInterfaceDriver。

tunnel_vxlan_mtu = 1400

tunnel_gre_mtu = 1400

配置VxLan和GRE隧道的MTU。

dhcp_delete_namespaces = True

配置dhcp-agent主动删除不用的namespace,以防止宿主机上可能出现的无用network namespace残留的问题。

l3_agent.ini/vpn_agent.ini

interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver

配置l3-agent/vpn-agent的interface driver。由于我们使用的是Open vSwitch,这里使用OVSInterfaceDriver。

router_delete_namespaces = True

配置l3-agent/vpn-agent主动删除不用的namespace,以防止宿主机上可能出现的无用network namespace残留的问题。

enable_dual_nat = True

开启l3-agent/vpn-agent节点的两次NAT功能,该功能前文详细介绍过。

ml2_conf.ini

type_drivers = local,flat,vlan,gre,vxlan,svlan

mechanism_drivers = svlan,OpenvSwitch,l2population

配置ML2的Type Driver和Mechanism Driver。Type Driver主要和数据库打交道,管理一些抽象的概念体;Mechanism Driver则主要和底层技术打交道,负责底层实现。在网易云网络实际应用中,主要使用的Type Driver是VXLAN和SVLAN。

local_ip = {server_local_ip}

配置ovs-agent的本地IP,配置错误将导致Open vSwitch网络不同。

enable_tunneling = True

配置使用Open vSwitch隧道,我们主要是用的是VXLAN隧道。

l2_population = True

配置使用L2 Population,减少广播造成的网络拥塞。

总结

使用Neutron组件替代Nova networking模块,为第二代云网络服务的设计提供了更多灵活性。Nova networking模块只提供最基础的几种网络接入方案,但是基于Neutron研发的第二外云网络服务提供的功能,权衡易用性、灵活性,我们能够设计出最适合使用的网络模型。Neutron从2012年诞生以来,发展非常迅速,核心方面实现了ML2架构,基于Open vSwitch的灵活网络框架,支持Flat/VLAN/隧道等连接方式,能够满足大部分网络结构需求。L3方面实现了可以灵活控制的Router,通过Router API可以随意连接两个或多个网络,并且还提供浮动IP与SNAT的支持。在外围支持方面,有VPN接入支持,能够把外部网络通过互联网接入到Neutron网络中。

虽然现在Neutron已经能满足大部分虚拟网络的需求,但是还有许多需要改进的地方,我们会继续跟进社区开发,同时补全社区遗漏的部分,同时也希望更多开发者加入到Neutron社区中。

网易云信∣真正稳定的IM云服务

ID:neteaseim 长按关注,惊喜就在下期

猛戳阅读原文,回顾《第2代云网络服务》

网易云网络部署参考方案-网易云网络服务研发实践|网易云相关推荐

  1. 网易云网络服务研发实践—第1代云网络服务|网易云

    本系列以私有云为例,将为大家讲述网易云网络服务的研发实践,将有3期连载.本篇主要介绍第1代云网络服务. 作者:张晓龙 浙江大学计算机学院本科.博士毕业.网易专业技术委员会委员.网易云计算基础设施研发负 ...

  2. 西门子低代码部署亚马逊AWS容器服务最佳实践

    ​ 1. MX云部署架构 西门子低代码官方文档介绍了如何部署西门子低代码应用到k8s的最佳实践.运行环境包括PostgreSQL数据库实例,或者其他数据库,Mysql.oracle等,本地文件存储系统 ...

  3. 网络WIFI摄像机方案主控芯片最全介绍

    IPC网络WIFI摄像机方案主控芯片最全介绍: 看到很多朋友在问,什么是网络摄像机的方案,网络WIFI摄像机的主控究竟有什么区别,该用什么方案的网络摄像机来监控好?  鑫联拓展科技公司整理了一些资料给 ...

  4. 【网络部署】校园网的网线接入路由器的lan口与接入wan口有何区别,如何设置校园网,接入lan口后如何访问路由器设置页面

    一.项目场景 鉴于最近没什么事做,抽空学一下网络部署方面的知识. 网络环境:校园网. 路由器:小米R3A路由器. 二.问题描述 2.1 无法进入路由器设置页面 在学到网关地址的时候,发现使用网关地址登 ...

  5. 数据中心网络架构 — 云网一体化数据中心网络 — 算力网络 — SDN 架构

    目录 文章目录 目录 算力网络 算力网络控制面技术 集中式算力网络控制面方案 分布式算力网络控制面方案 混合式架构方案 算力网络转发面及路由策略技术 算力网络 在 5G 及后 5G 时代,为了更迅捷高 ...

  6. 网易云基于Prometheus的微服务监控实践

    当监控遇上微服务 在过去数年里,微服务的落地一直都是业界重点关注的问题,其始终面临着部署.监控.配置和治理等方面的挑战.轻舟微服务平台是网易云为企业提供的一套微服务解决方案,其中微服务监控是其关注的重 ...

  7. 全球云计算大会起航,网易云阮良解读人工智能在产品中的创新实践

    9月20-22日,由上海市经济和信息化委员会指导,UBM China主办的2016第四届全球云计算大会·中国站(Cloud Connect China)在上海国际会议中心举行.Cloud Connec ...

  8. 内网kift私有网盘如何实现在外网公网访问?快解析映射方案

    KIFT是一款面向个人.团队.小型组织的网盘服务器系统,安装运行比较简单,开箱即用,下载解压,双击jar文件即可启动.因为是开源的,不少人选择使用KIFT做开源私有网盘,有能力的大佬还可以对它进行定制 ...

  9. 局域网网络监控和透明文件加密原理、需求、模式、实例、功能、部署、方案全攻略

    关键词:局域网,网络监控,全攻略,监控软件,监控原理,网络监控软件,上网行为管理,内网管理,透明文件加密,反复制,信息安全,流量监控,网桥模式,QQ聊天记录监控,驱动,WINPCAP缺点 第一章 什么 ...

最新文章

  1. java1.8之supplier
  2. les物流执行系统_【精益运营】立足智慧物流 推进仓储智能化稳步升级
  3. 程序安装mysql数据库_安装Mysql数据库
  4. Eclipse安装插件的几种方式
  5. php pcntl signal,php – 后续的pcntl_signal信号没有启动处理程序
  6. 去除listView和recyclerview滑动到顶部和底部边界的阴影
  7. mysql库与oracle库的区别_开源数据库Oracle与MySQL的SQL语法区别
  8. 电大计算机理工英语19年秋季,国开电大理工英语1单元自测5形考任务答案
  9. mysql8.0 i ha,centos7 mysql8.0 RPM软件包方式安装
  10. [20141124]sql server密码过期,通过SSMS修改策略报错
  11. aspectjweaver和aspectjrt的区别
  12. 细节至上——Splus微博设计之界面篇(转)
  13. GNOME-Shell-Extensions开发经验(一)Hello,world!
  14. Sorted Adjacent Differences
  15. Latex制作beamer幻灯片、写论文的基本语句
  16. php去除英文和标点,php实现过滤中文标点符号及过滤英文标点符号的示例代码
  17. 俞敏洪:35岁前如何实现自我增值?
  18. 第6章 关系数据理论—范式的介绍
  19. android 自定义铃声 代码,Android通过代码设置铃声
  20. 压力传感器/压力变送器分类

热门文章

  1. week9-东东学打牌
  2. which的用法总结c语言,which的用法
  3. 论文解读:《基于预先训练的DNA载体和注意机制识别增强子-启动子与神经网络的相互作用》
  4. 如果让你设计铁道部购票网站,你怎么做
  5. 什么是区块链,区块链又是什么?
  6. 持续掉粉,Mac App Store被开发者“打入冷宫”?
  7. UVA 815 Flooded!(洪水!)
  8. modtran matlab,大气辐射传输模型(6S,MODTRAN)
  9. 安卓开发者中心!那些BAT大厂的Android面试官到底在想些什么?持续更新中
  10. 【java毕业设计】基于javaEE+SSH+oracle的健康管理系统设计与实现(毕业论文+程序源码)——健康管理系统