青云QingCloud 网络 相关问题帖子汇总



  • 问题

    私有网络的主机无法访问外部服务器?

    解决方案

    请检查您的外部服务器是否开启了下面的sysctl选项:

    net.ipv4.tcp_tw_recycle = 1

    它会造成基于位于NAT后面的主机无法跟外部服务器建立连接。请关闭这个选项。



  • 问题

    如何防止 DDOS 攻击?

    解决方案

    首先你要合理的部署后端资源,使用负载均衡器来分发你的请求到后端多台主机,并根据负载情况增减主机。这个过程可以手动来做,或者使用我们的 auto-scaling 来自动扩展。

    其次如果你的业务容易遭受大规模的 ddos 攻击,建议在前面挡一个专业的安全防护产品,目前在青云的应用市场里,可以选择“牛盾”,提供 5G 峰值的免费抗 D 服务。

    当然你还要在系统和业务层来做防护,比如写一个脚本定期 check 访问日志,用 iptables 屏蔽一些恶意来源 IP。

    亚太一区的用户,不能使用大陆厂商的安全服务,建议使用 Nexusguard 的抗 D 服务。



  • 问题

    在云计算平台中,内网拷贝文件慢该怎么办?

    解决方案

    Windows 主机间通过远程桌面共享驱动方式,在内网拷贝文件速度不到 10MB 是正常现象。这是由于远程桌面使用加密连接,传输过程中对文件加密。传输瓶颈在 CPU ,而不是网络带宽。

    建议 Windows 用户使用共享文件夹的方式在内网传输文件。



  • 问题

    在青云QingCloud 平台中主机无法访问网络

    解决方案

    应该是你主机的 NetworkManager 服务没有启动或者被删除了, 青云系统需要通过DHCP来获取地址。

    如果 NetworkManager 不能启用, 你就需要在 /etc/sysconfig/network-scripts/ifcfg-eth0 里面配置 eth0 通过 dhcp 获取地址:

    DEVICE=eth0
    
    BOOTPROTO=dhcp
    
    ONBOOT=yes
    

    然后用 ifup eth0 来启动网络



  • 问题

    在青云QingCloud 中如何把两个区的网络通过 GRE 相连?

    解决方案

    GRE 隧道指南

    名词解释
    公共配置:
    • 远端路由器IP(remote router): 隧道对端路由器的公网IP地址或域名,也可以是同区路由器ID
    • 密钥(key): 隧道的整型密钥
    GRE配置:
    • 本地点对点IP(local peer): 点对点通道本地地址;例如10.254.1.1
    • 对端点对点IP(remote peer): 点对点通道对端地址;例如10.254.1.2
    • 目标网络: 通过隧道可达的目标网络地址,所有去往这个网络的IP包都会通过GRE隧道发送;可以配置多个目标地址段。

    注解 点对点IP必须以10.254打头,不同隧道的点对点地址网段也必须不同。

    GRE 隧道

    L3 over L3 是 GRE 最常见用法,得到了所有主流网络设备的支持,也得到了各种操作系统的支持。

    GRE 隧道是一个很灵活的技术,可以用来组建各种网络拓扑,常见的树型、星型、总线型(串型)、环型和混合型均可实现。本指南不会全部描述,因为配置方法都是一样的。以下选择三种拓扑结构来做描述。

    简单的对连拓扑

    如下图所示,假设您在青云中的路由器使用的公网 IP 是 3.3.3.3,您自己数据中心的路由器使用的公网 IP 是 6.6.6.6,这两个路由器背后各连接有两个私有网络,它们将通过 GRE 隧道连接在一起。

    1. 在青云中的操作

    登录 WEB 控制台,点击左边导航条中的“网络”,在右边主显示区域 “路由器” 项下点击您的路由器,进入其详情页,切换至“隧道服务”页签,然后点击“添加隧道规则”。

    在弹出的对话框里,填写以下项目:

    • 协议: 默认为 GRE 协议
    • 名称: 为该隧道起个名字,比如 tun36
    • 远端路由器 IP: 在本例中为您数据中心路由器的公网 IP 6.6.6.6
    • 密钥: 一个两端共同使用的约定整型数字,比如 12345
    • 本地点对点 IP: 隧道在青云路由器这边的地址,比如 10.254.0.1
    • 对端点对点 IP: 隧道在您数据中心的地址,比如 10.254.0.2
    • 目标网络: 在本例中为您数据中心的两个私有网络 192.168.5.0/24、192.168.6.0/24

    确认无误后,点击“提交”,然后点击页面上方的“应用修改”按钮,以完成路由器的配置更新。这样就完成了在青云这端的隧道配置。

    另外,还需要去该路由器使用的防火墙规则中打开 GRE 协议。并记得 应用更改 。

    2. 在您数据中心设备上的操作

    因为隧道的对称性,还需要在您自己数据中心的路由器上进行隧道配置,具体配置方法取决于您使用的网络设备,请查询厂商的手册。这里给一个 Huawei 路由器的配置过程,供参考:

    [Quidway] interface Tunnel 0/0/0
    [Quidway-Tunnel0/0/0] ip address 10.254.0.2 255.255.255.0
    [Quidway-Tunnel0/0/0] tunnel-protocol gre
    [Quidway-Tunnel0/0/0] source 6.6.6.6
    [Quidway-Tunnel0/0/0] destination 3.3.3.3
    [Quidway-Tunnel0/0/0] gre key 12345
    [Quidway-Tunnel0/0/0] quit
    [Quidway] ip route-static 192.168.1.0 255.255.255.0 Tunnel0/0/0
    [Quidway] ip route-static 192.168.2.0 255.255.255.0 Tunnel0/0/0
    

    青云作为中心节点的星型拓扑

    如下图所示,假设您在青云中的路由器使用的公网 IP 是 3.3.3.3,您自己有两个数据中心,它们对外路由器使用的公网 IP 分别是 6.6.6.6、9.9.9.9,这三个路由器背后各连接有两个私有网络,它们将通过 L3 GRE 隧道连接在一起。

    上图中,黑色的路由器表示是这个星型网络的中心节点,蓝色的路由器表示接入节点。

    1. 在青云中的操作

    参照 简单的对连拓扑 一节中“1.在青云中的操作”的部分,创建一条到 6.6.6.6 的隧道后,在“隧道服务”标签页中点击“添加隧道规则”按钮,可以新建一条到 9.9.9.9 的隧道。

    在弹出的对话框里,填写以下项目:

    • 协议: 默认为 GRE 协议
    • 名称: tun39
    • 远端路由器 IP: 9.9.9.9
    • 密钥: 87654
    • 本地点对点 IP: 10.254.1.1
    • 对端点对点 IP: 10.254.1.2
    • 目标网络: 172.19.1.0/24、172.19.2.0/24

    确认无误后,点击“提交”,然后点击页面上方的“应用修改”按钮,以完成路由器的配置更新。这样就完成了在青云这端的隧道配置。

    另外,还需要去该路由器使用的防火墙规则中打开 GRE 协议。并记得 应用更改 。

    1. 在您数据中心设备上的操作

    因为隧道的对称性,还需要在您自己数据中心的这两台路由器上进行相应的隧道配置,具体配置方法取决于您使用的网络设备,请查询厂商的手册。

    青云作为接入节点的星型拓扑

    如下图所示,网络构成与 青云作为中心节点的星型拓扑 一节相同,唯一的不同之处是,这次 6.6.6.6 是中心节点,青云网络(3.3.3.3)的身份是一个接入节点。为了醒目,依然用黑色的路由器表示是这个星型网络的中心节点,蓝色的路由器表示接入节点。

    参照 简单的对连拓扑 一节中“1.在青云中的操作”的部分,创建一条到 6.6.6.6 的隧道。即完成了在青云中的操作。

    剩余的各条隧道均需要在您自己数据中心的这两台路由器上进行相应的配置,具体配置方法取决于您使用的网络设备,请查询厂商的手册。



  • 问题

    如何为CentOS 7配置静态 IP 地址?

    例:在 VPC 网络,如192.168.0.0/16,然后自定义一个私有网络192.168.1.0/24

    创建主机时绑定的是私有网络192.168.1.0/24,并制定了IP地址,192.168.1.10,

    登录主机看到该IP192.168.1.10在 网卡eth0上,但 /etc/sysconfig/network-scripts/目录下没有该eth0的配置文件,请问我如何找到这个配置文件(centos7)。

    需求是因为我要找到这个网卡禁用DHCP,然后配置一个桥接网络绑定到eth0上

    解决方案

    如果你想要为CentOS 7中的某个网络接口设置静态IP地址,有几种不同的方法,这取决于你是否想要使用网络管理器。

    网络管理器(Network Manager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活。默认情况下,CentOS/RHEL 7安装有网络管理器,并处于启用状态。

    CentOS 7系统配置上的变化解析 http://www.linuxidc.com/Linux/2014-09/107375.htm

    CentOS 7下搭建高可用集群 http://www.linuxidc.com/Linux/2014-10/107698.htm

    使用下面的命令来验证网络管理器服务的状态:

    $ systemctl status NetworkManager.service
    

    运行以下命令来检查受网络管理器管理的网络接口:

    $ nmcli dev status
    

    如果某个接口的nmcli的输出结果是“已连接”(如本例中的enp0s3),这就是说该接口受网络管理器管理。你可以轻易地为某个特定接口禁用网络管理器,以便你可以自己为它配置一个静态IP地址。

    下面将介绍在CentOS 7上为网络接口配置静态IP地址的两种方式,在例子中我们将对名为enp0s3的网络接口进行配置。

    不使用网络管理配置静态IP地址

    进入/etc/sysconfig/network-scripts目录,找到该接口的配置文件(ifcfg-enp0s3)。如果没有,请创建一个。

    打开配置文件并编辑以下变量:

    在上图中,“NM_CONTROLLED=no”表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理。“ONBOOT=yes”告诉我们,系统将在启动时开启该接口。

    保存修改并使用以下命令来重启网络服务:

    # systemctl restart network.service
    

    现在验证接口是否配置正确:

    # ip add
    

    使用网络管理器配置静态IP地址

    如果你想要使用网络管理器来管理该接口,你可以使用nmtui(网络管理器文本用户界面),它提供了在终端环境中配置配置网络管理器的方式。

    在使用nmtui之前,首先要在/etc/sysconfig/network-scripts/ifcfg-enp0s3中设置“NM_CONTROLLED=yes”。

    现在,请按以下方式安装nmtui。

    # yum install NetworkManager-tui
    

    然后继续去编辑enp0s3接口的网络管理器配置:

    # nmtui edit enp0s3
    

    在下面的屏幕中,我们可以手动输入与/etc/sysconfig/network-scripts/ifcfg-enp0s3中所包含的内容相同的信息。

    使用箭头键在屏幕中导航,按回车选择值列表中的内容(或填入想要的内容),最后点击屏幕底部右侧的确定按钮。

    最后,重启网络服务。

    # systemctl restart network.service
    

    好了,现在一切都搞定了。



  • 问题

    在青云QingCloud 中删除了一台主机,然后又从回收站恢复了这台主机。恢复出来的这台主机的基础网络IP地址没有了。该怎么恢复?

    解决方案

    在主机栏右键选择「网络」->「加入」。



  • 问题

    青云QingCloud 负载均衡器能不能加载SSL证书?

    解决方案

    青云QingCloud LB 使用的是 haproxy 技术,可以加载 https 的证书 SSL。



  • 问题

    在青云QingCloud 中如何搭建 FTP 服务?

    解决方案

    Linux 主机

    首先创建一个 Linux 主机(以 Ubuntu 为例),并在青云防火墙中打开 tcp 21 下行,并“更新规则”。 如果此主机是在私有网络中,除了防火墙规则,还需要在私网所连接的路由器中将所需端口转发给这个主机。

    下面简单介绍下安装 vsftpd 和 proftpd 的注意事项:

    * vsftpd 安装
    apt-get install vsftpd
    

    修改配置文件 /etc/vsftpd.conf 后,重启生效

    service vsftpd restart
    

    如果你的 ftp client 位于 NAT 之后,ftp server 必须启用 passive mode ,编辑 /etc/vsftpd.conf

    pasv_enable=Yes
    pasv_max_port=21000
    pasv_min_port=20000
    pasv_address=your.ftp.server.public.ip
    

    安全起见,vsftpd 默认配置是不允许 root 登录的。如果确实需要,可以在 /etc/vsftpd/user_list 文件中把 root 那一行删除或者注释掉, 同样把 /etc/vsftpd/ftpusers 文件中的 root 也注释掉。然后重启 vsftpd 就可以了。

    • proftpd 安装

      apt-get install proftpd
      修改配置文件 /etc/proftpd/proftpd.conf 后,重启生效

      service proftpd restart
      如果你的 ftp client 位于 NAT 之后,proftpd server 必须启用 passive mode , 在 /etc/proftpd/proftpd.conf 中打开 PassivePorts 和 MasqueradeAddress :

      PassivePorts 20000 21000
      MasqueradeAddress ftp.server.public.ip

    注解 被动模式的端口范围可以任意指定,不过请记得打开青云防火墙中对应的端口范围, 如果 FTP 服务器是在私有网络内,还要留意路由器内是否正确转发了所需端口。 还有修改配置文件后记得重启 FTP 服务使之生效。

    Windows 主机

    首先创建一台 Windows 主机,以 Windows Server 2003例,在青云防火墙中打开 TCP 21 下行规则,并“应用修改”。 如果此主机是在私有网络中,除了防火墙规则,还需要在私有网络所连接的路由器中将所需端口转发给这个主机。

    下面简单介绍下 FTP 服务器的安装步骤和注意事项,以 FileZilla 为例:

    * 安装

    点击 这里 下载安装包。解压并双击 .exe 文件进行安装。 若无特殊需求,按照提示选择默认选项安装即可。到最后一步时,点击“OK”完成安装。

    * 添加用户

    点击菜单中的“编辑 Edit” - “用户 Users”,在弹出的对话框中点击 “用户 Users” 区域中的 “添加 Add” 按钮,输入用户名,确认后可以设置用户密码,以及可访问的文件路径。


    用户添加设置完成后点击左下角的“确认 OK” 按钮完成操作。

    * 设置服务器

    如果你的 ftp client 位于 NAT 之后,则需要启用 FTP 服务的“被动模式 Passive Mode”, 具体设置步骤是:选择菜单中的“编辑 Edit” - “设置 Settings”,在弹出的对话框中点击“被动模式设置 Passive mode settings”。 并勾选“自定义端口范围 Use Custom Port Range”,并输入端口范围,例如:20000 - 21000。

    设置完成后点击左下角的“确认 OK” 按钮完成操作。

    注解 被动模式的端口范围可以任意指定,不过请记得打开青云防火墙中对应的端口范围, 如果 FTP 服务器是在私有网络内,还要留意路由器内是否正确转发了所需端口。

    完成以上操作后则完成了 FTP 服务器的搭建,可以开始连接服务器进行文件的传输操作。



  • 问题

    青云主机之间的网络带宽是多少?

    解决方案

    为了保证用户之间的公平,青云对主机之间的网络带宽限制为: 平均限制为 512Mbps,峰值限制为 1Gbps。



  • 问题

    青云的公网带宽上下行速率是对称相等的吗?

    解决方案

    为了提高用户在青云中的下载体验,对于公网IP的带宽小于 10Mbps 的,上行速率等同带宽,下载带宽自动提高到 10Mbps; 带宽大于 10Mbps 的,上下行带宽保持和申请带宽相同。



  • 问题

    欠费后的公网 IP 会被如何处理?

    解决方案

    对于通过青云备案信息验证的公网 IP,我们会在欠费之后为用户保留3天, 并发出欠费提醒的邮件;对于不需要备案或备案信息没有通过验证的公网 IP, 一旦欠费就会被系统释放回资源池。



  • 问题

    公网 IP 流量计费的具体统计方法是什么?

    解决方案

    如果公网 IP 的计费模式是按流量计费,则除了固定的 IP 地址价格外, 流量数据会每小时自动统计一次,统计方法是: 在即将扣费的时间范围内,分别对进、出数据量求和,然后取其中较大的值作为扣费依据。

    为了保持跟带宽计费一致的优惠策略(请见: 青云的公网带宽上下行速率是对称相等的吗 ) ,只有当下行速率超出 10Mbps 时才会对其扣费。例如:

    一个按流量计费的、带宽上限是 20Mbps 的公网IP,在一个扣费周期内有 30 分钟其下行速率一直保持在 18Mbps ,有 10 分钟其上行速率一直保持在 10Mbps , 则在即将扣费的时间范围内对进、出数据量求和结果如下(这里为了方便举例, 上下行速率假设一直稳定在一个固定值,而实际计算时使用的是采样间隔为1分钟的速率数据):

    进数据量之和 = 8Mbps(18 Mbps 减去优惠的 10 Mbps) * 1800(秒数) / 8 = 1800 MB (megabyte)

    出数据量之和 = 10Mbps * 600(秒数) / 8 = 750 MB (megabyte)

    因为进数据量之和大于出数据量之和,所以此1小时的实际扣费是 1800 MB / 1024 * 流量单价(每GB ** 元)

    警告 公网 IP 计费模式不能频繁切换,24小时内只能改一次。



  • 问题

    在青云QingCloud 为什么 80 端口被禁用?

    解决方案

    根据上级网管要求,对于一些对备案要求较为严格的区域,例如北京2区 (PEK2),用户需要完成备案才能使用 80 端口提供服务,在完成备案之前,80端口将被禁用。 在完成备案流程之后,用户需要将申请到的备案号填入公网 IP 对应的 “ICP备案” 信息字段中 (具体操作在公网 IP 的右键菜单 “设置 ICP 备案信息” 中), 待管理员审核通过之后,才能正常使用 80 端口的服务。



  • 问题

    在青云QingCloud 中 LB 的策略按域名转发问题

    解决方案

    规则内容为 “XXXX.com”, 表示匹配任何 “*.XXXX.com” 的域名的请求都会被转发,例如 “www.XXXX.com” 和 “site1.XXXX.com” 等。我们支持正则表达式(Perl Compatible Regular Expressions),例如你可以通过 “^XXXX.com$” 来实现精确匹配。

    讨论

    如果想实现a.com和x.a.com分发到不同的后端,该怎么去定义策略?

    解决方案

    ^a.com$

    ^x.a.com$

    使用2条精确匹配的策略。



  • 问题

    请教个问题,Docker 1.9 以后加入了 networking 组件,支持了 overlay 模式,那么 1.9 以后我们如果要用 overlay 网络还需要借助第三方开源方案吗?

    解决方案

    其实在Docker的1.9中版本中已经加入了官方支持的跨节点通信解决方案,而这种内置的跨节点通信技术正是使用了Overlay网络的方法。所以单纯使用Docker或者Swarm方案的时候就不需要了,但是其他的框架,比如Kubernetes依然需要。原因如下:

    Libnetwork是2015年5月1日Docker发布的容器网络管理项目。Libnetwork使用Go语言编写,目标是定义一个容器网络模型(CNM),并为应用程序提供一致的编程接口以及网络抽象。为什么后来发布的Kubernetes在网络管理方面,没有使用Docker中的Libnetwork呢?且听Google工程师怎么说。
    Kubernetes 1.0版本之前就已经具有基本的网络插件体系。与此同时,Docker也将libnetwork和CNM(容器网络模型)引入系统中使用。与之不同的是,Kubernetes网络插件系统却还停留在Alpha阶段。既然Docker已经发布并支持网络插件libnetwork,那问题来了,为什么Kubernetes没有使用libnetwork呢?毕竟大部分的供应商肯定会支持Docker的网络插件,为什么不选择使用相同的组件呢?
    深入讨论之前,首先我们要知道:Kubernetes是一个支持多容器的运行环境,而Docker只是其中一个容器而已。每一个运行环境都会去配置网络环境,所以当人们问“Kubernetes将会支持CNM吗?”时,他们真正的意思是“Kubernetes是否在Docker运行时下支持CNM?”。我们当然希望利用同样一个网络插件来支持所有的运行环境,但是这并不是一个绝对的目标。
    Kubernetes确实没有在Docker中采用CNM/libnetwork。事实上,我们一直在研究能不能用CoreOS提出的APP Container(appc)标准中的容器网络接口(Container Network Interface,CNI)替代它。为什么呢?这里有一些技术和非技术上的原因。
    首先,在Docker的网络驱动设计中,预先做了一些兼容的基本假设,这给我们带来不少的问题。
    比如在Docker中有一个“本地”驱动和“全局”驱动的概念。本地驱动是以一台机器为中心(例如“bridge”),不能实现跨机器节点的协作。全局驱动依赖libkv(一个抽象的键值对存数对象)可以实现跨机器节点的协作(例如:overlay)。libkv是一个非常底层(语义层面的)的键值对存储接口。为了能让Docker中类似overlay的全局驱动在Kubernetes集群运行,我们还需要集群系统管理员运行Consul、etcd或者ZooKeeper实例(参考multi-host networking),或者我们不得不在Kubernetes中提供我们自己对于libkv的实现。
    听起来后者更有吸引力一些,而且我们也正在尝试实现它。但是,libkv的接口太过于底层,而且它的架构模式也是Docker内部的量身定制版,我们要么直接暴露底层的key-value存储,要么提供key-value语义接口(在一个key-value系统上实现结构存储的API)。就起性能、可扩展性和安全性而言,以上两种方案都不是太合适。我们使用Docker网络的目标是简化操作,如果那样做的话,很明显会使整个系统将变得更加复杂。
    对于那些想运行 Docker 的全局驱动并有能力配置 Docker 的用户来说,Docker 的网络应该是“可行的”。对 Kubernetes 来说,我们不希望介入或影响 Docker 的配置步骤,并且不论 Kubernetes 这个项目今后如何发展,这一点应该都不会改变。Docker 的全局驱动是对用户和开发者来说增加了多余的负担,并且我们不会用它作为默认的网络选项,这也意味着使用 Docker 插件再没什么价值。
    Docker 的网络模型在设计上还做了很多和 Kubernetes 不兼容的假设。在 Docker 1.8 和 1.9 的版本中,它在实现“Discovery”时有一个根本性的设计缺陷,结果导致了容器中的 /etc/hosts 文件被随意改写甚至破坏,而且我们还不能轻易关闭“服务发现”这个功能。Docker在 1.10 的版本中,还计划增加捆绑一个新 DNS 服务器 的功能,而我们现在还不清楚这个功能能否被关闭。对 Kubernetes 来说,把命名寻址绑定在容器层面,并不是一个正确的设计—我们已经自己定义了一套 Service 命名、寻址、绑定的概念和规则,并且我们也有了我们自己的 DNS 架构和服务(构建在很成熟的 SkyDNS 上)。所以,捆绑一个 DNS 服务器这样的方案并不能满足我们的需求,而且它还有可能无法被关闭。
    除了“本地/全局”驱动这样的区分,Docker 还定义了“进程内”和“进程外”(“远程”)插件。我们还研究了下是否可以绕过 libnework 本身(这样就能避开之前所述的那些问题)来直接使用”远程“插件。不幸的是,这意味着我们同时也失去了使用 Docker 的那些“进程内”插件的可能,特别是”bridge”和”overlay”这样的全局插件。这又令使用 libnetwork 失去了很大一部分意义。
    另一方面来说,CNI 和 Kubernetes 在设计哲学上非常一致。它远比 CNM 简单,不需要守护进程,并且至少是跨平台的(CoreOS 的 rkt 容器支持 CNI)。跨平台意味着同一个网络配置可以在多个运行环境下使用(例如 Docker、rkt 和 Hyper)。这也非常符合 Unix 的设计哲学:做好一件事。
    另外,包装 CNI 模块来实现一个自定义的模块是非常简单的-通过一个简单的 shell 脚本就可以完成。相反 CNM 就复杂多了。因此我们认为 CNI 更适合快速开发和迭代。早期的实验尝试证明我们可以利用 CNI 插件来替代几乎所有 kubelet 中硬编码的网络逻辑。
    我们也尝试为 Docker 实现了一个 “bridge”CNM 驱动来使用 CNI 的驱动。结果表明这更加复杂了问题。首先 CNM 和 CNI 的模型非常不同,没有一个“methods”能把它们很好的兼容。其次,我们还是有之前提到的“全局”和“本地”以及 key-value 的问题存在。假设这是个本地驱动,那么我们仍旧要从 Kubernetes 中去得到相应的逻辑网络的信息。
    不幸的是,Docker驱动很难映射接入到类似Kubernetes这样的管理平台。特别是这些驱动使用了 Docker 内部分配的一个 ID 而不是一个通用的网络名字来指向一个容器所属的网络。这样的设计导致一个被定义在外部系统中(例如 Kubernetes )的网络很难被驱动所理解识别。
    我们和其它网络提供商将这些问题和其它一些相关问题都汇报给了 Docker 的开发人员。尽管这些问题给非 Docker 的第三方系统带来了很多困扰,它们通常被以“设计就是如此”的理由关闭了相关问题。通过这些举动,我们观察到 Docker 清楚的表明了他们对于有些建议的态度不够开放,因为这些建议可能会分散其一些主要精力、或者降低其对项目的控制。这一点让我们很担忧,因为 Kubernetes 一直支持 Docker,并且为其增加了如此多的功能,但同时 Kubernetes 也是一个独立于 Docker 之外的项目。
    种种原因致使我们选择了 CNI 作为 Kubernetes 的网络模型。这将会带来一些令人遗憾的副作用,虽然绝大部分都是一些小问题,比如 Docker 的 inspect 命令显示不了网络地址。不过也会有一些显著的问题,特别是被 Docker 所启动的容器可能不能和被 Kubernetes 启动的容器沟通,以及网络整合工程师必须提供 CNI 驱动来把网络完全整合到 Kubernetes 中。但重要的是,Kubernetes 会变得更简单、灵活并且不需要进行提前配置(比如配置 Docker 使用我们的网桥)。

    另外如果想对网络有更多的控制,比如指定IP地址之类的需求的话,也得换第三方的Overlay实现

    讨论

    因为1.9刚出来,不知道自带的组件是否成熟,以前weave、flannel、calico这种比较多,相对来说有很多人尝试过了的,我们也敢用

    是的,虽然他们也是采用IETF标准的VXLAN方式,但是据说部署上还是有一些问题,我没有试验过。

    嗯,好像是收购了socketplane,socketplane以前就是用vxlan+ovs的方式,我们现在对docker网络选择非常纠结,本来解决方案就太多,不知道用哪个好,现在1.9又出了overlay功能了,更不知道怎么选了。。。



  • 问题

    怎么样让基础网络的主机 访问 私有网络的主机

    解决方案

    需要先在路由器做端口转发,然后基础网络的主机再去访问路由器内网 IP 或内网域名别名(路由器ip可能会变,推荐内网域名)。

    这样经过端口转发,就能访问到内网对应的主机。



  • 问题

    创建的主机,设置的是基础网络,这个可以修改成私有网络么?

    解决方案

    可以,在主机详情页【绑定资源】处修改。



  • 问题

    如何使用 WEB 控制台来快速组织网络,实现复杂拓扑

    解决方案

    网络1.0

    在快速上手指南中,我们已经知道 WEB 控制台的基本用法, 但所举例子过于简单,在实际项目中,我们往往使用多台主机, 这时就涉及到如何组网的问题。 本篇指南旨在介绍如何使用 WEB 控制台来快速组织网络,实现复杂拓扑。

    总览

    为了行文方便,假设我们的任务是创建四台主机, 并两两放置在两个不同的二层网络里, 这两个二层网络还需要通过一个路由器在三层上连通,并将该路由器连接至互联网。

    network_for_multi_instance.gif

    操作

    第一步:创建两个二层网络

    登录 WEB 控制台,点击左边导航条中的“计算与网络 -> 私有网络”, 在右边主显示区域点击“新建”按钮,即可创建二层网络。 分别命名为 开发环境网络 和 生产环境网络。

    第二步:创建一个路由器

    点击左边导航条中的“计算与网络 -> 路由器”, 在右边主显示区域点击“新建”按钮,指明名称、防火墙、数量, 点击“提交”,即可。通常需要20秒左右来完成。

    虽然路由器可以复用任何防火墙, 但是强烈建议为路由器专门新建防火墙、并设立规则, 这样能更清晰地针对不同的云资源(主机或路由器) 来管理防火墙规则。

    第三步:将两个二层网络连接至路由器

    在私有网络的列表页中分别右键点击前面创建的两个二层网络, 选择”连接路由器“,在弹出的对话框中指定网络地址和路由器。 按前面总览中所设计的拓扑结构,开发环境网络使用 192.168.100.0/24 地址, 生产环境网络使用 192.168.200.0/24 地址, 它们都连接第二步中所创建的同一路由器。

    至此,我们就完成了网络拓扑,下面就可以开始创建主机了。

    第四步:创建主机,分别放置于两个二层网络

    创建主机的步骤已经在快速上手指南中描述过了,这里不再重复。 只有一个地方是有区别的,在指定将主机连接至哪个网络时, 不要使用默认的基础网络 vxnet-0 了, 而应该分别使用我们在第一步中创建的两个二层私有网络。

    第五步:申请一个公网 IP,并分配给路由器

    申请公网 IP 的操作已经在快速上手指南中描述过了,这里不再重复。

    申请到手的公网 IP 会出现在公网 IP 列表页中,右键点击它, 选择“分配到路由器”,在弹出的对话框中选定您创建的路由器,即可。

    这样,经由私有网络连接至这台路由器的主机就都能通过这台路由器 访问互联网(Internet)了。

    第六步:将私有网络内服务暴露在互联网上

    假定我们希望将主机 192.168.200.2 的 TCP 80 暴露出来, 依然使用 80 号端口,将主机 192.168.100.2 的 TCP 80 暴露出来, 并修改为 8080 号端口。

    打开路由器的详情页,在右边主显示区域里点击“端口转发”项, 再点击“添加规则”,在弹出的对话框中分别输入:

    源端口 内网IP 内网端口
    8080 192.168.100.2 80
    80 192.168.200.2 80

    然后,点击页面上方的“应用修改”以使得刚才添加的规则生效。

    注意:请确保打开了该路由器使用的防火墙配置里的 TCP 8080 和 TCP 80 两个下行规则。

    第七步:清理

    我们已经完成了组建网络拓扑的演示任务, 可以在以上各个资源的列表页中删除/销毁您不再需要的资源。



  • 问题

    既然基础网络的IP不会漂移了.那么私有网络存在的意义是?

    解决方案

    私有网络是二层隔离的网络,即是真正的“私有网络”; 而基础网络是“共享网络”,三层是互通的,只是说你得通过防火墙做IP层隔离,但不是真正二层隔离,同时安全级别不一样。


登录后回复
 

与 青云QingCloud 社区 的连接断开,我们正在尝试重连,请耐心等待