我个人有关 Azure 网络 SLA、带宽、延迟、性能、SLB、DNS、DMZ、VNET、IPv6 等的 Azure 常见问题解答

Igor Pagliai(微软)   2014 9 28日上午 5:57 

最后更新2014 11 3 日(增加了 2014年欧洲 TechEd 大会新宣布的内容)。

重要提示:这篇文章中我提供的信息具有时间敏感性,因为这些信息未来可能会发生更改。我会尽量让这些内容保持最新状态,但是您还是应该阅读 Azure 官方文档源,对相关信息进行进一步确认。

过去三年内,我在 Azure IaaS方面做了比较深入的工作。在与合作伙伴共事的过程中,我被问到很多有关 Azure网络的问题,更具体地说,是有关虚拟网络 (VNET) VM 的问题。要提供恰当的答案并不总是那么容易,有时候文档内容不清楚或者会漏掉细节,而有的时候您可以自己去发现,但需要足够多的知识。因为我在这些问题中发现了一些重复出现的内容,所以我决定在这篇博客文章中写下我的个人常见问题解答列表。事先声明:虽然我来自微软,对 Azure有深入了解,但是我不会向您披露任何保留或机密信息。您在此处读到的内容可以由您自己再直接使用Azure时发现,或者可以直接使用官方和公开文档检索到。如果您有其他比较好的问题且答案会非常重要或者不容易检索到,请尽管在这篇文章下方添加评论。此外,关于 Azure 网络应该具备的新功能,如果您有相关建议或反馈,请使用以下链接提交您的想法或者为已有想法投票:

