使用nginx做load balance

1. 安装nginx
apt-get update
apt-get install nginx

2. 配置侦听端口
/etc/nginx/site-available/default  -- 修改server的侦听端口80为其它端口,否则因为80端口已经被apache占用,nginx启动会失败

3. 配置优化nginx.conf文件
/etc/nginx/nginx.conf

# ubuntu 14.04上, worker_processes值为cpu数的一半; Ubuntu 16.04上为cpu数
worker_processes auto;

# 连接数上线,设置到65535 (设置到ulimit -n命令获取的一致)
worker_rlimit_nofile 65535;

events {
    #==worker进程同时打开的最大连接数,这里设置到65535,有文章说,生产环境,至少要到10K。
    worker_connections 65535;
    #==告诉nginx收到一个新链接通知后接受尽可能多的链接
    multi_accept on;
    #==设置用于复用客户端线程的轮训方法
    use epoll;
}

4. 负载均衡配置
    a. /etc/nginx/site-available/default 里,设置好侦听的端口(见2#里的端口列表);配置ServerName,如serv1,serv2等
        location / {
            proxy_pass http://ServerName;
        }
        #开启nginx状态监控
        location /status {
                stub_status on;
                access_log off;
        }
    b. /etc/nginx/nginx.conf 里,增加upstream配置,其中的ServerName与default里的对应。
     # 注意:本机IP,不要使用“localhost”。hosts文件里,localhost被映射::1,这导致URL错误
     upstream ServerName {
        server 127.0.0.1:8103;
        server 127.0.0.1:8108;
     }
    c. 可以在一个nginx里配置多个load balance。只要设置对应的server和upstream节点就可以了

5. 多端口侦听

  配置多个server节点,每个server节点侦听不同端口即可。

6. 同一端口,不同site配置

  可以通过server里的location来配置. 寻址时,最后匹配 / 的location

  location /servername {...}  #访问URL为: http://xxxx:port/servername/xxxxxx

  location / {...}  # 访问URL为: http://xxxx:port/...

7. 代理和负载, nginx可以做比较复杂的转发. 可以通过配置location, 将大量的站点集成到一个域名中. 实践使用中, 尽量简化映射关系. 不要使用太复杂的映射.

 可以使用多端口监控, 简化映射(针对内部使用站点)

 location的设置,尽量不要使用复杂的正则表达式. 复杂意外着容易出错, 增加维护成本和学习成本. 通过一些其它手段,简化映射配置.

展开阅读全文

没有更多推荐了,返回首页