рдмреИрд▓рд╛рдВрдХрд░реЛрдВ рдХреА рд▓рдбрд╝рд╛рдИ

рдмреИрд▓реЗрдиреНрдХрд░реНрд╕ рдХреА рд▓рдбрд╝рд╛рдИ, рдмреИрд▓реЗрдВрд╕рд░реНрд╕ / рдкреНрд░реЙрдХреНрд╕рд┐рдЬрд╝ рдХрд╛ рдПрдХ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ рд╡реЗрдмрд╕реНрдХреЗрдЯреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпреЗ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛:

- http- рдкреНрд░реЙрдХреНрд╕реА , рд╕рдВрд╕реНрдХрд░рдг: 0.10.0
- HAProxy , рд╕рдВрд╕реНрдХрд░рдг: 1.5-dev18 (рд╡рд┐рдХрд╛рд╕ рд░рд┐рд▓реАрдЬрд╝)
- рдирд┐рдпрдВрддреНрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ "рдЗрдХреЛ рд╕рд░реНрд╡рд░"ред

рд╣рд┐рдкрд╛рдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╣ рдерд╛ред рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╕рд░рд▓ рд╣реИ - рдпрд╣ http-рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рд╡реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрдХ рдХрд╛рдВрдЯреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдИ рдкреИрдЪ рдирд╣реАрдВ рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, 3 рдЕрд▓рдЧ, рдЕрд╕рдВрдмрджреНрдз рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рднреА рдХреЛ рд╣рд░реНрд╖рд┐рдд рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред

1. рдкреНрд░реЙрдХреНрд╕реА, 512Mb, рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ред рдЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рднреА рдкреНрд░реЙрдХреНрд╕реА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред рдЫрд╡рд┐: sdc: jpc: ubuntu-12.04: 2.4.0
2. WebSocket рд╕рд░реНрд╡рд░, Node.js рдХреЗ рд╕рд╛рде 512MB "рд╕реНрдорд╛рд░реНрдЯ рдорд╢реАрди", рдЬрд┐рд╕ рдкрд░ рд╣рдорд╛рд░рд╛ WebSocket рдЗрдХреЛ рд╕рд░реНрд╡рд░ рдШреВрдо рд░рд╣рд╛ рдерд╛ред рд╕рд░реНрд╡рд░ Node.js рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдХрд░реНрдиреЗрд▓ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдЫрд╡рд┐: sdc: sdc: рдиреЛрдбрдЬ: 1.4.0
3. рдереЛрд░, 512MB, рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде Node.js рдкрд░ рдПрдХ рдФрд░ "рд╕реНрдорд╛рд░реНрдЯ рдорд╢реАрди"ред рдЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рдордиреЗ рдЖрд╡рд╢реНрдпрдХ рднрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ред рдереЛрд░ рд╡реЗрдмрд╕реНрдХреЗрдЯ рд▓реЛрдб рдЬреЗрдирд░реЗрд╢рди рдЯреВрд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдУрдкрди рд╕реЛрд░реНрд╕ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ http://github.com/observes/thor рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕


рд╣рдорд╛рд░рд╛ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдЙрдмрдВрдЯреВ 12.04 рд╡рд╛рд▓рд╛ "рдХреНрд▓реАрди" рд╕рд░реНрд╡рд░ рдерд╛ред рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрджрдо рдЙрдард╛рдП рдЧрдП рд╣реИрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЪрд▓рд╛рдПрдВ:

apt-get upgrade 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЧрдИ рдереА:
- gitub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯ
- рд╕реНрд░реЛрдд рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб-рдЖрд╡рд╢реНрдпрдХ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдХреЗрд╡рд▓ рд╣рд╛рд▓ рд╣реА рдореЗрдВ WebSockets рдпрд╛ HTTPS рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛
- HTTPS рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП libssl-dev рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
- рд╕реНрдЯрдб рдХреЗ рд▓рд┐рдП рд▓рд┐рдмреЗрд╡-рджреЗрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ

 apt-get install git build-essential libssl-dev libev-dev 