反馈论坛:网络(DNSTraffic ManagerVPNVNET

http://feedback.azure.com/forums/217313-networking-dns-traffic-manager-vpn-vnet/category/77469-virtual-networks-vnet

像往常一样,您也可以在 Twitter上关注我:@igorpag。谢谢。

Azure是否为 VM 网络带宽提供 SLA

我对几乎所有 VM型号都进行了 VM 带宽测试,发现整个过程中结果都非常一致。因为官方数字尚未披露,所以我不会共享我的测试结果。您可能在 Internet上找到了一些有关各种 VM SKU最高网络带宽的旧表格和信息,但不要相信这些表格和信息,因为它们已经过期,而且 Azure基础结构在此过程中已经有了发展。您仍可以使用这些信息做一个大概了解,但是您将需要等待官方发布相关的 SLA

Azure是否为 VM VM 的网络延迟提供 SLA

在我的测试和项目中,Azure网络的延迟性能都表现优异。至少据我所知,没有任何云供应商可以通过正式的 SLA为两台不同 VM 之间的最高网络延迟做保证。您自己可以很轻松地做个测试,深入了解平均延迟,但是在测试标准方面您需要非常小心。首先,您需要在一天中的多个时段进行测试,包括峰值时段和非峰值时段;在一周中的多个日子进行测试,包括周末和工作日;最后,您应该计算平均值,按延迟从小到大排序后关心前 95%的数据,以消除峰值和偶发奇怪值。此外,不要假设所有 Azure 数据中心的延迟都一样。如果您要自己进行测试,我推荐您使用 SYSINTERNAL套件中的 PSPING工具,可从此处下载:http://technet.microsoft.com/zh-cn/sysinternals/bb896649.aspx。这款工具的优点在于,它不使用 ICMP,这样就没有跨越防火墙和负载平衡器的问题,您可以决定使用哪个 TCP端口。非常重要的是,您不但可以测试延迟,还可以测试带宽。有关使用该工具进行 Azure延迟测试的详细信息,您可以阅读我之前的一篇博客文章:

Azure网络延迟和 SQL Server优化

http://blogs.msdn.com/b/igorpag/archive/2013/12/15/azure-network-latency-test-and-sql-server-optimization.aspx

另一个需要考虑的复杂性因素是两台 VM Azure 数据中心中的位置:两台 VM 是在同一个 Azure 群集中还是在不同的群集中?如果在不同的群集中,延迟应该会因为有额外的跃点而稍微增加。再说一次,这没有官方文档。更有趣的是,您没办法知道 VM在哪个 Azure 群集中,除非您向 Microsoft支持提出申请进行询问。但是将 VM并置于同一个 Azure群集中却有快捷方法,具体内容请参阅下一部分。

Azure数据中心到数据中心的流量是否会经过公共 Internet

不会。通过 VPN连接的、不同数据中心中 VNET之间的流量会一直留在 Microsoft自己的网络主干中,请参阅以下演示文稿中的第 34张幻灯片:

MicrosoftAzure网络技术介绍及新增功能

http://channel9.msdn.com/Events/TechEd/Europe/2014/CDP-B227

此外如果使用 ExpressRoute连接 VNET流量也不会经过公共 Internet而是使用私有租赁线路。 

是否可以将 Azure公共 IP 地址加入白名单

可以所有 Azure公共 IP 范围都公布在以下链接中。如果因为安全原因,您想在内部部署网络中将这些 IP加入白名单,您可以按区域而不是按服务,选择性地执行该操作。

Microsoft Azure数据中心 IP 范围

http://www.microsoft.com/zh-cn/default.aspx

如果您依赖特定的 Azure资源,例如 Azure SQLDB实例或 Blob 存储帐户,请注意您看到的、用于解析具体 DNS名称的分配 IP 可能会在没有通知的情况下发生更改。 重要提示:对于 Azure 使用的 Internet IP,请勿依赖任何地理定位服务,因为这些服务可能会报告错误信息,有关详细信息,请参阅以下博客文章:

Microsoft Azure在美国区域使用非美国 IPv4地址空间

http://azure.microsoft.com/blog/2014/06/11/windows-azures-use-of-non-us-ipv4-address-space-in-us-regions 

如果您创建了自己的云服务,想要使用逆向 DNS对该服务进行验证,您可以通过为云服务 VIP启用 PTR 记录注册(由 Azure 提供)以实现该目的,具体说明请参阅以下链接:

宣布:适用于 Azure云服务的反向 DNS

http://azure.microsoft.com/blog/2014/07/21/announcing-reverse-dns-for-azure-cloud-services

请注意,与云服务关联的虚拟 IP (VIP)在某些情况下可能会发生改变,如果想要百分之百确保不发生这种情况,您需要启用预留 IP”功能,具体说明请参阅以下博客文章:

云服务和虚拟机的预留 IP地址

HYPERLINK"http://blogs.msdn.com/b/azchina/archive/2014/07/04/reserved-ip-addresses.aspx"http://blogs.msdn.com/b/azchina/archive/2014/07/04/reserved-ip-addresses.aspx

是否可以将 VM放在同一个群集中,以缩短网络延迟?

可以,这是可以实现的,但是因为最近引入了区域虚拟网络,所以流程发生了改变,具体说明请参阅以下博客文章:

区域虚拟网络

http://blogs.msdn.com/b/azchina/archive/2014/07/04/regional-virtual-networks.aspx

您基本上不需要创建与虚拟网络 (VNET)绑定的关联组 (AG),只要在创建 VM时指定 AG 即可。您即使使用了区域虚拟网络,也可以实现在同一个 Azure群集中进行并置。请注意,所有新的 VNET在默认情况下都是区域虚拟网络,您将无法继续在 Azure门户中创建本地虚拟网络。此外,已经存在的 VNET将自动迁移到区域虚拟网络中,无需用户干预。现在我还不清楚未来 AG机制是否会被抛弃,但现在 AG机制仍然可以按照我刚才为您说明的方式使用。

我无法确认的是关联组的发展方向:在我看来,但这只是个人观点,随着区域网络的出现,如果 Microsoft 通过某种方式在区域网络内保证了一种统一的延迟边界,关联组的存在将没有意义。

Azure VM中的“*.internal.cloudapp.net”DNS后缀是什么?

如果您构建 Azure VM并将其加入到 Azure虚拟网络中,在您尝试使用 VM主机名称(清楚地说就是旧版 Netbios名称)对这台 VM 执行 ping 操作时,您会看到以下画面:

从这张图片中您可以看到,FQDN中有两个奇怪的部分:cloudapp.net没有什么奇怪的,但是internala3是什么?您可以很容易地猜到internal Azure 内部 DNS (iDNS)用于托管 VM 记录并解析至内部 VM IP (DIP)的默认 DNS 子区域。而a3有点复杂:简单地说,它描述了 VM在特定 Azure 数据中心中所处的网络区域。这些区域没有相关的官方文档或者列表,所以不要细究,但是请注意,它不但在 Azure数据中心之间会发生变化,在同一个数据中心内也会发生变化。

连接不同云服务中的 VM会不会产生延迟开销?

答案是不会,或者至少是可以忽略。不久前,我和多个合作伙伴合作,将应用程序 VM放置到了一个云服务中,然后将后端 VM (SQL Server)放置到了另一个云服务中。如果您想要使用 SQL Server AlwaysOn可用性组 (AG) 机制,这是一种典型情况。虽然应用程序 VM将通过 Azure 负载平衡器 (SLB) 与后端 VM 连接,但是网络延迟开销非常小,因为 Azure中有一种有趣的网络优化功能。在两台 VM初次进行 TCP 连接握手时,Azure 会识别出该通信是两个内部资源之间的通信,并允许直接进行通信,这与同一个云服务内使用 DIP进行网络连接的情况相同。您可以在我下面这篇博客文章中查阅我获得的详细测量数据:

Azure网络延迟和 SQL Server优化

http://blogs.msdn.com/b/igorpag/archive/2013/12/15/azure-network-latency-test-and-sql-server-optimization.aspx

Ping Tracert 工具在 Azure 虚拟网络内部是否有用?

有用,这两种工具可以在 VNET内完美工作,甚至可以通过 VPN连接,在内部部署网络对 VNET使用。如果您尝试跨越 Azure负载平衡器 (SLB),这两个工具将不起作用。

Azure负载平衡器 (SLB)是否会使用轮询策略分发传入连接?

这是对 SLB工作方式的常见误解。实际上,Azure SLB是第 4 层软件负载平衡器,使用 5元组 IP、源端口、目标 IP、目标端口、协议类型)计算用于将流量映射到 VIP 后的可用服务器的哈希函数。选择哈希函数是为了让分发到服务器的连接随机化,而不是完美地轮询。此外,至少到目前为止,还不支持会话关联。

