搭建负载均衡服务的实际需求:

1.把单台服务器无法承受的大规模并发访问或数据流量分担到多台节点设备上,分别进行处理,减少用户等待响应的时间,提升用户体验。

2.单个重负载的运算分担到多台节点设备上做并行处理,每个节点处理结束后,将结果汇总,返回给用户。

3.7*24小时的服务保证,任意一个或多个有限后面节点设备宕机,不能影响业务。

实现Nginx负载均衡需要两个组件:

l  Ngx_http_proxy_module,用于把请求后抛给服务器节点或upstream服务器池;

l  Ngx_http_upstream_module,可以实现网站的负载均衡功能及节点的健康检查。

硬件环境准备:

主机

IP

说明

主负载均衡1

192.168.159.128

Nginx主负载均衡器

主负载均衡2

192.168.159.128

Nginx辅负载均衡器

Web1

192.168.159.130

Web1服务器

Web2

192.168.159.131

Web2服务器

软件环境:

操作系统:CentOS 6.8

虚拟机:VM

Web软件:nginx-1.10.2.tar.gz

终端软件:SecureCRT

操作步骤:

通过终端软件连接4台主机,同时进行批处理操作,在整个实验当中还有一个主负载均衡2还没有实现,下次完成这个子任务。

[root@www tools]# yum install openssl openssl-devel pcre pcre-devel -y

[root@www tools]# wgethttp://nginx.org/download/nginx-1.10.2.tar.gz

[root@www tools]#useradd nginx -s /sbin/nolobin -M

[root@www tools]#tar xf nginx-1.10.2.tar.gz

[root@www tools]# cd nginx-1.10.2

[root@www nginx-1.10.2]#./configure \

--user=nginx \

--group=nginx \

--prefix=/application/nginx-1.10.2\

--with-http_stub_status_module \

--with-http_ssl_module

[root@www nginx-1.10.2]#make&& make install

配置Nginx主负载均衡器:192.168.159.128

http {

    include       mime.types;

   default_type application/octet-stream;

  keepalive_timeout  65;

upstream www_server_pools{

        server192.168.159.130:80  weight=1;   #定义130131两个web 节点

        server192.168.159.131:80  weight=1;

   }

      server {  #定义代理的负载均衡域名虚拟主机

       listen   80;

       server_name  http://www.sky9896.com/;

        access_log logs/host.access.log  main;

        location/ {

    proxy_pass http://www_server_pools;  #请求发送WWW_server_pools里面的节点

    proxy_set_headerHost $host;

    proxy_set_header X-Forwarded-For $remote_addr;

          }

        }

  }

Nginx web1web2的配置相同:192.168.159.130    192.168.159.131

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_www.log  main;

  keepalive_timeout  65;

    server {

       listen       80;

      server_name  www.sky9896.com;

        location/ {

           root   html/www;

           index  index.html index.htm;

        }

测试:web1=web2的配置操作是一样的

[root@~]# mkdir  /application/nginx/html/www

[root@localhost html]# ll

drwxr-xr-x. 2 root root  4096 Dec 29 19:31 www

[root@localhost html]# cd www

[root@localhost www]# ll

-rw-r--r--. 1 root root    21 Dec 29 19:31 index.html

[root@NFS-Server www]# cat  index.html  #web1站点

192.168.159.130 www

[root@localhost www]# cat index.html  #web2站点

192.168.159.131 www

[root@NFS-Server html]# /application/nginx/sbin/nginx-t

nginx: the configuration file /application/nginx-1.10.2/conf/nginx.confsyntax is ok

nginx: configuration file /application/nginx-1.10.2/conf/nginx.conftest is successful

[root@NFS-Server html]# /application/nginx/sbin/nginx

[root@ www]# vi  /etc/hosts  #做好192.168.159.130本地hosts解析

192.168.159.130  www.sky9896.com

 [root@ www]#curl www.sky9896.com   #测试web1

[root@ www]# vi  /etc/hosts #做好192.168.159.131本地hosts解析

192.168.159.130 www

192.168.159.131  www.sky9896.com

[root@ www]# curl www.sky9896.com   #测试web2

192.168.159.131 www

主负载均衡器:192.168.159.128作为客户端的测试结果如下:

[root@www ~]# cat /etc/hosts   #hosts解析

192.168.159.128 www.sky9896.com

[root@www ~]# curl  www.sky9896.com

192.168.159.131 www

[root@www ~]# curl  www.sky9896.com

192.168.159.130 www

测试小结:

1.如果是关掉任一个web节点,网站业务不受影响,访问请求都会定位到其他的某个节点上。

2.如果所有web节点都宕掉了,此时,会出现如下情况:

[root@www ~]# curl  www.sky9896.com

502 BadGateway

502 BadGateway


nginx/1.10.2