nginx实现负载均衡

Nginx的安装和配置

进入Nginx官网站 http://nginx.org/,点击右侧download

nginx实现负载均衡_第1张图片

如下是nginx版本这里下载稳定版本  1.14.1 版本  复制链接,然后用 wget 下载

nginx实现负载均衡_第2张图片


nginx实现负载均衡_第3张图片

输入命令 wget http://nginx.org/download/nginx-1.14.0.tar.gz (这里我下载的是1.14.0版本)

下载后 解压 tar -zxvf nginx-1.14.0.tar.gz

我这里在根目录下新建了一个worksoft文件夹 进行下载 解压操作


安装Nginx前,需要安装以下三个依赖包:

ssl 功能需要 openssl 库https://www.openssl.org/source/

wget https://www.openssl.org/source/openssl-fips-2.0.14.tar.gz

gzip 模块需要 zlib 库  http://www.zlib.net/

wget http://www.zlib.net/zlib-1.2.11.tar.gz

rewrite 模块需要 pcre 库 http://www.pcre.org/

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz


下载完成后安装,依赖包安装顺序依次为: openssl、zlib、pcre, 然后安装 Nginx 包

1.安装openssl

 tar -zxvf openssl-fips-2.0.14.tar.gz

 cd openssl-fips-2.0.14/

 ./config

 make

make install

2.安装zlib

tar -zxvf zlib-1.2.11.tar.gz

 cd zlib-1.2.11/

 ./configure

 make

 make install

安装gcc g++

yum install gcc-c++

3.安装pcre

 tar -zxvf pcre-8.39.tar.gz

 cd pcre-8.39/

 ./configure

 make

 make install

4.安装nginx

 tar -zxvf nginx-1.12.0.tar.gz

 cd nginx-1.12.0/

 ./configure --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-fips-2.0.14

 make

 make install



检测是否安装成功

 cd /usr/local/nginx/sbin/

 ./nginx -t

出现如下提示 则说明安装成功



启动nginx命令     ./nginx 

查看服务 ps -ef|grep nginx

看到如下进程说明启动成功


nginx实现负载均衡_第4张图片


nginx.conf默认端口号 80     所以访问 ip 192.168.12.137 (master) 看到如下页面



nginx实现负载均衡_第5张图片


负载均衡配置 

首先准备三台服务器

ip地址分别为 :

192.168.12.134 (1号机)

192.168.12.135 (2号机)

192.168.12.136 (3号机)

安装tomcat,以及部署web项目,开放8080端口,开启服务器。

centos7开放8080端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent 

不同的服务器中放不同的页面,其中hello.jsp中 分别显示 1号机   2号机  3号机

开启tomcat服务器 ./startup.sh

nginx实现负载均衡_第6张图片

分别访问三台主机得到如下





配置Nginx

进入Nginx目录,编辑 nginx.conf 配置文件

 vim /usr/local/nginx/conf/nginx.conf


nginx实现负载均衡_第7张图片


server {

       #默认侦听80端口,可以修改为8888

        #listen       80;

        listen        8888;

        server_name localhost;

在http节点下添加upstream节点

nginx对于集群默认的负载形式是使用upstream方式进行负载(默认是轮询upstream的形式),每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除,这种默认方式的可靠性比较低、负载分配不均衡;一般在纯静态页面服务器集群才会使用这种方式,

upstream testnginx.com{ #名字随便起与下面proxy_pass对应即可

    server  192.168.12.134:8080;

    server  192.168.12.135:8080;

    server  192.168.12.136:8080;


对于负载均衡,nginx还提供了以下均衡模式:

1)weight 模式

权重模式,指定upstream的轮询记录,weight和访问比例成正比,主要与后端服务器性能不均的情况;

upstream testnginx.com {

    server 192.168.12.134:8080 weight=40;

    server 192.168.12.135:8080 weight=60;

}

以上配置 192.168.12.135 比 192.168.12.134 有更高的访问比例;

2)ip_hash 模式

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session独立匹配的问题;

upstream testnginx.com{

   server 192.168.12.134;

   server 192.168.12.134;

   ip_hash;

}

3)fair 模式

按后端服务器的响应时间来分配请求,响应时间短的优先分配;

upstream testnginx.com {

    server 192.168.12.134:8080;

    server 192.168.12.135:8080;

    fair;

}

4)url_hash 模式

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效;

upstreamt estnginx.com{

   server 192.168.12.134:8080;

   server 192.168.12.135:8080;

   hash $request_uri;

   hash_method crs32;

}


upstream还可以为每个设备设置状态值,部分常用的状态如下:

down:当前的server暂时不参与负载.

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误;

fail_timeout : max_fails次失败后,暂停的时间;

backup: 指定为备用服务器,其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻;


nginx实现负载均衡_第8张图片

在server中  location里  添加一个 proxy_pass  http://testnginx.com;  

接着保存退出。


nginx实现负载均衡_第9张图片

重启nginx服务器

   方式一:

查看进程号    ps -ef|grep nginx    


nginx实现负载均衡_第10张图片

杀死对应进程   kill -quit1522

再重启   按指定config配置启动   /usr/local/nginx/sbin/nginx    -c   /usr/local/nginx/conf/nginx.conf


nginx实现负载均衡_第11张图片

或者直接启动也会按默认的配置启动    /usr/local/nginx/sbin/nginx

方式二: 

进入nginx可执行目录sbin下,输入命令 ./nginx -s reload 即可

负载均衡测试:

经过以上配置已经实现负载均衡,可以通过 访问nginx服务器地址来实现对不同服务器tomcat访问

进行测试

多次访问   http://192.168.12.137:8888/linuxServerTest/hello.jsp




你可能感兴趣的:(nginx实现负载均衡)