Node.js
HTTP- рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП Node.js рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЬрдмрдХрд┐ HTTP- рдкреНрд░реЙрдХреНрд╕реА Node.js рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпреЗ рдкрд░реАрдХреНрд╖рдг рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг 0.8.19 рдкрд░ рдХрд┐рдП рдЧрдП рдереЗред Node.js рдХреЛ github рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 git clone git://github.com/joyent/node.git cd node git checkout v0.8.19 ./configure make make install 

рдпрд╣ рдмрд╛рдЗрдирд░реА рдПрдирдкреАрдПрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХреЗрдВред рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ http-рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдЯ рдореЗрдВ npm рдЗрдВрд╕реНрдЯреЙрд▓ рд░рди рдХрд░реЗрдВ рдФрд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЕрдкрдиреЗ рдЖрдк рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреАред

nginx
Nginx рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕рд░реНрд╡рд░ рд╣реИред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░ рдмреИрдХреЗрдВрдб рдХреЛ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди WebSockets рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ред рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдЗрд╕реЗ рдирдЧрдиреЗрдХреНрд╕ рд╢рд╛рдЦрд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдирд╡реАрдирддрдо рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд╕реНрд░реЛрдд рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛:
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, nginx 1.4.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ WebSockets рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдкрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореЗрд░реА рд╕рд▓рд╛рд╣ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 1.4.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдгред

 wget http://nginx.org/download/nginx-1.3.15.tar.gz tar xzvf nginx-1.3.15.tar.gz cd nginx-1.3.15 ./configure --with-http_spdy_module --with-http_ssl_module \ --pid-path=/var/run/nginx.pid --conf-path=/etc/nginx/nginx.conf \ --sbin-path=/usr/local/sbin --http-log-path=/var/log/nginx/access.log \ --error-log-path=/var/log/nginx/error.log --without-http_rewrite_module 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ SSL, SPDY рдХреЛ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рд╕рд╛рдордиреЗ рдЖрдпрд╛:

 Configuration summary + PCRE library is not used + using system OpenSSL library + md5: using OpenSSL library + sha1: using OpenSSL library + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/sbin" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/var/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp" 

рдЙрд╕рдХреЗ рдмрд╛рдж:

 make make install 

HAProxy
HAProxy рдкрд╣рд▓реЗ tcp рдореЛрдб рдореЗрдВ WebSockets рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдФрд░ рдЕрдм http рдореЛрдб рдореЗрдВ рднреАред HAProxy рдХреЛ HTTPS рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рднреА рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ред рддреЛ рдлрд┐рд░ рд╕реЗ рд╣рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдмреНрд░рдВрдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 wget http://haproxy.1wt.eu/download/1.5/src/devel/haproxy-1.5-dev18.tar.gz tar xzvf haproxy-1.5-dev18.tar.gz cd haproxy-1.5-dev18 make TARGET=linux26 USE_OPENSSL=1 make install 

рдЯреЗрдХ
рд╣рд╛рд▓рд╛рдБрдХрд┐ HAProxy рдореЗрдВ SSL рд╕рдорд╛рдкреНрддрд┐ рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ, рдлрд┐рд░ рднреА рдЖрдорддреМрд░ рдкрд░ HAProxy рд╕реЗ рдкрд╣рд▓реЗ SSL рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╣рдо рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

 git clone git://github.com/bumptech/stud.git cd stud make make install 

рдЕрдм рдЬрдм рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Nginx рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЬрдбрд╝ рд╕реЗ /etc/nginx/nginx.conf рдореЗрдВ nginx.conf рдХреЛ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдп рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдордХреНрдЦреА рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд░реНрдиреЗрд▓ рдЯреНрдпреВрдирд┐рдВрдЧ


рд╕рднреА рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдХреБрдЫ рдЯреНрдпреВрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЦреАрдВрдЪреА:

 vim /etc/sysctl.conf 

рдФрд░ рдирд┐рдореНрди рдорд╛рди рд╕реЗрдЯ рд╣реИрдВ:

 # General gigabit tuning: net.core.somaxconn = 16384 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_syncookies = 1 # this gives the kernel more memory for tcp # which you need with many (100k+) open socket connections net.ipv4.tcp_mem = 50576 64768 98152 net.core.netdev_max_backlog = 2500 


рдмреЗрдВрдЪ рдорд╛рд░реНрдХрд┐рдВрдЧ


