docker - VPN可扩展性测试客户端设置的问题

标签 docker testing scalability vpn openvpn

在此对我的第一篇文章表示歉意!到目前为止,大约一个星期前,我在OpenVPN论坛中提出了要求,但那里没有运气。这样,我的手指会越过运气!

摘要:
我目前在一个项目中,我们希望部署单个VPN服务器并允许多达500个客户端连接,同时通过几个客户端同时推送约80-120 Mbps的数据。
是否有人使用OpenVPN进行了可扩展性或性能测试?我不需要增加数量,但是我正在寻找稳定的空闲客户端连接。

测试台:
为了获得这些数字,我建立了以下测试平台:
•5台客户端PC
•1个服务器,带8核+ 64GB内存
o已将服务器配置为在地址超过1k的子网中动态提供IP
•1台PC模拟多个客户端连接。
客户端将在每个新连接之间以10秒的延迟启动。
o客户将使用相同的用户名密码进行身份验证
o客户端将从OpenVPN服务器动态获取IP

问题:
现在,我遇到的问题是如何使用最好是单个物理设备可靠地模拟500个客户端连接,并使它们保持稳定。到目前为止,周末的物理客户端PC都处于停滞状态。尽管无论使用5还是500,模拟的客户端连接都将失败。

我到目前为止尝试过的东西:

  • 单客户端PC(遵循本指南):
    一种。在单台客户端PC上,我创建了5/10/15/50/100 TAP适配器
    b。在客户端PC上,我创建了5/10/15/50/100配置文件。
    C。现在,我开始了客户端连接,并使它们保持空闲状态。
  • 问题:
    一种。当我开始大量连接25/50 +时,有时新连接的客户端会消耗已经分配的IP
    b。几乎总是闲置时,一旦我将RDP连接到计算机或开始对VPN进行ping扫描,设备将失去与服务器的连接。
  • 我尝试使用基于Hyper-V的VM进行类似的设置
  • 我已尝试使用具有静态IP的特定于客户端的配置文件来将虚拟机与客户端连接。
  • 我已尝试使用具有客户端IP地址和每个客户端唯一用户名的特定于客户端的配置文件与客户端连接的VM。

  • 可能的解决方案:
    我想知道使用Docker OpenVPN容器是否可用于模拟此测试?

    预先感谢您对我的安装提出的任何建议和反馈!很抱歉,冗长的帖子,但我不想遗漏任何细节。

    最佳答案

    花了一些时间来解决这个问题并通过OpenVPN论坛,我得出以下结论:

  • 在单个主机设备上运行多个OpenVPN客户端根本无法工作,并且会引起一些问题。
    现在的好消息是,如果您希望根据开放VPN社区对OpenVPN服务器进行压力测试,这仍然是有效负载,请参阅下面的OpenVPN Wiki摘录:

  • “对于100个以上的同时连接,在同一客户端实例上使用了多个并行的OpenVPN进程;尽管客户端将无法正确初始化,但它们仍应以相对现实的方式对服务器施加压力。”
  • 来自OpenVPN Wiki的Amazon EC2脚本用于过去的性能测试,看起来需要大量工作,并且在2012年进行了编辑,因此我们放弃让它们为我们工作。
  • 最后,docker方法似乎可以正常工作。目前,我们有一台具有250个docker实例的主机。我将在下周开始测试,如果有人对结果和方法感兴趣,请大声疾呼,我将分享所有信息,否则,我将不会再对该线程发送垃圾邮件。
  • 关于docker - VPN可扩展性测试客户端设置的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53264280/

    相关文章:

    hadoop - Spark 作业出错,出现 : Too many elements to create a power set 34

    Docker:无法从 Spring Boot 应用程序读取类路径资源

    docker - 当我将docker任务添加到Azure构建管道时构建失败

    android - 如何使用 Gradle Android 运行单个仪器测试

    r - 如何为 ggplot 绘图编写测试

    mysql - mongo 是否适合与 MySQL 一起使用?

    docker - Google App Engine 标准 Python 云构建

    docker - 错误响应 : Could not kill running container runc did not terminate sucessfully: container_linux. go:392: init process caused "permission denied"

    php - 在 PHPUnit 中,如何模拟父方法?

    erlang - 分布式 Erlang 的可扩展性如何?