负载均衡nginx

用server1来负载均衡后端的2和3
调度器对后端的realserver没有健康检查,并不知道realserver出现问题
DR模式不足
1、LVS-RS必须在同一个VLAN
2、RS上绑定VIP,风险大
NAT模式不足
RS/ROUTER配置策略路由,需要原路进返
TUNNEL模式
1、RS配置复杂(IPIP模块)
2、RS上绑定VIP,风险大
主要增加了一个ip头,做了一个IP封装
第四种模式:FULLNAT,默认下不支持,需要编译内核。实现LVS-RealServer间跨vlan通讯,并in/out流都经过LVS。
DR模式中最重要的是更改MAC地址,经过LVS,就把MAC地址更改成了后端的rs。通过二层链路层直接转发到后端。
缺点:第四种模式解决了以下问题
LVS各转发模式运维成本高
缺乏攻击防御模块

--SYNPROXY:synflood攻击防御模块
-=其他TCP FLAG DDOS攻击防御策略

性能无法线性扩展

--Cluster部署模式

FULLNAT的主要思想:
引入local address(内网地址),cip-vip转换为lip->rip,而lip和rip均为IDC内网IP,可以跨vlan通讯
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RS不知道客户端地址

七层
haproxy、nginx
四层做流量尽摊。
在数据链路层,没有IP,只做流量转发
CIP Common Industrial Protocol, 通用工业协议
RIP是Routing Information Protocol(路由信息协议)
./configure --with 默认情况下这些是没有的,就是不加,–without 默认是加的 --prefix=/usr/local/nginx指定安装路径
make编译,编译完成之后,在nginx-1.20.2/objs/中,
执行make install要在makefile同路径下执行,执行结束之后,这个路径就不用了,要执行

cd /usr/local/nginx/
做软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
which nginx
/usr/local/bin/nginx
nginx -t #检查语法
nginx 
ps ax #启动
nginx
ps stop #关闭
netstat -antlp
curl localhost

在主机上

curl 172.25.254.1

默认访问的是server1上的

cd html/
ls
cat index.html

nginx配置负载均衡

cd /usr/local/nginx/
ls
cd conf/
pwd
vim nginx.conf  #主配置文件

nginx 对后端有自动进入健康检测
定义负载均衡器的名称,并且设置了相应的server地址
在这里插入图片描述
在这里插入图片描述

nginx -t #检测
如果语法没有问题
nginx -s reload
nginx出现了问题
Address already in use
用lsof -i:80查看占用了80端口的PID,使用kill命令杀死
kill PID

做解析
在本机

vim /etc/hosts
172.25.254.1 www.westos.org

出现502时,表示没有可用后端
docs.nginx.com
server localhost backup
只有当所有的server全挂了以后,才会访问backup

server 172.25.254.2:80 weight=2;  #权重,会连续执行2次

在这里插入图片描述
ip_hash时根据客户端ip来进行负载均衡,相同客户端Ip过来访问的时候,调度到同一个后端服务器处理。

server 172.25.254.2:80 down; 服务器手动下线#

CDN:分布式集群,主要做缓存,1、加速客户端的访问,也是反向代理机制。2、
client -> dns -> CDN(cache) ->server ->CDN(cache) -> client
server拿到的是CDN地址,拿不到客户端ip地址的,
sticky cookie不支持
在这里插入图片描述
问题1:如何支持STICKY COOKIE

1.扩充调度算法
重新编译
cd nginx-1.20.2/
ls
下载最新版本:nginx-goodies-nginx-....
unzip nginx-go....
在源码路径需要清理。
cd /nginx/nginx-1.20.2/
ls
make clean
./configure 之前的那些条件之上再加上--add-module=nginx-goodies-nginx-....绝对路径
vim auto/cc/gcc

关掉DEBUG
在这里插入图片描述

隐藏版本
vim src/core/nginx.h

在这里插入图片描述

编译之前停掉nginx
nginx -s stop
make #编译
cd objs/
du -h nginx
cd nginx /usr/local/nginx/sbin/
cd /usr/local/nginx/sbin/
ls
su -h nginx
cd /usr/local/nginx/conf/
ls
vim nginx.conf

在这里插入图片描述

nginx -t
nginx

通过ip访问的话

vim nginx.conf

在这里插入图片描述
四层LVS之后,可以直接将流量分到nginx这里
lvs负载到nginx,nginx再调度后端的apache,apache属于web层,也是就是realserver,接入层到lamp。
nginx也可以作为一个web服务器使用。

cd /usr/local/nginx/conf/
la 
vim nginx.conf
pa axu
useradd nginx
id nginx

在这里插入图片描述
问题2:设置开机自启动
baidu搜nginx systemd

cd 
ll #查看根目录
cd /usr/lib/systemd/system
vim nginx.service

在这里插入图片描述
启动脚本

systemctl daemon-reload
ps ax
systemctl stop nginx
nginx -s stop
systemctl start nginx
ps axu
systemctl reload nginx
cs /usr/local/nginx/conf/
vim nginx.conf

