2016-07-16 58 views
0

这个问题的确是以问题的形式出现的,在做研究的时候,我想出了这个设置为nginx平衡多个rethinkdb代理。如何使用rethinkdb代理使用nginx负载平衡?

我有3个rethinkdb代理服务器正在运行。对于就事论事让我们称之为:

proxy0 
proxy1 
proxy2 

那么所有的再连接 - 在rethinkdb集群第一分贝(加入)。 现在这个样子我我已经定义nginx的上游:

upstream proxy { 
    server proxy0:6003;  # rethindb proxy instance 0 
    server proxy1:6003;  # rethinkdb proxy instance 1 
    server proxy2:6003;  # rethinkdb proxy instance 2 
} 

,然后只是代理通在location /.

这一切都看起来不错,简单但不工作。 我得到蟒蛇的错误是这样的:

File "isDead.py", line 86, in <module> 
    o = DeadLinksDelete(db="db", db_host="loadBalancerAddress", api_url=url, page=sys.argv[2]) 
    File "isDead.py", line 22, in __init__ 
    password="pass") 
    File "/usr/local/lib/python2.7/dist-packages/rethinkdb/net.py", line 656, in connect 
    return conn.reconnect(timeout=timeout) 
    File "/usr/local/lib/python2.7/dist-packages/rethinkdb/net.py", line 567, in reconnect 
    return self._instance.connect(timeout) 
    File "/usr/local/lib/python2.7/dist-packages/rethinkdb/net.py", line 425, in connect 
    self._socket = SocketWrapper(self, timeout) 
    File "/usr/local/lib/python2.7/dist-packages/rethinkdb/net.py", line 325, in __init__ 
    raise ReqlDriverError(error) 
rethinkdb.errors.ReqlDriverError: Connection is closed. 

好吧,我的第一个问题是,我假设rethinkdb驱动器通过HTTP/HTTPS连接到代理,并从我的例子,假设是错误的。

  1. 从源安装nginx的支持--with-sream这样的:

的./configure前缀= /选择/ nginx的--sbin路径=/usr/sbin目录/ nginx --conf-path =/opt/nginx/nginx.conf --pid-path =/var/run/nginx.pid --lock-path =/var/run/nginx.lock --with-threads - -with流--with-http_slice_module --without-http_rewrite_module

  • 编辑/选择/ nginx的/ NGI nx.conf并添加(HTTP {}后):
  • 流{

    服务器{ 听6003; proxy_pass db; }

    上游分贝{ 服务器代理0:6003; server proxy1:6003; server proxy2:6003; }

    }

  • 开始nginx的,在你刚刚nginx

  • 集DB主机应用到你的nginx的负载平衡器,那就是。

  • 这个设置现在对我有效。

    回答

    0

    由于驱动程序不通过HTTP进行通信,因此您最好使用类似HAProxy的设计,该设计主要用于代理TCP连接。

    +0

    嗨,我已经安装nginx tcp负载平衡器。但我也会尝试HAProxy,因为现在我减慢了200ms的一切。 – pregmatch

    +0

    xm,haproxy页面响应降至-300ms。谢谢。 – pregmatch