带有nginx的多个上游faye websocket服务器

时间:2013-11-15 13:45:54

标签: nginx websocket thin faye

我想将我的faye websocket服务器集中起来。单个服务器运行良好,但我想准备扩展。 我的第一次尝试是在不同的套接字上启动一些瘦服务器,然后将它们添加到nginx中的服务器的上游。

Bayeux消息分布在群集中,但chrome dev工具显示大约16个 在frame面板的networking标签中关闭连接的websocket 101连接:

Connection Close Frame (Opcode 8)
Connection Close Frame (Opcode 8, mask)

服务器端的一大堆/meta/connect/meta/handshake用于所有faye实例。

摘录:

D, [2013-11-15T15:34:50.215631 #5344] DEBUG -- : {"channel"=>"/meta/connect",  "clientId"=>"q7odwfbovudiw87dg0jke3xbrg51tui", "connectionType"=>"callback-polling", "id"=>"p"}
D, [2013-11-15T15:34:50.245012 #5344] DEBUG -- : {"channel"=>"/meta/connect", "clientId"=>"ckowb5vz9pnbh7jwomc8h0qsk8t0nus", "connectionType"=>"callback-polling", "id"=>"r"}
D, [2013-11-15T15:34:50.285460 #5344] DEBUG -- : {"channel"=>"/meta/handshake", "version"=>"1.0", "supportedConnectionTypes"=>["callback-polling"], "id"=>"u"}
D, [2013-11-15T15:34:50.312919 #5344] DEBUG -- : {"channel"=>"/meta/handshake", "version"=>"1.0", "supportedConnectionTypes"=>["callback-polling"], "id"=>"w"}
D, [2013-11-15T15:34:50.356219 #5344] DEBUG -- : {"channel"=>"/meta/handshake", "version"=>"1.0", "supportedConnectionTypes"=>["callback-polling"], "id"=>"y"}
D, [2013-11-15T15:34:50.394820 #5344] DEBUG -- : {"channel"=>"/meta/handshake", "version"=>"1.0", "supportedConnectionTypes"=>["callback-polling"], "id"=>"10"}

启动瘦服务器(每个服务器都在自己的终端中):

thin start -C config/thin/development.yml -S /tmp/faye.1.sock
thin start -C config/thin/development.yml -S /tmp/faye.2.sock
thin start -C config/thin/development.yml -S /tmp/faye.3.sock

我的瘦配置:

---
environment: development
timeout: 30
log: log/thin.log
pid: tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 100
require: []
wait: 30
# socket: /tmp/faye.sock
daemonize: false
rackup: config.ru

我的NGINX配置:

upstream thin_cluster {
  server unix:/tmp/faye.1.sock fail_timeout=0;
  server unix:/tmp/faye.2.sock fail_timeout=0;
  server unix:/tmp/faye.3.sock fail_timeout=0;
}

server {
  # listen 443;
  server_name ~^push\.mysite\.dev(\..*\.xip\.io)?$;
  charset UTF-8;
  tcp_nodelay on;

  # ssl on;
  # ssl_certificate  /var/www/heypresto/certificates/cert.pem;
  # ssl_certificate_key /var/www/heypresto/certificates/key.pem;
  # ssl_protocols TLSv1 SSLv3;

  location / {
    proxy_pass http://thin_cluster;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    break;
  }
}

认为为webockets添加更多上游是真的太好了,它会起作用,但它看起来很接近......

编辑:我已经意识到这可能不会起作用,我应该创建N个服务器(push1.mysite.dev,push2.mysite.dev等)并让后端告诉前端哪个连接。

仍然如果有任何想法......

0 个答案:

没有答案