在这里插入图片描述
worker_process 是按照CPU的核心计算的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个CPU核心绑一个worker

nginx -s reload
vim nginx.conf

在这里插入图片描述
linuxepoll模型
并发连接数,每个worker同时可以处理的,可以进行以上处理,reload也没有问题,但是并发如果超过了1024,日志中会有大量的报错

ulimit -a

建立一个连接就会消耗掉linux内核的一个文件描述符。
kernel>system>app

sysctl -a|grep file
#内核中的值是根据操作系统的内存来进行设置
free -m
vim /etc/security/limits.conf
#这个文件即改即生效,nofile 后面的数字与nginx.conf保持一致。

在这里插入图片描述zh
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
问题:nginx平滑升级
在这里插入图片描述
在这里插入图片描述
内存热生效:改完nginx.conf不用reload就可以直接生效了
下载 nginx-1.21.1.tar.gz
在nginx开启的情况下

tar zxf nginx-1.21.1.tar.gz
cd /nginx-1.21.1/
ls
vim auto/cc/gcc

在这里插入图片描述

./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx --add-module=nginx-goodies-nginx-....绝对路径
make
cd objs/
ll nginx
du -h nginx
进入原始的nginx
cd /usr/local/nginx/sbin/
ls
cp nginx nginx.old
cd -
ls
pwd
alias
\cp -f nginx /usr/local/nginx/sbin/   #\转义,-f强制  覆盖
cd /usr/local/nginx/sbin/
ls
ll
ps ax|grep nginx #获得当前nginx主进程(master)PID
kill -USR2 主进程PID
ps ax|grep nginx
curl -I 172.25.254.1
kill -WINCH 旧主进程PID
ps ax|grep nginx
curl -I 172.25.254.1/localhost
版本回退
还原nginx程序:\cp -f nginx.old nginx
唤醒原程序:kill -HUP 原进程PID
ps ax|grep nginx
回收新版本的worker进程:kill -WINCH 新进程PID
关闭新版本主进程:kill -QUIT 新进程PID
ps ax|grep nginx
kill -9 新进程PID #这步可不做

问题:设置并发连接数

cd .. #返回上一级目录
cd /usr/local/nginx/
ls
vim nginx.conf
html#默认发布目录
cd html/
mkdir download
cd download/
ls
在目录中放一张照片
控制下载的并发
cd /usr/local/nginx/conf/
vim nginx.conf

在这里插入图片描述
在这里插入图片描述
在主机上测试

ab -c10 -n10 http://172.25.254.1/down/vim.jpg #ab压测 -c并发连接数、-n次数

在server1

cat /usr/local/nginx/logs/access.log
nginx -s reload

http状态码

cd /usr/local/nginx/conf/
vim nginx.conf
nginx -s reload

在这里插入图片描述
在这里插入图片描述
在本机上做测试

ab -c1 -n10 http://172.25.254.1/down/vim.jp

在server1

cd /usr/local/nginx/conf/
vim nginx.conf
控制请求数,排队的命令
nginx -s reload

在这里插入图片描述
在本机上做测试

ab -c1 -n10 http://172.25.254.1/down/vim.jp
也可以
curl -I 172.25.254.1/download/vim.jpg

以下实验和上述一样的操作,只是改变里面的东西
限制流量,控制带宽
在这里插入图片描述
自动索引
在这里插入图片描述
缓存可以降低网站带宽,加速用户访问
在这里插入图片描述
日志轮询
server1

data +%F -d -1day #午夜12点
cd /usr/local/nginx/logs
vim /opt/nginx_log.sh

在这里插入图片描述

chmod +x /opt/nginx_log.sh
crontab -e
crontab -l
ls
ll

在这里插入图片描述
查看nginx日志
下载goaccess-1.4.tar.gz

tar zxf goaccess-1.4.tar.gz
cd goaccess-1.4/
./configure --enable-utf8 --enable-geoip=legacy
yum search geoip
rpm -q GeoIP.x86_64

下载和查找出来的版本一样的GeoIP

rpm -ivh 安装包
yum install ncurses-devel -y
make
which goaccess
echo $PATH
cd
goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html
想要这个命令在后台运行的话,ctrl+z
bg

在主机上测试

ab -c1 -n100 http://172.25.254.1/index.html
ab -c10 -n200 http://172.25.254.1/report.html

禁用不必要的日志
在这里插入图片描述
访问172.25.254.1/status
对于上一张图片的操作日志不必要访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
站点目录和文件的限制
在这里插入图片描述
中文乱码

cd /usr/local/nginx/htm/
vim index.html

在这里插入图片描述

vim nginx.conf

在这里插入图片描述
限制Ip
在这里插入图片描述
在这里插入图片描述

cd /etc/pki/tls/certs/
ls
ll makefile
make cert.pem
cn
shaanxi
xi'an
westos
linux
server1
root@example.com
ll cert.paem
mv cert.pem /usr/local/nginx/conf/
nginx -t
nginx -s reload
netstat -antlp
curl -K https://172.25.254.1 #K加密
vim nginx.conf

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值