2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
1. SSL рдХреЗ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рд▓реЛрдб рдХрд░реЗрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ WebSockets рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред
2. SSL рдХреЗ рд╕рд╛рде рдЯреЗрд╕реНрдЯ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рд▓реЛрдб рдХрд░реЗрдВред рдЕрд╕реБрд░рдХреНрд╖рд┐рдд WebSockets рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмрд╣реБрдд рдмреБрд░рд╛ рд╕рдВрдмрдВрдз рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП SSL рд╕рдорд╛рдкреНрддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЛрдб рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рджреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдпреМрдЧрд┐рдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
- 2 рдХрд┐
- 5 рдХрд┐
- 10 рдХрд┐
рдФрд░ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рднреА:
- 20 рдХрд┐
- 30 рдХрд┐
рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рд╕рднреА WebSocket рд╕рд░реНрд╡рд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдереЛрд░ 100 рдкрд░рджреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рдПрдХреНрд╕-рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рднреА рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдПрдХ UTF-8 рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реИред

рд▓рд╛рдВрдЪ


рдЯреЗрдХ

 stud --config stud.conf 

HAProxy

 haproxy -f ./haproxy.cfg 

nginx

 nginx 

http рдкреНрд░реЙрдХреНрд╕реА

 FLAVOR=http node http-proxy.js 

WebSocketServer

 FLAVOR=http node index.js 

рдкрд░рд┐рдгрд╛рдо


