nginx负载均衡配置
Posted python真好用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx负载均衡配置相关的知识,希望对你有一定的参考价值。
nginx负载均衡配置
最近工作中涉及到了nginx,今天浅谈一下nginx负载均衡。
以一个项目实例来讨论一下什么是负载均衡。
负载均衡顾名思义是将过量的负载进行分配使得各项服务不至于发生卡顿。而nginx在这其中就扮演了一个分配者的角色。
可以是多个端口做负载或者多个服务器+多个端口负载。
这次的项目有两种服务:
一个是python起的服务,已指定了ip跟端口;
还有一种是在tomcat中起的java服务,同样也指定好了ip跟端口。
nginx的需要将这两个服务分别做负载均衡,话不多说先上nginx.conf
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events
worker_connections 1024;
http
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
client_max_body_size 20m;
#gzip on;
upstream myserver
server ip1:8011;
server ip1:8012;
server ip1:8013;
server ip1:8014;
server ip1:8015;
server ip1:8016;
server ip1:8017;
server ip1:8018;
server ip1:8019;
server ip1:8020;
server ip1:8021;
server ip1:8022;
server ip1:8023;
server ip1:8024;
server ip1:8025;
server ip2:8011;
server ip2:8012;
server ip2:8013;
server ip2:8014;
server ip2:8015;
server ip2:8016;
server ip2:8017;
server ip2:8018;
server ip2:8019;
server ip2:8020;
server ip2:8021;
server ip2:8022;
server ip2:8023;
server ip2:8024;
server ip2:8025;
upstream javaidphoto
server ip1:8111;
server ip1:8112;
server ip1:8113;
server ip1:8110;
server ip2:8110;
server ip2:8111;
server ip2:8112;
server ip2:8113;
server
listen 8000;
server_name ip1; # 服务器公网ip
location /
proxy_pass http://myserver; #这个是Gunicorn与Ningx通信的端口。和Gunicorn的配置相同
proxy_connect_timeout 10;
error_page 500 502 503 504 /50x.html;
location = /50x.html
root html;
server
listen 8001;
server_name ip1; # 服务器公网ip
location /
proxy_pass http://javaidphoto; #这个是Gunicorn与Ningx通信的端口。和Gunicorn的配置相同
proxy_connect_timeout 10;
error_page 500 502 503 504 /50x.html;
location = /50x.html
root html;
ip1,ip2都是起服务的服务器ip,一共两台,如果要做两台机器负载均衡需要在两台机器上都配置nginx.conf。
讲一下代码块:
负载均衡最关键的配置是
upstream javaidphoto
server ip1:8111;
server ip1:8112;
server ip1:8113;
server ip1:8110;
server ip2:8110;
server ip2:8111;
server ip2:8112;
server ip2:8113;
我自己选择的是轮询方式的负载,其实还有一些其他的负载方式,比如:
权重方式:
权重越高分配到需要处理的请求越多。
upstream test_server
server localhost:8080 weight=2;
server localhost:8081 weight=1;
server localhost:8082 weight=3;
server localhost:8083 weight=4;
ip_hash方式:
指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
upstream test_server
ip_hash;
server localhost:8080;
server localhost:8081;
server localhost:8082;
server localhost:8083;
server块里配置的是nginx的监听端口,我这里配置的是8000和8001,分别对应python服务跟java服务。
改完后到sbin目录下执行:
./nginx.sh
如果已经起了nginx服务可以执行:
./nginx.sh -s reload
以上就是我对nginx负载均衡的浅薄地理解欢迎批评指正。
以上是关于nginx负载均衡配置的主要内容,如果未能解决你的问题,请参考以下文章