nginx实现负载均衡

一、nginx的安装编译

server1:

[1] nginx的安装包:nginx-1.14.0.tar.gz

[2] 解压 tar zxf  nginx-1.14.0.tar.gz

进入解压文件,修改编译配置(版本号、占空间大小...)

[root@server1 nginx-1.14.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README

[root@server1 nginx-1.14.0]# vim src/core/nginx.h
14 #define NGINX_VER          "nginx"    ##去掉版本号

[root@server1 nginx-1.14.0]# vim auto/cc/gcc
172 #CFLAGS="$CFLAGS -g"          ## du  -sh 注释172行之后nginx占用空间小

[3] 编译 ./configure    编译 make   make install

make就做了编译汇编的工作,他是根据makefile的文件来编译汇编的;而makefile是configure根据一个叫做 makefile.in的模板文件生成的;makefile.in是由一个叫automake的工具生成的,configure是由一个叫 autoconf的工具生成的。make install把编译好的文件复制到指定的目录,说到底就是调用了install命令。

[root@server1 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module 
--with-http_stub_status_module --with-threads  --with-file-aio 
## 编译不成功时看错误提示:安装gcc 和 两个依赖项pcre-devel和 openssl-devel,编译完成生成Makefile文件!
[root@server1 nginx-1.14.0]# make && make install

./configure 解释说明:
--help:获得其支持使用的选项
--prefix=/PATH/TO/SOMEWHERE:指定默认安装位置;默认为/usr/local/;
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
--enable-FEATURE[=ARG]:开启指定特性以及安装路径;默认开启时无须指定;
--disable-FEATURE:关闭指定特性;默认关闭时无须指定;
--with-PACKAGE[=ARG]:安装指定依赖包以及其安装路径;
--without-PACKAGE:不安装指定依赖包;

注意:

1. 上面make后,可以使用make clean将编译参数清空,接着重新make;
2.上面configure发现错误,可以使用makedistclean,将configure参数全部清空,接着重新./configure–>make;

 [4] 打开nginx

[root@server1 nginx-1.14.0]# cd /usr/local/nginx/
[root@server1 nginx]# cd sbin
[root@server1 sbin]# ls
nginx
[root@server1 sbin]# du -sh      ##查看nginx占用大小
888K    .
[root@server1 sbin]# cd ..
[root@server1 nginx]# ls
conf  html  logs  sbin
[root@server1 nginx]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin   ## 设置快捷方式
[root@server1 nginx]# nginx                   ##打开nginx
[root@server1 nginx]# netstat -antlp      ##查看打开nginx端口

 

打开nginx : nginx
关闭nginx : nginx -s stop

加载nginx查看错误:nginx -t
重新加载nginx : nginx -s reload

 

二、nginx实现负载均衡

server1:

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

[1] 编辑nginx的主配置文件

 

  2 user  nginx nginx;
  3 worker_processes  1; 

如果是2核cpu,worker_processes  2; worker_cpu_affinity 01 10;

如果是4核cpu,worker_processes  4; worker_cpu_affinity 0001 0010 1000 1000;

 4  events {
 5     worker_connections  65536;    # 进程最大连接数,一个cpu为65536,两个cpu为65536*2
 6 }

 16 http {
 17         upstream westos {             # 负载均衡的算法,不写算法默认使用rr(轮询)
 18         server 172.25.254.2:80;   # 后端服务器server2
 19         server 172.25.254.3:80;    # 后端服务器server3

 20         server 172.25.254.1:8080  backup;   # 后端服务器全坏时的主备
 21         }
 22     include       mime.types;
 23     default_type  application/octet-stream;

119         server {
120                 listen 80;           # nginx监听80端口
121                 server_name www.westos.org;         # 访问域名www.westos.org
122
123                 location / {
124                         proxy_pass http://westos;               #访问上边的虚拟主机
125                 }
126         }

##创建nginx用户useradd -M -d /usr/local/ngxin/ nginx (指定家目录)
[root@server1 conf]# useradd -M -d /user/local/nginx -u 800 nginx  
[root@server1 conf]# id nginx
uid=800(nginx) gid=800(nginx) 组=800(nginx)
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload
[root@server1 conf]# ps ax

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

[root@server1 conf]# sysctl -a |grep file
fs.file-nr = 512    0    98865
fs.file-max = 98865

[root@server1 conf]# su - nginx
-bash-4.1$ ulimit -a
open files                      (-n) 1024

[root@server1 conf]# vim /etc/security/limits.conf ##最后一行添加(使nginx工作在nginx的用户空间)
nginx           -       nofile          65535

[root@server1 conf]# su - nginx
-bash-4.1$ ulimit -a
open files                      (-n) 65535

[4].重新加载nginx :

[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload

server2和server3:

打开httpd

[root@server2 ~]# /etc/init.d/httpd start
[root@server3 ~]# /etc/init.d/httpd start

在172.25.254.96的物理主机上测试(或者浏览器搜索www.westos.org):

[1] rr算法 负载均衡

[2] 修改权重:

http {
        upstream westos {
        server 172.25.254.2:80 weight=2;   
        server 172.25.254.3:80;
        }

[3] down 掉server2:

http {
        upstream westos {
        server 172.25.254.2:80 down;
        server 172.25.254.3:80;
        }

[4] server2、3down 时,server1 作为主备

http {
        upstream westos {
        server 172.25.254.2:80;
        server 172.25.254.3:80;
        server 172.25.254.1:8080 backup;
    }

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

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

[1].关闭之前的nginx

nginx -s stop

[2].make  clean 清除Makefile文件

[root@server1 nginx-1.14.0]# make clean   ## 删除Makefile文件
rm -rf Makefile objs
[root@server1 nginx-1.14.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README

[3].添加sticky模块

[root@server1 ~]# yum install unzip
[root@server1 ~]# unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
[root@server1 ~]# ls
nginx-1.14.0
nginx-1.14.0.tar.gz
nginx-goodies-nginx-sticky-module-ng-08a395c66e42
nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

[4].重新编译安装

[root@server1 conf]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads  --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/
[root@server1 conf]# make && make install
[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf            ##没有变化,只是打了补丁

[5].在浏览器中测试

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值