Microsoft Azure负载平衡服务

http://blogs.msdn.com/b/azchina/archive/2014/05/26/microsoft-azure-load-balancing-services.aspx

2014 10月,Azure 引入了一种称为源 IP 关联(也称为会话关联或客户端 IP 关联)的新分发模式。Azure 负载平衡器可以配置为使用 2 元组(源 IP、目标 IP)或 3元组(源 IP、目标 IP、协议)将流量映射到可用服务器上。使用源 IP关联,同一客户端计算机上发起的连接都会转到同一个 DIP端点。

Azure负载平衡器新分发模式

http://azure.microsoft.com/blog/2014/10/30/azure-load-balancer-new-distribution-mode

Azure负载平衡器 (SLB)是否支持 SSL 终止

AzureSLB 现在还不支持 SSL终止您必须在每台 VM或每个 Web/Worker Role实例中处理 HTTPS加密和解密的终止过程。这是 Azure网络团队正在考虑改进的一个方面。 

允许在负载平衡器上进行 SSL终止

http://feedback.azure.com/forums/217313-networking-dns-traffic-manager-vpn-vnet/suggestions/4573108-allow-ssl-termination-at-the-load-balancer

我是否可以不使用 Azure SLB,而使用自己的负载平衡器?

可以,使用 Azure SLB不是强制性的,Azure有一种称为基本级的特定虚拟机,与标准 SKU 相比,基本级虚拟机的价格低 27%

基本级虚拟机

http://blogs.msdn.com/b/azchina/archive/2014/07/02/basic-tier-virtual-machines.aspx

虽然基本级不提供自动伸缩功能,但是通过可用性集,您可以获得 99,95% 的可用性。此外,请注意,不是所有型号的CPU和 RAM 都有基本级:

VM选择基本级后,您就可以安装自己的负载平衡器软件了。

我是否可以暴露 VM的整个端口范围?

