nginx负载均衡

1、nginx安装步骤

1、获取安装包
在www.nginx.org网站选择适当的版本
在这里插入图片描述
2、解压安装包,之后进入解压的文件中进行编译和安装的操作
在这里插入图片描述
在这里插入图片描述

3、使用./configure命令来生成Makefile为下一步编译作准备,后面添加一些参数对安装进行控制。
可以使用./configure --help命令选择参数,–with开头的参数表示需要添加的参数,–without开头的参数表示需要删除的参数。
在这里插入图片描述

[root@server1 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx    --with-http_ssl_module  --with-http_stub_status_module 


--prefix=/usr/local/nginx   ##指定路径,这样nginx所有数据会安装到这个文件里,方便备份或者其他操作。
 --with-http_ssl_module   ##安全套接字协议,支持标准的https
--with-http_stub_status_module   ##监控

编辑完成后回车,查看可能出现的错误。
在这里插入图片描述
根据提示安装需要的软件

[root@server1 nginx-1.18.0]# yum install -y pcre-devel gcc openssl-devel 

直到没有错误为止
在这里插入图片描述
之前写入的数据会添加到Makefile文件中
在这里插入图片描述
Makefile文件中的内容会指导我们后续的编译,如果Makefile没有创建,那么之后的make make insatll 命令也无法使用
在这里插入图片描述
4、输入make命令进行编译,make过程中可能会出现错误,所以要根据报错内容解决问题,或者添加缺少的依赖库。
在这里插入图片描述
5、之后输入make install 命令进行安装。
6、make install 安装之后会生成/usr/local/nginx文件,此后修改配置文件需要在这里修改。
7、变更环境变量,添加nginx命令
在 .bash_profile文件中添加nginx的安装路径,之后source .bash_profile文件使其生效。
在这里插入图片描述
之后可以看到nginx已经在环境变量里
在这里插入图片描述
输入nginx命令,可以看到nginx已经在运行
在这里插入图片描述
在这里插入图片描述

使用netstat -antlp命令,可以看到80端口已经存在
在这里插入图片描述
8、使用du -sh命令可以看到nginx程序的大小,这个文件的大小还可以更小。
在这里插入图片描述
我们可以重新安装进行设置。
首先输入nginx -s stop 关掉nginx程序
在这里插入图片描述
之后删除/usr/local下的nginx文件。
在这里插入图片描述
之后在nginx文件中make clean 清除数据
在这里插入图片描述
或者删除nginx安装文件,重新解压一份
在这里插入图片描述
在这里插入图片描述

重新解压完成后,在/nginx-1.18.0/auto/cc/gcc文件中编辑,将debug参数注释掉,这样最终生成的二进制文件会变得很小。
在这里插入图片描述
之后重复./configer make make install 命令重新安装
在这里插入图片描述
安装完成后在/usr/local/nginx可以看到文件大小为不到1M
在这里插入图片描述

2、nginx负载均衡

1、创建用户nginx
在这里插入图片描述
在这里插入图片描述
编辑nginx.conf文件
在这里插入图片描述

在这里插入图片描述
刷新nginx
在这里插入图片描述
ps aux 命令查看用户已经变更
在这里插入图片描述
2、编辑nginx配置文件在/usr/local/nginx.conf中

  1. 添加upstream模块
定义一个负载均衡器,名字叫westos
 upstream westos{
    server 172.25.30:80;
    server 172.25.30:80;                            
    }

在这里插入图片描述

listen 80;   ##监听80端口
server_name www.westos.org;    ##监听www.westos.org域名,当nginx接收到这个域名直接访问。由http协议访问。
location / {          ##location字段可以控制很多路径,访问网站根目录时,执行以下操作
   proxy_pass  http://westos;   ##反向代理,代理到westos(刚刚创建的负载均衡器)
}

在这里插入图片描述

3、 nginx -t 检测语法
在这里插入图片描述
4、nginx -s reload 如果语法没问题直接reload刷新。
5、在真实主机foundation30设置域名解析

vim /etc/hosts
172.25.30.1 server1   www.westos.org

在这里插入图片描述

6、打开server2,server3的httpd服务,在真实主机上测试可以看到nginx负载均衡效果
在这里插入图片描述
7、nginx.conf文件的其他参数

worker_processes  2;         ##worker的进程数,与cpu数绑定,如果不知道cpu数,可以设置为auto,自动模式。
worker_cpu_affinity 01 10;   ##将worker的进程数与cpu静态的进行绑定,这样可以避免cpu上下文切换带来的损耗。01指第一个cpu,10指第二个cpu。
worker_connections  65535;   ##worker的最大连接量,通常设置为65535

8、如果修改worker的最大连接量需要修改配置参数

/etc/security/limits.conf

在文件末尾添加
nginx -   nofile    65535

之后nginx -s reload 重启nginx程序

在这里插入图片描述
9、使用Apache功能进行嗯并发测试,10个用户共5000条请求。

[root@foundation30 Desktop]# ab -c10 -n5000 http://www.westos.org/index.html
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.westos.org (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests


Server Software:        nginx/1.18.0
Server Hostname:        www.westos.org
Server Port:            80

Document Path:          /index.html
Document Length:        8 bytes

Concurrency Level:      10
Time taken for tests:   2.604 seconds
Complete requests:      5000
Failed requests:        0
Total transferred:      1285000 bytes
HTML transferred:       40000 bytes
Requests per second:    1920.21 [#/sec] (mean)
Time per request:       5.208 [ms] (mean)
Time per request:       0.521 [ms] (mean, across all concurrent requests)
Transfer rate:          481.93 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       3
Processing:     1    5   1.3      5      16
Waiting:        1    5   1.3      5      16
Total:          1    5   1.3      5      16

Percentage of the requests served within a certain time (ms)
  50%      5
  66%      5
  75%      6
  80%      6
  90%      7
  95%      8
  98%      8
  99%     10
 100%     16 (longest request)

3、nginx的算法

nginx算法:http://nginx.org/en/docs/http/load_balancing.html
或者在官网查询管理员手册:

https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/

在这里插入图片描述

1、支持权重


http {
    upstream westos{
    server 172.25.30.2:80 weight=2;   server2权重为2
    server 172.25.30.3:80;
    }

结果:我们检测时server2明显比server3被轮叫的次数多一倍
在这里插入图片描述
官网解释:`在这里插入图片描述
2、backup

 upstream westos{
    server 172.25.30.2:80 weight=2;
    server 172.25.30.3:80;
    server 127.0.0.1:80 backup;   ##当后端全部宕机,则访问自己
    }

正常情况下backup是不会起作用的,当后端全部关掉则会直接访问nginx所在的主机

[root@server2 ~]# systemctl stop httpd
[root@server3 ~]# systemctl stop httpd

此时就会启用自己
在这里插入图片描述
在这里插入图片描述
3、ip_hash

upstream westos{
    ip_hash;
    server 172.25.30.2:80;
    server 172.25.30.3:80;   
    }


nginx -s reload 

ip_hash设置完成后不会进行轮询,只要客户端来源不变,那么后端服务器也不会变。
在这里插入图片描述

4、down手动下线某台机器

upstream westos{
    server 172.25.30.2:80 down;   
    server 172.25.30.3:80;
    }

在这里插入图片描述

4、基于Cookies的会话保持

由于sticky cookies模式只有商业付费版本的NginxPlus才能使用,这里使用第三方模块nginx-goodies-nginx-stick-module来基于cookies的会话保持

需求场景
请求经过类似CDN之类的反向代理之后,对后端RS的请求IP变更为反向代理服务器的IP
如果使用基于IP的hash认证则相当于没有作负载均衡
而基于cookies进行验证不会出现这个问题。

[root@server1 ~]# unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip     ##解压第三方模块,在编译时加入
[root@server1 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx    --with-http_ssl_module  --with-http_stub_status_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
    ##使用--add-module参数进行添加第三方模块
[root@server1 nginx-1.18.0]# make
[root@server1 nginx-1.18.0]# make install

对Nginx主配置中服务部分引入cookies模块并进行配置

upstream westos{
    sticky;
    server 172.25.30.2:80;
    server 172.25.30.3:80;
    }

[root@server1 conf]# nginx -s reload

之后可以看到基于cookie模块的负载均衡已经启用,多次刷新也是访问的server2。
在这里插入图片描述
除非清理浏览器的cookie才会重新选择后端服务器
curl命令看不到效果,因为curl不支持cookie

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值