http- рдкреНрд░реЙрдХреНрд╕реА рдЕрдкрдиреЗ рдирд╛рдо рддрдХ рд░рд╣рддрд╛ рд╣реИ, рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдлреА рддреЗрдЬреА рд╕реЗ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрдм рд╕реЗ рдпрд╣ Node.js рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдореЗрдореЛрд░реА рдЦрд╛рддреА рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдиреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ 12+ рдПрдордмреА рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред 10k рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рд▓рдЧрднрдЧ 70 MB рдореЗрдореЛрд░реА рд▓рдЧреАред рдирд┐рдпрдВрддреНрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, HTTP рдкреНрд░реЙрдХреНрд╕реА рдиреЗ 5 рд╕реЗрдХрдВрдб рдЕрдзрд┐рдХ рд▓рд┐рдпрд╛ред HTTPS, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рд╕рдмрд╕реЗ рдзреАрдорд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛, рдХреНрдпреЛрдВрдХрд┐ Node.js SSL рдкрд░ рд╣рд╛рд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ рдХрд┐, рдПрдХ рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рдд рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдпрд╣ рдЖрдкрдХреЗ рдореБрдЦреНрдп рдИрд╡реЗрдВрдЯ рд▓реВрдк рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░реЛрдХ рджреЗрддрд╛ рд╣реИред
Http- рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╣реИ рдЬреЛ рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЦрд╛рдиреЗ рдХреА рд╕реНрдореГрддрд┐ рдЖрдзреА рд╣реЛ рдЧрдИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдкреИрдЪ рдХреЗ рдмрд╛рдж рднреА, рдпрд╣ рдирдЧрдиреЗрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╢реБрджреНрдз рд╕реА рдореЗрдВ рд▓рд┐рдЦрдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореБрдЭреЗ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдЙрдореНрдореАрджреЗрдВ рдереАрдВ, рдФрд░ рдпрд╣ рдореБрдЭреЗ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ 10 рдПрдордмреА рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рдХрд╛рдо рдХрд┐рдпрд╛ред рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдирдЧрдиреЗрдХреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рддреЛ рдЗрд╕рдиреЗ рднрдпрд╛рдирдХ рдкреНрд░рджрд░реНрд╢рди рджрд┐рдЦрд╛рдпрд╛ред рдиреЛрдб рдиреЗ Nginx рдХреА рддреБрд▓рдирд╛ рдореЗрдВ SSL рдХреЗ рд╕рд╛рде рдФрд░ рднреА рддреЗрдЬрд╝реА рд╕реЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдП, рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ Nginx рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рдЧрд▓рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджреЛрд╕реНрддреЛрдВ рд╕реЗ рдХреБрдЫ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ - рдЧрд▓рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдереАрдВред Opensl s_client -connect рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕реЗрдЯрдЕрдк рдФрд░ рдкреБрд╖реНрдЯрд┐: рдЖрдИрдкреА рд╕рдм рдХреБрдЫ рддрдп рдХрд┐рдпрд╛ (рдЕрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬреА рд╕реЗ RC4 рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдЕрдЧрд▓рд╛ HAProxy рдерд╛, рдЬрд┐рд╕рдореЗрдВ NGINX рдХреЗ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдерд╛, рд▓реЗрдХрд┐рди рдореЗрдореЛрд░реА рдХреА рдХрдо (7 рдПрдордмреА) рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдерд╛: рдпрд╣ рдмрд╣реБрдд рдзреАрдорд╛ рдерд╛, рдирдЧреНрдиреЗрдХреНрд╕ рдХреЗ рдХрд░реАрдм рднреА рдирд╣реАрдВ рдерд╛ред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рддрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рддрдХ рд╣рдордиреЗ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдмреНрд░рдВрдЪ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИред рддрдм рдореИрдВрдиреЗ Nginx рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЧрд▓рддреА рдХреА, рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ HackerNews рдкрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦрд╛ред рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рд╕реНрдЯрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


http- рдкреНрд░реЙрдХреНрд╕реА рдПрдХ рд╢рд╛рдирджрд╛рд░ рд▓рдЪреАрд▓рд╛ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ, рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдФрд░ рдПрдкреЗрдВрдбреЗрдмрд▓ рд╣реИред рдЬрдм рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ SSL рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рд╕реНрдЯрдб рдЪрд▓рд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред
nginx рдФрд░ haproxy рдиреЗ рдмрд╣реБрдд рдХрд░реАрдмреА рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдП, рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рддреЗрдЬ рдпрд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯрдб рдФрд░ рд╣реИрдкреНрд░реЛрдХреНрд╕реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ nginx рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд рдХрд░рдирд╛ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

HTTP
рдкреНрд░рддрд┐рдирд┐рдзрд┐рдХрдиреЗрдХреНрд╢рдирд╣реИрдВрдбрд╢реЗрдХрди (рдордзреНрдпрдо)рд╡рд┐рд▓рдВрдмрддрд╛ (рдордзреНрдпрдо)рдХреЗрд╡рд▓
http рдкреНрд░реЙрдХреНрд╕реА10k293 рдорд┐44 рдорд┐30168 рдорд┐
nginx10k252 рдорд┐16 рдПрдордПрд╕28433 рдПрдордПрд╕
haproxy10k209 рдорд┐18 рдорд┐26974 рдПрдордПрд╕
рдирд┐рдпрдВрддреНрд░рдг10k189 рдорд┐16 рдПрдордПрд╕25310 рдПрдордПрд╕
рд╡рд┐рдЬреЗрддрд╛ : Nginx рдФрд░ HAProxy рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд░реАрдм рд╣реИрдВред

HTTPS
рдкреНрд░рддрд┐рдирд┐рдзрд┐рдХрдиреЗрдХреНрд╢рдирд╣реИрдВрдбрд╢реЗрдХрди (рдордзреНрдпрдо)рд╡рд┐рд▓рдВрдмрддрд╛ (рдордзреНрдпрдо)рдХреЗрд╡рд▓
http рдкреНрд░реЙрдХреНрд╕реА10k679 рдорд┐62 рдорд┐68670 рдорд┐
nginx10k470 рдорд┐30 рдорд┐50 180 рдорд┐
haproxy10k464 рдорд┐25 рдорд┐50058 рдорд┐
haproxy + рд╕реНрдЯрдб10k492 рдорд┐42 рдорд┐52403 рдПрдордПрд╕
рдирд┐рдпрдВрддреНрд░рдг10k703 рдорд┐65 рдорд┐71500 рдорд┐
рд╡рд┐рдЬреЗрддрд╛ : Nginx рдФрд░ HAProxy рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд░реАрдм рд╣реИрдВред

рд╕рднреА рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: https://github.com/observes/balancerbattle/tree/master/results

рдЬрдорд╛ (рдпреЛрдЧрджрд╛рди)


рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИрдВ, рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреА рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In179629/


All Articles