可以,Azure有一个称为实例级公共 IP地址的特殊功能,可以为 VM提供公共实例 IP”(PIP),并在默认情况下打开整个端口范围,无需创建任何端点。使用正常的 VIP,您最多只能创建/打开 150个端点/端口,如果您要打开大量端口,这个功能可以满足您的要求。

实例级公共 IP地址

http://msdn.microsoft.com/zh-cn/library/azure/dn690118.aspx

加入了 VNET VM 可以支持多少连接?

对于 Windows ServerVM可以支持大约 50 万条 TCP 连接,但是您需要小心,在达到这个阈值前可能会出现其他潜在限制:如果您通过 Azure负载平衡器端点将 VM暴露给 Internet流量,您可能会受到 SLB容量或 DDOS 安全机制的限制。实际上,在 SLB 或端点限制方面并没有相关的公共文档,连接数量和网络带宽方面也没有,所以您需要自己进行性能测试,确保一切正常运行。

我是否可以有多个 VNET网关?

现在一个 VNET只能有一个网络网关:如果您配置多个隧道,这些隧道会共享相同的最大网络带宽。

从上表中您可以看到,根据网关 SKU的类型(默认或高性能)和连接类型(S2S VPN Express Route),您可以创建的最大隧道数量是有限制的。

Azure是否提供 DDOS 网络保护?

提供,Azure基础结构设计为在网络受到源于 Internet或内部其他租户 VM DDOS 攻击时提供保护。有关详细信息,请参阅以下白皮书: 

                http://download.microsoft.com/download/4/3/9/43902EC9-410E-4875-8800-0788BE146A3D/Windows%20Azure%20Network%20Security%20Whitepaper%20-%20FINAL.docx

 请注意以下要点:

  • Windows Azure DDoS 防护系统的设计目的不仅包括抵御外部攻击,还包括抵御内部攻击。
  • Windows Azure 会监控并检测内部发起的 DDoS 攻击,并将发起攻击的 VM 从网络中移除。
  • Windows Azure 的 DDoS 保护也可以为应用程序提供帮助。但是,单个应用程序仍然可能会成为攻击目标。所以,客户应主动监控 Windows Azure 应用程序。

我是否可以在 Azure虚拟网络内部使用 IPv6

经确认,对 IPv6的支持仍在开发过程中,您可以参阅以下链接: 

在整个 Azure平台支持 IPv6

http://feedback.azure.com/forums/217313-networking-dns-traffic-manager-vpn-vnet/suggestions/4992369-support-ipv6-throughout-the-azure-platform

Azure 常见问题中的其他评论 http://azure.microsoft.com/zh-cn/pricing/faq

过去几年Microsoft在帮助客户从 IPv4平稳过渡到 IPv6 方面起到了重要作用。迄今为止Microsoft已在其许多产品和解决方案 Windows 8 Windows Server2012 R2中建立了 IPv6支持。Microsoft致力于通过 IPv6 扩展 Internet 的全球性功能并实现各种有用且激动人心的方案,包括点对点应用程序和移动应用程序。在 Azure环境中启用 IPv6 的基础工作正在进行中。但是,我们目前无法公开 IPv6支持正式发布的日期。

Azure虚拟网络内是否支持 UDP广播和多播?

VNET内,甚至是跨 Azure SLB都不允许这种通信类型。

在虚拟网络内支持多播

http://feedback.azure.com/forums/217313-networking-dns-traffic-manager-vpn-vnet/suggestions/3741233-support-multicast-within-virtual-networks

VM上是否可以有多个 NIC

可以,2014 年 10 月的欧洲 TechEd 大会上已经宣布了这项功能。请注意,添加更多的 NIC 不会为您增加更多带宽,所有 NIC 都会共享 VM 级别获得的限值。现在最多可以有 4 个额外的 NIC 且不需花费任何额外的成本,具体数量会因为 VM 型号的不同而发生变化:

  • 大型 (A3) 和 A6:2 个
  • 超大型 (A4) 和 A7:4 个
  • A9:2 个
  • D3:2 个
  • D4:4 个
  • D13:4 个

请注意,这其中存在一些限制,请确保阅读以下博客文章中关于多个 NIC的功能的常见问题解答和限制部分:

