nginx负载均衡

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx负载均衡相关的知识,希望对你有一定的参考价值。

nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
Nginx作为负载均衡服务器优点:
1.Nginx 既可以在内部直接支持 Rails 和 php 程序对外进行服务,也可以支持作为 HTTP2.代理服务器对外进行服务。
2.理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
3.无缓存的反向代理加速,简单的负载均衡和容错。
4.FastCGI,简单的负载均衡和容错。
5.模块化的结构。
配置环境: 操作环境:rhel6.5
调度器:172.25.40.5 server5.example.com
服务器:172.25.40.2 server2.example.com
172.25.40.3 server3.example.com
客户端本地解析:
vim /etc/hosts
172.25.40.5 www.westos.org westos.org bbs.westos.org

Ngin 源码安装

tar zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0
隐藏版本号:
cd nginx-1.12.0/src/core/
vim nginx.h
#define NGINX_VER          "nginx"
取消debug
cd /root/nginx-1.12.0/auto/cc
vim gcc
#debug
#CFLAGS="$CFLAGS -g"
cd nginx-1.12.0
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

技术分享图片

Nginx 四种方式的负载均衡配置:
1.基于轮询(Round-Robin)方式的负载均衡:

cd /usr/local/nginx/conf
vim nginx.conf
user  nginx nginx;     
worker_processes  2;
worker_cpu_affinity 01 10;   绑定cpu
events {
    worker_connections  65535;       #并发连接数
}
http {
upstream westos{
        server 172.25.40.2:80;
        server 172.25.40.3:80;
        }
 server{
                listen 80;
                server_name www.westos.org;
                location / {
                        proxy_pass http://westos;
                }

        }
}

在配置并发连接数时,修改/etc/security/limits.conf文件后才会生效。

 vim /etc/security/limits.conf
nginx           -       nofile          65535

测试页面:
技术分享图片

技术分享图片

关闭server2 server3端的httpd服务,浏览器页面自动调转到调度器本地nginx服务端。

http {
        upstream westos{
        server 172.25.40.2:80;
        server 172.25.40.3:80;
        Server172.25.40.5:80 backup;
        }
}

技术分享图片

vim /usr/local/nginx/conf/nginx.conf
http {
        upstream westos{
        server 172.25.40.2:80;
        server 172.25.40.3:80;
        server localhost:8080 backup;
        }
        server{
                listen 8080;
                server_name localhost:8080;
                charset utf-8;
                location / {
                        root /backup;
                        index index.html;
                }

        }
}

技术分享图片

2.基于权重方式的负载均衡
配置权重:

vim /usr/local/nginx/conf/nginx.conf
http {
        upstream westos{
        server 172.25.40.2:80 weight=2;
        server 172.25.40.3:80;
        server localhost:8080 backup;
        }
}

技术分享图片
3.基于ip_hash方式的负载均衡:使用长连接,确保一个客户只和一台服务器通信

vim /usr/local/nginx/conf/nginx.conf
http {
        upstream westos{
        server 172.25.40.2:80;
        server 172.25.40.3:80;
        ip_hash;
        }
}

测试结果:
技术分享图片

4.使用nginx sticky实现基于cookie的负载均衡
Sticky 模块
cp /usr/local/nginx/conf/nginx.conf /opt/
重新安装nginx,因当前版本过高,不能添加sticky模块,现在安装nginx-1.10.1版本。
执行前面安装的步骤,这里不再说明。需要注意的是在编译时要添加--add-module=PATH参数,模块路径是解压的nginx-sticky-module-ng.tar.gz的解压路径。

cd /root/nginx-1.10.1
 ./configure --help --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-sticky-module-ng
make && make install
cp /opt/nginx.conf /usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf
http {
        upstream westos{
        sticky;
        server 172.25.40.2:80;
        server 172.25.40.3:80;
        }
}

nginx -t #检测语法
nginx -s reload #重新加载服务
注意:
1.nginx和apache不同,nginx每次安装一个新的模块都需要重新编译一次,编译完成之后将nginx这一个文件拷贝到sbin下面即可。
2.如果在reload时出现下面报错时,解决办法是:
技术分享图片

以上是关于nginx负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Nginx负载均衡

Nginx反向代理实现负载均衡配置图解

OpenResty 动态负载均衡

nginx反向代理访问很慢,我做了负载均衡,现在几乎无法访问,有谁能帮我解决一下,万分感谢。

nginx--❤️图解及代码实现正向代理反向代理及负载均衡(非常实用,建议收藏❤️)

分布式部署与NGINX负载均衡