Articles of haproxy

HAproxy为redis奴隶

目前我们使用node_redis客户端来访问redis。 我需要在redis slave上使用HAProxy,在我的情况下是3个。 我安装了HAProxy,并将其configuration为负载均衡redis从服务器。 但是当我试图创build连接从node_redis客户端到HAProxy我无法创build连接,并得到一个错误 Error: Redis reply parser error: Error: Protocol error, got "H" as reply type byte at HiredisReplyParser.execute (/home/user1/doosra/node-exp/node_modules/redis/lib/parser/hiredis.js:32:31) at RedisClient.on_data (/home/user1/doosra/node-exp/node_modules/redis/index.js:440:27) at Socket.<anonymous> (/home/user1/doosra/node-exp/node_modules/redis/index.js:70:14) at Socket.emit (events.js:67:17) at TCP.onread (net.js:347:14)

与“快速”的Openshift haproxy错误没有可用的服务器

我从Openshift创build了一个基本的Nodejs应用程序,随机地,服务在几天内终止了几次。 从我的Nodejs模块没有错误消息,但只有在haproxy自动安装。 来自haproxy.log的消息是: [WARNING] 184/001333 (193501) : Server express/local-gear is DOWN for maintenance. [WARNING] 184/010106 (483047) : config : log format ignored for proxy 'stats' since it has no log address. [WARNING] 184/010106 (483047) : config : log format ignored for proxy 'express' since it has no log address. [WARNING] 184/010106 (483047) : Server express/local-gear […]

终止大量SSL连接的成本效益

我最近设置了一个基于Node.js的web套接字服务器,经过testing,它可以在一个小的EC2实例(m1.small)上每秒处理大约2000个新的连接请求。 考虑到m1.small实例的成本以及将多个实例放在支持WebSocket的代理服务器(如HAProxy)后面的能力,我们对结果非常满意。 但是,我们意识到我们还没有使用SSL进行任何testing,因此查看了许多SSL选项。 很明显,在代理服务器上终止SSL连接是理想的,因为代理服务器可以检查stream量并插入诸如X-Forward-For之类的头部,以便服务器知道请求来自哪个IP。 所以我研究了一些解决scheme,比如Pound,stunnel和stud,所有这些都允许443上的传入连接被终止,然后通过80端口上的HAProxy传递到Web服务器。 不幸的是,我发现在c1.medium(High CPU)实例上向SSL终止代理服务器发送stream量很快就消耗了所有的CPU资源,并且每秒钟只有50次左右的请求。 我尝试过使用上面列出的全部三种解决scheme,并且他们都执行了大致相同的操作,而我仍然使用OpenSSL。 我尝试使用64位非常大的高CPU实例(c1.xlarge),发现性能只能随成本线性缩放。 所以基于EC2定价,我需要支付每秒200个SSL请求的大约600美元/米,而不是每秒2000个非SSL请求的60美元/米。 当我们开始计划每秒钟接受1,000或10,000次请求时,以前的价格变得经济上不可行。 我也尝试使用Node.js的https服务器终止SSL,性能与Pound,stunnel和stud非常相似,所以没有明显的优势。 所以我希望有人可以帮忙的是build议我如何解决这个荒谬的代价,我们必须吸收以提供SSL连接。 我听说SSL硬件加速器提供了更好的性能,因为硬件devise用于SSLencryption和解密,但是由于我们目前在所有服务器上使用Amazon EC2,使用SSL硬件加速器不是一个select,除非我们有单独的数据以物理服务器为中心。 我只是努力想知道,如果亚马逊,Google,Facebook这样的成本如此之高,可以通过SSL提供所有stream量。 那里一定有更好的解决办法。 任何意见或想法将不胜感激。 谢谢Matt