Azure中的多个 VM NIC和网络虚拟设备

http://azure.microsoft.com/blog/2014/10/30/multiple-vm-nics-and-network-virtual-appliances-in-azure

值得一提的是,现在还可以在整个 VM生命周期中保持 NIC的以太网 (MAC) 地址不变。

我是否可以在虚拟网络内避免使用 DHCP

可以,当您将一台 VM加入 Azure 虚拟网络时,默认情况下这台 VM 将使用由 Azure 内部 DHCP 自动分配的内部 IP (DIP),先在您定义的地址范围内生效,最终在您指定的子网中生效。这个 IP 将拥有无限长的租赁时间,但在
特定情况下可能会发生改变,例如您通过取消配置停止 VM时(默认行为)。如果要混合使用 DHCP动态分配的 IP 和静态分配的 IP,建议使用不同的子网,避免可能发生的地址冲突。有关详细信息,请参阅以下博客文章:

虚拟机的静态内部 IP地址

http://blogs.msdn.com/b/azchina/archive/2014/06/05/static-internal-ip-address-for-virtual-machines.aspx

是否可以针对我的 Azure VM运行网络渗透测试?

可以,您可以这样做,但是强烈建议在运行测试前遵循以下所述的具体流程,否则 Azure监控和防御系统会被触发并将您的连接、IP/ VM加入黑名单。您需要从 http://download.microsoft.com/download/C/A/1/CA1E438E-CE2F-4659-B1C9-CB14917136B3/Penetration%20Test%20Questionnaire.docx 下载一份表单,填写必要的信息,然后向 Azure 客户支持开立支持表单并指定“Support Type: Billing”(支持类型:计费)、“Problem type: Legal andCompliance”(问题类型:法律和合规)以及“Category: Request for penetration testing”(类别:渗透测试请求):

Azure VPN保证的带宽是多少?

Azure VPN 没有最小保证带宽,唯一提供的 SLA与高可用性有关 (99,90%),您可以从以下链接下载相关文档。如果您在 Internet上搜索公共内容,您可能会找到多个消息来源,宣称有 60 100MB/秒的多个最大带宽值:这通常也是我个人测试中得到的值,我想再强调一遍,没有最小保证带宽。上限可能由支持 VPN软件 Azure 侧的 VM 型号(小型)决定,我听到有传言说未来会改进,但还没有官方消息。

Microsoft Azure云服务、虚拟机和虚拟网络 SLA

http://www.microsoft.com/zh-cn/default.aspx

VHD I/O 是否会计入 VM网络带宽上限?

不会。与 IaaS VM VHD访问相关的 I/O 将计入存储 IOPS 限值,但不计入网络限值。这似乎是一个复杂的问题,但因为持久的 VM存储是联网到存储服务的,所以有些客户和合作伙伴会经常问这个问题。有关 Azure存储的伸缩目标的官方数字,请参阅以下链接:

Azure存储的可伸缩性和性能目标

HYPERLINK"http://msdn.microsoft.com/library/azure/dn249410.aspx" http://msdn.microsoft.com/library/azure/dn249410.aspx

如果您使用一些特殊功能,例如 SQL Server 2014 Azure Blob存储集成或 Azure File(在 SMB上),这些特殊功能在计入目标服务可伸缩性和性能限值的同时,也会计入 VM网络带宽限值。

更新:有关 SQL Server 2014 Azure Blob存储集成的新白皮书

http://blogs.msdn.com/b/igorpag/archive/2014/06/22/update-new-white-paper-on-sql-server-2014-and-azure-blob-storage-integration.aspx

MicrosoftAzure File服务简介

http://blogs.msdn.com/b/azchina/archive/2015/01/13/introducing-microsoft-azure-file-service.aspx

我是否可以为我的应用程序流量使用 A8/A9VM Infiniband NIC

这要看情况。我已经被多次问到这样的问题例如是否可以为 SQLServer AlwaysOn 可用性组复制流量使用Infiniband NIC因为Infiniband NIC可以提供高带宽、低延迟连接以及 RDMA支持。在这种情况下,答案是不可以。这种 NIC不提供一般的 TCP/IP连接,所以所有应用程序将无法在Network Direct接口和 MS-MPI协议上通信。

