nginx实现负载均衡

1.利用上篇博客编译nginx的源码包(在server1虚拟服务器上)
2.在自己安装nginx的目录下查看nginx命令的位置,为了方便使用,将其连接到系统命令目录/sbin下
这里写图片描述

3.去掉nginx的版本号
cd nginx-1.14.0/src/core

 vim nginx.h
  /*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_


#define nginx_version      1014000
#define NGINX_VERSION      "1.14.0"
#define NGINX_VER          "nginx"   # 去掉版本号

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "NGINX"
#define NGX_OLDPID_EXT     ".oldbin"


#endif /* _NGINX_H_INCLUDED_ */

这里写图片描述
4.nginx-1.14.0/auto/cc vim gcc
注释172行
这里写图片描述
5.打开nginx ,查看nginx是否可用
nginx 打开后可以查看进程
这里写图片描述
打开nginx : nginx
关闭nginx : nginx -s stop
重新加载nginx : nginx -s reload
6.nginx的默认发布目录是/usr/local/ngxin/html/index.html
这里写图片描述
可以自己编写默认发布文件:
这里写图片描述

二.nginx实现负载均衡

nginx的主配置文件在:/usr/local/ngxin/conf/nginx.conf
1.编辑nginx的主配置文件

worker_processes  1;    # nginx的工作进程数,因为该虚拟机的CPU核数为1  (lscpu可查看)
events {
    worker_connections  65536;    # 进程最大连接数,一个cpu为65536,两个cpu为65536*2 
}

http {
        upstream westos {
        #ip_hash                     # 负载均衡的算法,不写算法默认使用rr(轮询)
        server 172.25.1.2:80;        # 后端服务器server2
        server 172.25.1.3:80;        # 后端服务器server3
        server 127.0.0.1:80 backup;  # 后端服务器全坏时的主备
        }
    include       mime.types;
    default_type  application/octet-stream;

        server {
                listen 80;     # nginx监听80端口
                server_name www.westos.org;   # 访问域名www.westos.org

                location / {
                proxy_pass http://westos;  #访问上边的虚拟主机
                }
        }
}

2.查看系统支持最大文件数:

sysctl -a | grep file
vim /etc/security/limits.conf
  最后一行:nginx   -       nofile  65536   (使nginx工作在nginx的用户空间)

3.创建nginx用户useradd -M -d /usr/local/ngxin/ nginx (指定家目录)
4.重新加载nginx :

 nginx -s reload

5.在测试端测试curl www.westos.org
(1).负载均衡算法rr:
这里写图片描述
(2).负载均衡算法给定权重:
在虚拟主机部分给定后端服务器权重:
server 172.25.1.2:80 weight=2 ; # 后端服务器server2
server 172.25.1.3:80; # 后端服务器server3
这里写图片描述
(3).负载均衡算法ip_hash(同一个ip访问后端服务器不变)
这里写图片描述

三.在nginx中静态添加模块sticky

Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route

1.客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
2.后端服务器处理完请求,将响应数据返回给nginx。
3.此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
4.客户端接收请求,并保存带route的cookie。
5.当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。

1.关闭之前的nginx

nginx -s stop

2.解压tar zxf nginx-1.10.1.tar.gz (nginx稳定版)
解压tar zxf nginx-sticky-module-ng.tar.gz(nginx sticky模块)
3.编译安装

cd nginx-1.10.1
  ./configure --prefix=/opt/ngxin --with-http_ssl_module --with-http_stub\
  _status_module --with-threads  --with-file-aio --add-module=/root/nginx\
  -sticky-module-ng  必须改变安装路径,不然会覆盖之前的nginx,而且之前选择的参数这次也必须选择(这叫静态添加模块)
make
make install 

这里写图片描述
4.编辑配置文件加上sticky算法(在这儿为了方便把之前的复制过来)
这里写图片描述
5.在浏览器中测试
这里写图片描述
这里写图片描述
可见浏览器中将后端服务器中的信息缓存,以便下次使用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值