之前团队的nginx管理,都是运维同学每次去修改配置文件,然后重启,非常不方便,一直想找一个可以方便管理nginx集群的工具,翻遍web,未寻到可用之物,于是自己设计开发了一个。
效果预览
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
- 集群group管理界面
可以管理group的节点,配置文件,修改后可以一键重启所有节点,且配置文件出错时会提示错误,不会影响线上服务。
2.集群Node节点管理
3 .集群Node节点日志查看
- 生成的配置文件预览
- vhost管理
设计思路
数据结构:
一个nginxGroup,拥有多个NginxNode,共享同一份配置文件。
分布式架构:Manager节点+agent节点+web管理
每个nginx机器部署一个agent,agent启动后自动注册到manager,通过web可以设置agent所属group,以及管理group的配置文件。
配置文件变更后,manager生成配置文件,分发给存活的agent,检验OK后,控制agent重启nginx。
关键技术点
分布式管理
一般分布式可以借助zookeeper等注册中心来实现,作为java项目,其实使用EurekaServer就可以了:
manager加入eureka依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
然后在入口程序添加 @EnableEurekaServer
agent 添加注册配置:
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http