Windows Azure的新高性能功能

http://blogs.technet.com/b/windowshpc/archive/2014/01/30/new-high-performance-capabilities-for-windows-azure.aspx

我是否可以在 Azure中创建 DMZ

可以。2014 10 月的欧洲 TechEd 大会上引入了网络安全组”(NSG)之后,现在已经可以实施全功能的 DMZ,严格隔离同一个 VNET中的子网之间的流量。

网络安全组可以应用于子网(虚拟网络内),也可以应用于单个虚拟机,从而启用两层保护。网络安全组内的规则可以独立于虚拟机进行修改和更新,从而允许在虚拟机生命周期以外管理访问控制列表。

Azure ILB是否可以用于增强网络安全?

可以,但需要澄清安全帮助是什么,因为关于这个功能的工作方式有一些困惑。这个功能本质上可以帮助增强安全,因为它可以让您在使用 Azure SLB时定义一个(或多个)不暴露给 Internet的负载平衡端点,进而增强安全。但是,这个功能不是一种分隔机制,因为即使使用 ACL,如果不使用 ILBVNET中的资源还是不会被隔离,所有 VM都可以通过开放、全面的连接功能与其他所有 VM连接。基于相同的原因,ILB不能用于实现 DMZ

 

如果您想要构建真正的 DMZ配置,建议阅读这篇博客文章前面的我是否可以在 Azure中创建 DMZ 部分。

是否可以在虚拟网络中添加 Azure PaaS服务?

可以。Microsoft最近开始为 VNET 增加添加平台 PaaS 服务的功能:添加平台 PaaS 服务后,您可以在 IaaS VM PaaS 服务之间获得双向访问权限。现在您可以为 Azure VNET添加网站和 HDInsight HBASE群集,未来有望增加更多服务: 

Azure网站虚拟网络集成

http://azure.microsoft.com/blog/2014/09/15/azure-websites-virtual-network-integration

Azure虚拟网络中配置 HBase群集

http://azure.microsoft.com/zh-cn/documentation/articles/hdinsight-hbase-provision-vnet/

如果你有任何疑问, 欢迎访问MSDN社区,由专家来为您解答Windows Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。

本文翻译自:http://blogs.msdn.com/b/igorpag/archive/2014/09/28/my-personal-azure-faq-on-azure-networking-slas-bandwidth-latency-performance-slb-dns-dmz-vnet-ipv6-and-much-more.aspx


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
哦,我理解错了你的问题。Azure Active Directory是微软提供的一种身份验证和授权服务,可以用于管理组织内的用户和应用程序。如果你想在Java应用程序中使用Azure AD进行身份验证,你可以使用Azure AD提供的Java SDK来完成。具体来说,你需要完成以下步骤: 1. 在Azure门户中创建一个Azure AD应用程序,并记录下应用程序的客户端ID和客户端机密。 2. 在Java应用程序中添加Azure AD Java SDK的依赖项,并使用客户端ID和客户端机密来初始化一个身份验证对象。 3. 使用身份验证对象来获取访问令牌,并将令牌用于调用Azure AD保护的API。 下面是一个使用Azure AD Java SDK进行身份验证的示例代码: ``` import com.microsoft.aad.msal4j.*; public class AzureADAuthExample { public static void main(String[] args) throws Exception { String clientId = "<your-client-id>"; String clientSecret = "<your-client-secret>"; String authority = "https://login.microsoftonline.com/<your-tenant-id>/"; IConfidentialClientApplication app = ConfidentialClientApplication.builder(clientId, ClientCredentialFactory.createFromSecret(clientSecret)) .authority(authority) .build(); ClientCredentialParameters parameters = ClientCredentialParameters.builder(Collections.singleton("<your-scope>")).build(); IAuthenticationResult result = app.acquireToken(parameters).get(); // Use the access token to call Azure AD protected API // ... } } ``` 在这个示例中,你需要将`<your-client-id>`、`<your-client-secret>`、`<your-tenant-id>`和`<your-scope>`替换为你自己的值。`<your-scope>`表示你要访问的API的范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值