企业运维--七层负载均衡

一、nginx源码下载及配置

1.下载nginx压缩包并解压
在真机上下载nginx压缩包
发送到server1上并解压

1.scp kiosk@172.25.8.250:/home/kiosk/Desktop/nginx-1.20.1.tar.gz .

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述
2. nginx的./configure安装脚本配置
configure的’–prefix’会制作出makefile(安装路径)

(1)[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module      ###脚本配置参数
   yum install -y gcc        ###报错,缺少c语言
   yum install -y pcre-devel  ###缺少pcre
   yum install -y openssl-devel	###缺少openssl
(2)[root@server1 nginx-1.20.1]# make    ###编译
(3)[root@server1 nginx-1.20.1]# make install   ###安装

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述make ###编译
在这里插入图片描述 make install ###安装
检测语法和相应目录,查看安装路径,建立软链接
在这里插入图片描述在这里插入图片描述在这里插入图片描述启动nginx

[root@server1 sbin]# nginx    ##启动(重复启动会报错)
[root@server1 sbin]# nginx -s reload   ###刷新
[root@server1 sbin]# nginx -s stop     ###关闭
[root@server1 sbin]# curl localhost   ###访问nginx

在网页访问本机,会有nginx页面
在这里插入图片描述在这里插入图片描述
二.nginx的负载均衡及健康监测(/usr/local/nginx/conf/)

vim nginx.conf
nginx -t     ###检测语法
nginx -s reload   ###刷新

编辑配置文件,将worker_processes改为2,此时nginx的工作数为2,但是为两个内核随机使用。如果将worker_processes改为auto,将会根据内核数量进行匹配
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述上述方式存在弊端,不能做到一个内核负责一个worker,所以需要将内核和worker进行绑定,同时修改worker_connections:65535(并发数)
在这里插入图片描述ulimit -a 查看file大小依然为1024
在这里插入图片描述vim /etc/security/limits.conf 添加:nginx - nofile 65535
在这里插入图片描述在这里插入图片描述useradd nginx ###新建用户nginx,切换到nginx用户,ulimit -a 查看file大小为65535 usermod -s /sbin/nologin nginx ###nginx用户只在server1上调用nginx,所以将其登陆功能禁掉 vim nginx.conf ##将第一行user改为nginx用户和nginx组 ps axu ###查看nginx的worker用户是否为nginx,其中master负责调用
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述events下:use epoll
http下加入ip:westos组中有2和3
在这里插入图片描述在这里插入图片描述在这里插入图片描述反向代理:当访问www.westos.org时,直接访问2和3
在这里插入图片描述在浏览器所在主机添加地址解析:172.25.8.1 server1 www.westos.org
在这里插入图片描述测试:在真实主机上:curl www.westos.org------>报错502:服务本身拒绝------->2和3上未开启httpd
在这里插入图片描述开启后出现轮叫
在这里插入图片描述
关闭3,只有2在被访问
在这里插入图片描述在这里插入图片描述关闭2和3的httpd,在1中下载httpd并在配置文件中修改端口为8080,默认发布目录中写入server1,启动httpd------>curl localhost:8080---->server1
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述编辑nginx配置文件,在http下加入ip:172.25.8.1:8080 backup;(backup为备用),将nginx进行reload
在这里插入图片描述在这里插入图片描述测试:真实主机 curl www.westos.org------->server1
开启2的httpd,curl之后只有2,只要2和3有一个没down掉,1就不会启用
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

三.权重和哈系算法

1.权重:
vim nginx.conf-------->server 172.25.8.2:80 weight=2;(2号上权重为2,默认为1)
reload之后测试:2比3多两倍
在这里插入图片描述在这里插入图片描述2.哈系算法:
vim nginx.conf-------->ip_hash;
在这里插入图片描述
在这里插入图片描述

四.第三方模块sticky

sticky模块与Ip_hash都是与负载均衡算法相关,但又有差别,差别是:

1.ip hash,根据客户端的IP,将请求分配到不同的服务器上
2.sticky,根据服务器给客户端的cookie,客户端再次请求时会带上此cookie,nginx会把有此cookie的请求转发到颁发cookie的服务器上

注意:在一个局域网内有3台电脑,他们有3个内网IP,但是他们发起请求时,却只有一个外网IP,是电信运营商分配在他们连接那个路由器上的,如果使用 ip_hash 方式,则Nginx会将请求分配到不同上游服务器,如果使用 sticky 模块,则会把请求分配到办法cookie的服务器上,实现:内网nat用户的均衡。这是iphash无法做到的
Sticky工作原理:

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

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

下载解压
下载unzip解压软件,用unzip命令解压
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述make clean---->清除之前的Makefile
在这里插入图片描述

在./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42     ###添加--add-module模块

在这里插入图片描述ll Makegile
在这里插入图片描述关闭nginx
在这里插入图片描述编辑配置文件:添加sticky并注释(不注释语法会出错)
在这里插入图片描述在这里插入图片描述在这里插入图片描述make ##编译
在这里插入图片描述du -h nginx 查看大小
在这里插入图片描述vim auto/cc/gcc ###编辑c语言文件
—debug后面一行注释----
在这里插入图片描述在这里插入图片描述vim src/core/nginx.h ###编辑nginx头文件
----define NGINX_VER “nginx”(删除版本号)
在这里插入图片描述

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42     ###添加--add-module模块

在这里插入图片描述make ##编译
在这里插入图片描述在 /usr/local/nginx/sbin/目录下,备份原文件,将修改后的objs下的nginx文件拷贝过来
在这里插入图片描述

cd /usr/local/nginx/conf/------>vim nginx.conf--->删除sticky的注释

在这里插入图片描述
在这里插入图片描述nginx -t ##检测语法
nginx ##开启
测试:curl localhost -I------->显示信息中无版本号
在这里插入图片描述

五.平滑升级

建立链接:真实主机(下载不需要进行scp)
[root@foundation8 ~]# iptables -t nat -I POSTROUTING -s 172.25.8.0/24 -j MASQUERADE
在server1中下载新版本
[root@server1 conf]# vim nginx.conf -----注释sticky ##显示版本号
lftp 172.25.254.250:/pub/docs/lamp> get nginx-1.20.2.tar.gz ##下载1.20.2版本
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
将隐藏版本号的nginx文件删除,还原原来的nginx文件
mv nginx nginx.new
rm -f nginx.new
mv nginx.old nginx
在这里插入图片描述tar zxf nginx-1.20.2.tar.gz ###解压
在这里插入图片描述

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make

在这里插入图片描述在这里插入图片描述

cd /usr/local/nginx/sbin/
ls
cp nginx nginx.old    ##将20.1的版本复制为old
cd nginx-1.20.2/
\cp -f nginx /usr/local/nginx/sbin/    ###复制20.2的nginx覆盖到20.1的nginx中

在这里插入图片描述
ps ax | grep nginx
kill -USR2 17722
在这里插入图片描述
ps ax | grep nginx
kill -WINCH 17722
curl -I localhost ###显示20.2的版本
在这里插入图片描述在这里插入图片描述版本回退
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值