我的主机向我收取每月50美元的费用,将我的服务器放在同一个VLAN上,以便使用networking负载平衡function创build一个群集。 我真的不需要拆分服务器之间的负载,我正在寻找一种简单的方法来创build故障转移scheme,以防止服务器故障。 不过,我认为这个费用是小贵的。 有没有什么办法可以在不使用NLB的情况下创build群集? 也许是一些监视我的主服务器,并更改域名的DNS当它closures?
数据包如何从networking接口队列调度到CPU,然后再转发到线程进行处理? 什么需要考虑到如何在队列,硬件中断vs softirqs,CPU /内存/应用程序/线程局部性,multithreading与多进程守护进程中散列数据包,以避免尽可能多的数据包重新计划/复制尽可能? 我有一个使用Linux 2.6.32(yes,old)的Debian amd64上运行16个本地线程的multithreadingnetworking守护进程(比如Unbound resolver),因此应用程序负载分布在16个CPU上。 网卡是bnx2(BCM5709S),支持8个MSI-X rx / tx队列。 每个队列的IRQ通过在/ proc / irq / n / smp_affinity中静态映射中断关联被分配给一个单独的CPU(irqbalance从来没有做好),队列哈希types(RSStypes)是默认的(src + dst ,TCP sport + dport),使用默认的散列键。 所有这些都有助于传播负载,但不是平均的:通常有一个应用程序线程执行两倍于其他线程的工作(=每秒请求数),一个CPU(可能是处理该特定线程的CPU)的softirq速率是其他线程的两倍的CPU。 CPU已经启用了超线程,但是我还没有做任何事情来传播负载到'真正'的核心(我真的应该)。 Linux提供了一个相当全面的networking缩放文档 ,但我错过了一些空白: 该文件说这关于RSSconfiguration: 如果设备支持足够的队列,则典型的RSSconfiguration将是每个CPU具有一个接收队列,否则对于每个存储器域至less一个接收队列,其中存储器域是共享特定存储器级别的一组CPU(L1,L2 ,NUMA节点等)。 问:如何确定我的服务器的CPU /caching/内存域configuration? 有关接收stream量转向(RFS)的信息似乎回答了一些关于将数据包传送到正确的CPU /线程的问题: RFS的目标是通过将数据包的内核处理引导到消耗数据包的应用程序线程正在运行的CPU来增加datacache hitrate。 问:在DNSparsing的情况下,通常有一个查询包和一个应答包。 使用multithreading守护进程,只有一个线程运行bind()+ recvfrom(),因此在将工作调度到其他线程之前,必须处理所有新的传入数据包? 这个特殊用例会从分叉操作中受益吗(每个CPU有一个进程)呢? 问:接收stream量转向后,通常最适用于multithreadingTCP守护进程? 问:你将如何确定是否进行multithreading或多进程操作? 显然有共享内存和数据结构,资源争夺等,但我在考虑包stream和应用程序监听器。 问:如果没有接收stream量转向或简单的UDP服务,数据包是否能到达“错误的”CPU,因此会被重新安排到“正确的”CPU? 这会触发一个NET_RX softirq? 问:NIC队列和CPU之间是否有NET_RX softirq? CPU和侦听线程/进程之间是否还有一个? 如果接收线程将数据包安排到工作线程,是否还有另外一个可能性? 太糟糕了,Ben Hutchings的netconf […]
让我先说这个,说我不是系统pipe理员,我是程序员。 最近,我们的系统pipe理员安装了F5负载平衡器。 从那以后,我注意到,每当请求超时并最终抛出一个500,负载均衡器就会向我们的另一台服务器发送相同的请求。 即使脚本实际上仍在运行,IIS也会发送超时响应。 即使脚本运行超过5分钟,POST请求也会被复制。 这对我来说似乎是一个潜在的问题,特别是涉及到客户账单的电子商务网站。 这只是我们一些较长的运行脚本的一个问题(但这是一个严重的问题)。 我被告知,这是预期的行为,我们将不得不改变我们的代码来符合。 所以我的问题是: 这是预期的行为? 除了用户不需要刷新之外,负载平衡器在超时之后复制请求的优点是什么? 有了这个架构,如果运行一个使服务器停止运行或耗尽资源的脚本,它将最终在两台服务器上运行。 这真的是最佳吗?
我负载testing负载平衡的不同选项,并从Nginx,haproxy和清漆得到的结果很差。 我在Rackspace有一个4GB的负载均衡器,击中4x1GB的应用服务器。 我打了一个名为“/慢”的url,在响应之前故意等待500毫秒。 如果我直接点击应用服务器,它可以处理每秒1600-1800的连接速度。 如果我点击Nginx负载平衡器,它只能处理大约2000个连接。 我希望更接近4×1600 = 6000.下面是我用来testing它的命令。 这是在40个256 MB的实例上并行运行的。 我故意将num_call设置为1,因为我想查看连接性能。 任何高于这个,我开始得到很多错误。 httperf –server 50.56.80.227 –port 1555 –uri /slow –rate 50 –num-call 1 –num-conn 100 –timeout 5 这是我的nginxconfiguration: https : //gist.github.com/1299501 所以,这是奇怪的事情,不pipe我使用nginx,haproxy还是varnish,我都得到了大致相同的结果。 但是,我testing了Rackspace的新型云平衡器,并获得了更好的性能(在7000 / s时performance很好)。 既然nginx和其他的都运行在我设置的实例上,并且rackspace平衡器没有运行,我猜测这个系统有些问题。 我宁愿使用我控制的平衡器,所以我可以添加caching,gzip,ssl和其他东西。 我怎样才能找出瓶颈呢? 有什么我应该调整系统来获得更好的性能? 我需要超过4GB的RAM吗? (在testing中拉姆的使用率不高)。 任何其他的随机想法? 更新:我把平衡器的尺寸调整到了8GB,性能performance更好,达到6000-7000,或者与机架式平衡器相比。 这没有任何意义,因为它之前没有用完RAM。 更新:下面是一个httperf输出的例子,当我重载平衡器(在8GB的版本上,比以前更高,但错误是类似的): https ://gist.github.com/1299628
我对amazon web services相对来说比较陌生,我正试图让我的脑海里围绕着我的wordpress安装程序来进行Elastic Load Balancing的工作。 另外,我想就拟议的基础设施提供一些build议。 我最初提出的基础设施如下: 1x EC2 m1.small – Ubuntu 12.04.3 LTS 64bit(带1个EBS卷) 1x EC2 t1.micro – Ubuntu 12.04.3 LTD 64位(带或不带EBS卷?) 1x Micro RDS实例 – MySQL 5.6.13 EC2我目前的EC2(t1.micro)正在运行LAMP堆栈,并configuration为运行wordpress。 我想负载平衡这与一个m1.small实例,运行t1.micro实例的克隆。 目前我对未知的情况如下: 负载均衡设置如何pipe理跨实例的WordPress的CMS的变化? 每次在wordpress中进行更改时,是否必须不断更新AMI? 我的网站是一个电子商务网站。 在负载均衡设置中是否有这个影响? 也就是说,有一个命令存在的可能性,而不是另一个吗? 这可能是一个非常愚蠢的问题,但我认为有些问题是不相关的,因为基础设施是引用一个数据库。 最后,有没有更好的方法来设置负载平衡的基础设施? 即我应该考虑使用Amazon S3来存储我的所有文件,并使用Cloudfront作为CDN,以确保高效运行并解决任何EBS文件复制问题。 任何帮助不胜感激。 劳埃德
我对服务器configuration和Linux一般都很陌生,所以请耐心等待: 我有一个小的EC2实例在Ubuntu 10.04 LTS上运行LAMP服务器。 如果我需要的话,我将如何扩大规模以满足交通需求,我感到十分困惑。 我可以将服务器的types更改为大? 或者做一个创build另一个实例并做一些负载平衡? 我甚至不知道如何开始。 如果有人能够提供一些提示,并指出我正确的方向,一些文件,我会永远感激。 谢谢!
我面临以下问题:由于当前的负载均衡策略基于客户端IP,所以服务器变得饱和。 一些公司客户端从大型代理服务器访问我们的服务器,所有客户端都显示与我们的负载均衡器相同的IP。 我想我们正在使用一些硬件负载平衡设备(如有必要可以进一步调查)。 我们需要保持会话关联(站点是在ASP中构build的),所以具有相同IP的所有请求都被路由到同一个节点。 由于所有的通信都通过HTTPS,所以没有任何请求数据(如会话Id)可用于作为客户端鉴别器的平衡器。 有没有办法使用除IP以外的其他数据来区分客户端,并且即使从相同的IP到不同的节点,也要路由客户端? 注意:我需要保持平衡器和节点之间的stream量安全(encryption)。
我们正在使用HAProxy来平衡我们的websocket和comet应用程序。 有一个HAProxy和3个应用程序在后面运行。 我们使用HTTP基本身份validation(我们将在未来使用其他types的身份validation,如OAuth)来识别连接的用户。 我们不能使用常规循环,因为给定用户的连接最终在同一台服务器上是非常重要的。 在哪里并不重要,但重要的是他们使用相同的服务器。 我知道HAProxy是一种基于cookie的智能方法,但不幸的是,在我们的情况下,有时候,同一个用户将被连接到不同的机器上,所以cookie不能工作)。 是否可以使用HTTP授权标头的哈希来执行负载平衡? 另外,这个更复杂,是否可以定义我们自己的哈希方法? 跟进问题[威利回应之后]: 既然可以做到balance hdr(Authorization) ,那么只能在login字段(parsing后)才能做到这一点吗? 另外,什么是确切的algorithm? 我相信它的forms是hash(Authorization) % number_of_backend_server ,但是,什么是散列函数,更重要的是,它是可调整的? (或者我可以添加一个偏移量)。 我问,因为这个应用程序实际上是一个XMPP组件连接打开,我需要负载平衡XMPP组件与相同的algorithm。 XMPP节中的jid由HTTP Header Authorization确定。
在CentOS 6.5上运行nginx 1.0.15 。 我有三个上游服务器,一切正常,但是当我模拟一个中断,并采取上游服务器之一,我注意到相当滞后的响应时间(额外的5-7秒)。 第二个我把服务器重新联机,延迟消失。 另外,我注意到另一个奇怪的事情,如果我简单地停止模拟中断服务器上的httpd服务,响应时间是正常的,只有服务器完全closures才会发生滞后。 这是我的conf: upstream prod_example_com { server app-a-1:51000; server app-a-2:51000; server app-a-3:51000; } server { # link: http://wiki.nginx.org/MailCoreModule#server_name server_name example.com www.example.com *.example.com; #—– # Upstream logic #—– set $upstream_type prod_example_com; #—– include include.d/common.conf; # Configure logging access_log /var/log/nginx/example/access/access.log access; error_log /var/log/nginx/example/error.log error; location / { # link: http://wiki.nginx.org/HttpProxyModule#proxy_pass proxy_pass http://$upstream_type$request_uri; […]
我正在升级我们的一台服务器,一台运行着VMware Server 2的8核心服务器。它运行的虚拟机主要是Web,文件和电子邮件服务器; 具体来说,它运行三个Web服务器,两个电子邮件/文件服务器和一些Jabber / XMPP服务器。 当我们最初设置这台机器时,我们有两个Web服务器configuration了两个vCPU。 我们有一些非常严重的性能问题 。 当时我们只运行3个VM,共有5个vCPU。 我们还运行VMware Server 1和RAID1 。 现在我们已经升级到了RAID10,我永远不会考虑更less的东西! 🙂 新的服务器将有VMware ESXi而不是VMware Server。 我们正在研究带有更快处理器的另一个8核机器,或者16或32核心服务器。 我想确保我避免以前的问题。 因为之前我有多个vCPU的问题,所以我的计划是用多个相同的networking服务器虚拟机(2-4)replace主要networking服务器虚拟机(2-4),每个虚拟机都有一个vCPU,提供NFS共享内容,并将它们放入一个负载平衡configuration。 所以我基本上是用至less4:2的小型networking服务器虚拟机,文件服务器虚拟机和负载平衡虚拟机replace一个虚拟机。 我的计划有两个方面:首先,我可以避免之前看到的任何多个vCPU isuses,其次,我可以产生新的web服务器虚拟机来处理增加的负载。 请注意,我知道我没有获得负载平衡的所有好处,因为我仍然有单点故障 。 这是一个好的计划,还是没有必要? VMware ESXi能比三年前的 VMware Server 1更好地处理多个vCPU 吗? 在一个负载平衡的configuration中,哪一个性能更好,一个带有2-4个vCPU的大型web服务器虚拟机,或者是带有一个vCPU的4个虚拟机?