网站首页 > 技术教程 正文
基于业务新增一个UDP服务的需求,需要通过Nginx反向代理到后端的微服务集群,查阅资料Nginx在1.9.0版本开始就增加了四层转发模块,但不会被默认编译,需要在编译的时候通过参数 --with-stream 开启,此文记录平滑更新Nginx的全过程,同时也适用于Nginx版本的平滑升级。
1、重新编译Nginx
首先拿到原来编译的参数,在原来基础上增加--with-stream
$ cd local/nginx/sbin && ./nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/home/admin/local/nginx-1.18.0 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_geoip_module=dynamic --with-http_flv_module --with-http_mp4_module --with-http_auth_request_module --with-http_stub_status_module
重新编译Nginx,注意不要make install,另外这里建议保持一致的Nginx版本。
$ cd tmp/nginx-1.18.0/
$ ./configure --prefix=/home/admin/local/nginx-1.18.0 --with-stream --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_geoip_module=dynamic --with-http_flv_module --with-http_mp4_module --with-http_auth_request_module --with-http_stub_status_module
$ make -j 4
2、替换二进制文件
备份旧的二进制文件
$ mv /home/admin/local/nginx/sbin/nginx /home/admin/local/nginx/sbin/nginx.old
将重新编译好的二进制文件拷到sbin目录
$ cp objs/nginx /home/admin/local/nginx/sbin/
测试是否兼容或报其他异常,nginx -V查看编译参数是否符合预期
$ cd /home/apps/local/nginx/sbin/ && ./nginx -t
nginx: the configuration file /home/admin/local/nginx-1.18.0/conf/nginx.conf syntax is ok
nginx: configuration file /home/admin/local/nginx-1.18.0/conf/nginx.conf test is successful
3、发送USR2信号
向master进程发送USR2信号后,Nginx首先会重命名它的进程文件为带.oldbin后缀,然后启动一个新的master进程和对应的worker进程,跟旧的进程一起处理请求,具体可以参考官方文档的说明。
After that USR2 signal should be sent to the master process. The master process first renames its file with the process ID to a new file with the .oldbin suffix, e.g. /usr/local/nginx/logs/nginx.pid.oldbin, then starts a new executable file that in turn starts new worker processes
4、发送WINCH信号
向旧的master进程发送WINCH信号后,它会优雅的关闭worker进程,最后只剩下新的worker进程处理请求。
到这一步后,需要结合观察业务是否异常,如有问题可以立即回滚,可以查看官方文档(http://nginx.org/en/docs/control.html),具体有两个选择:
- 发送HUP信号给旧的master进程,再发QUIT信号给新的master进程
- 直接发送TERM信号给新的master进程
5、发送QUIT信号
步骤4结合观察业务确认没有问题后,就可以发送QUIT信号给旧的master进程,至此旧的进程全部关闭,只剩下新进程处理请求。
6、UDP转发配置
nginx配置文件增加stream配置,注意stream模块跟http模块一样,需要配置在nginx的main context里。
stream {
upstream dns {
server 192.168.100.61:53;
server 192.168.100.62:53;
}
server {
listen 53 udp;
proxy_timeout 20s;
proxy_pass dns;
}
}
猜你喜欢
- 2024-10-10 nginx安装部署操作(nginx安装与配置详解)
- 2024-10-10 nginx端口怎么修改(nginx端口修改为80就成Welcome)
- 2024-10-10 快速扫盲容器和服务器之间的区别和联系
- 2024-10-10 使用 PM2 部署 ASP.NET Core 程序
- 2024-10-10 apache&http(apache官网)
- 2024-10-10 LayuiCMSluyun后台模板 拿来即用(layui后端注册登录界面)
- 2024-09-14 安装 Discuz! Q的三种方法(discuz安装使用教程)
- 2024-09-14 centos7稳定nginx搭建,快速搭建nginx
- 2024-09-14 Nginx教程:概念+安装+SSL安装,通过调优Nginx来提高应用性能
- 2024-09-14 Nginx的10个使用场景 # 强化学习(nginx常用功能)
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)