概述
1. 7层负载均衡(nginx)
1. 停掉4层的环境
systemctl disable --now keepalived.service # 停用之前的4层协议方式
2. 源码安装nginx
tar zxf nginx-1.22.1.tar.gz
具体方式是源码编译“三部曲”
./configure # 负责检查环境,生成指导安装的文件makefile
make # 根据生成的makefile文件指导,生成二进制文件
make install # 根据生成的二进制文件,进行安装
2.1 ./configure
./configure --help # 可以添加可选项,进行自定义安装
yum install -y gcc # 安装C编译器
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module # 指定位置进行安装
yum install -y pcre-devel # 只需要在缺的包后面加入-devel,即可安装
2.2 make
make clean # 删除之前的编译
vim auto/cc/gcc # 禁用该文件里面的debug,只有开发环境需要debug
重新执行源码编译三步曲前两步
2.3 make install
3. nginx的基本使用
/usr/local/nginx/sbin/nginx # 启动服务
sbin/nginx -s stop # 停用
3.1 nginx软链接以及使用(无启动脚本)
3.2 脚本启动nginx
4. nginx平滑升级(在线升级)
在新版本上
不要执行make install
启动nginx时候需要用完整路径,而不是软链接
vim auto/cc/gcc # 修改为相同配置
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module # 相同
make
cd /usr/local/nginx/sbin/
cp nginx nginx.old# 对原始nginx程序进行备份
\cp -f nginx /usr/local/nginx/sbin/ # 复制新版本的nginx到原始目录中
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` # 发送平滑迁移信号 USR2: 启动新的主进程,实现热升级
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin` # 发送WINCH信号给旧版主进程,旧版主进程就开始从容关闭
4. nginx平滑回退
\cp -f nginx_26 nginx # 恢复备份kill -HUP `cat /usr/local/nginx/logs/nginx.pid.oldbin` # 启动版本的worker进程kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` # 在新版本上进行回退kill -WINCH `cat /usr/local/nginx/logs/nginx.pid` # 关闭新版本的worker进程kill -9 `cat /usr/local/nginx/logs/nginx.pid`
5. 问题
执行USR2没有出现新的Master进程信息,日志文件报错
execve()failed while executing new binaryprocess "nginx"(2:No such file or directory)
这是因为之前使用的是软链接的方式打开的nginx,在升级的时候找不到路径。
解决:使用绝对路径打开nginx