Nginx 使用 NACOS 实现服务发现和反向代理。不用reload
现状
我们想把自己的 http 服务注册 nacos,然后使用nginx 来实现反向代理。官方提供了一个方案是 通过 java 来订阅nacos 。当服务 ip 出现变化的时候。重新生成一份 nginx 配置文件,把然后 通过nginx -s reload 让nginx 进程重启来加载 新的配置文件。
这种方式在 QPS 较高的情况下会造成服务抖动。如果nginx 代理的服务特别多。那主要一个服务出现变化 nginx 就会重启,一天可能重启很多次。
新的方案
我们要解决这个问题,还是得老老实实对nginx 做修改,新开发一个nacos 模块来订阅后端服务。模块已经开发完成,推荐一下.。GitHub - zhwaaaaaa/nginx-nacos-upstream: nginx dynamic upstream module for nacos. subcribe nacos and update address automaticly without reloading config
使用步骤
- 首先得把这个带 nacos 模块的 nginx 下载下来然后编译。
git clone https://github.com/zhwaaaaaa/nginx-nacos-upstream.git
cd nginx-nacos-upstream
./configure --add-module=modules/auxiliary --add-module=modules/nacos && make
2. 启动一个nacos(略,参考nacos 官方文档)。
3. 准备一个 http服务来测试一下。使用 spring+nacos 最方便。一共只有几行代码。https://github.com/zhwaaaaaa/springmvc-nacos-registry。返回自己当前使用的端口
@SpringBootApplication
@EnableDiscoveryClient
public class RegistryDemoApplication {public static void main(String[] args) {SpringApplication.run(RegistryDemoApplication.class, args);}@RestControllerpublic static class RegistryController {@Value("${server.port}")private int port;@GetMapping("/hello")public String helloWorld() {return "Current server is running on " + port;}}
}
配置文件指定 nacos 服务地址
server:port: 8080
spring:application:name: springmvc-nacos-democloud:nacos:discovery:server-addr: 127.0.0.1:8848
4. 使用带 nacos 模块的 nginx 来代理这个服务。准备配置文件
nacos {server_list localhost:8848; # nacos 服务器列表,空格隔开udp_port 19999; #udp 端口号udp_ip 127.0.0.1; #udp ip 地址。udp_bind 0.0.0.0:19999; # 绑定udp 地址error_log logs/nacos.log info;default_group DEFAULT_GROUP; # 默认的nacos group namecache_dir cmake-build-debug/nacos/;
}
http {upstream s {# 这里得指定 为 spring 的项目名,nacos 使用appname 作为 dataiduse_nacos_address data_id=springmvc-nacos-demo;}server {# ... other configlocation ^~ / {proxy_pass http://s;}}
}
启动nginx 。 curl http://127.0.0.1:9999/hello 。
敬请玩吧
Nginx 使用 NACOS 实现服务发现和反向代理。不用reload相关推荐
- Bloom是REST API缓存中间件,充当负载平衡器Nginx和REST API服务之间的反向代理
Bloom是REST API缓存中间件,充当负载平衡器Nginx和REST API服务之间的反向代理 翻译来源:https://gitee.com/yunwisdoms/bloom Bloom是RES ...
- 《Nacos(2) - 服务发现》
<Nacos(2) - 服务发现> 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! <Nacos-服务发现> <Nacos(2) - 服务发现&g ...
- 聊一聊Yarp结合Nacos完成服务发现
背景 Yarp 这个反向代理出来后,相信还是有不少人在关注的. 在 Yarp 中,反向代理的配置默认也是基于配置文件的,也有不少大佬已经把这个配置做成了数据库配置+可视化界面. 仔细想了想,做成数据库 ...
- 这就是你日日夜夜想要的docker!!!---------docker+consul+ nginx集成分布式的服务发现与注册架构
文章目录 一.Docker consul容器服务更新与发现理论 1.基本架构 2.基于nginx和consul构建高可用及自动发现的Docker服务架构 3.Docker consul自动发现服务架构 ...
- nginx动态配置及服务发现那些事
标题, <闲聊nginx动态配置及服务发现的那些事> - 这次的准备闲聊关于nginx服务发现的话题, 按照我以往写文章的性子,估计会迁移一些主题. 毕竟单纯聊nginx和动态服务发 ...
- nacos的服务发现详解
Nacos源码系列整体栏目 [一]nacos服务注册底层源码详解 [二]nacos服务发现底层源码详解 [三]nacos的心跳机制底层源码详解 [四]nacos配置中心的底层源码详解 nacos的服务 ...
- Nginx详解+身份验证+虚拟主机+反向代理负载均衡
一.差异对比 Apache Nginx 配置相对复杂 配置相对简单 原生支持动态和静态页面 支持静态页面 模块相对安全 高性能模块出产迅速.社区活跃 BUG相对较少,消耗资源较多 BUG相对较多,节省 ...
- nginx配置禁特定路径下的反向代理
近期因为项目需要再一次配置了nginx 这次的的需求设计到字符串处理 需要把<域名或ip>/xhr_api/开头的请求转发到内网某机器,同时移除掉xhr_api,这里直接记录下结果,配置非 ...
- Springboot集成nacos实现服务发现和配置中心
Nacos是阿里巴巴开源的服务发现和配置中心的中间件,springboot集成nacos比较方便,只需要以下三步: 1.依赖配置(pom文件) <properties><spring ...
最新文章
- mysql主从复制(master-slave)_mysql主从复制------Master-Slave搭建及注意事项
- 提高IT运维综合管理能力,实现业务服务管理
- 深入理解 Kotlin Coroutine (一)
- 计算机二级web前端,web前端:原生js之Math对象
- 总是想得太简单?试试我的方法
- 带有HttpClient的自定义HTTP标头
- c语言设计一维数组,一维数组 (1)C语言程序设计.pdf
- 系统架构师学习笔记-分布式系统
- php 判断两个数组对象是否相等_PHP是世界上最好的语言
- php正则表达式 什么,php正则表达式是什么?(代码实例)
- day14 匿名函数
- MyBatis-Plus updateById方法更新不了空字符串/null解决方法
- java解压服务器文件夹,java解压7z文件
- 【PS】抠图,快速选择工具
- switch日文键盘打中文_从塞尔达到动森,游戏中使用的中文字体有什么问题?
- 教室录播系统方案_《课堂教学录播专用教室》建设方案及装备标准
- Elasticsearch Refresh vs Flush
- 互联网寒冬,程序员如何逆流而上?
- Unity 3D模型展示之模型高亮
- 手机怎么伪原创火山小视频 本地短视频去水印在线