菜鸟之旅nginxdockerspringcloud部署

背景

后台采用spirngcloud的eureka做服务注册与发现,前台vue部署nginx代理服务器统一访问zuul网关。本地服务经过测试好以后,部署服务器上出现一堆问题,敲了2天的liunx命令,看似简单的部署,实际小问题不断,这篇文章记录一下出现的问题解决过程

问题列表

  • eureka由于保护机制导致一些已经下线的服务器依旧存在,通过feign访问到的服务是下线的服务,出现访问问题

本地idea启动服务A往eureka集群x注册一个服务,liunx使用docker生成一个镜像,通过docker run启动服务A,往eureka集群y注册了一个服务,在eureka集群上存在两个相同服务名的服务A,关闭本地idea中启动的服务,eureka保护机制存在集群x上的服务还存在,现在有些feign访问的是eureka集群x的服务,有些feign访问的是eureka集群y的服务。这导致集群x的服务A由于关闭了访问不通。解决办法最简单的重启eureka集群服务

  • idea服务部署上去是代码不是最新问题

出现这个问题是maven打包时没有做 maven clean的操作,对相关的依赖模块做maven clean maven install 重新打包部署到服务器上

  • nginx网关502问题

出现这个问题是目标服务器开启了防火墙没有加入可访问的端口,导致nginx代理访问目标服务器失败,可以在centos7上安装telnet工具测试一下ip 端口是否通畅,其他的端口检查方法:https://www.cnblogs.com/kerry…

  • docker重启服务出现iptables: No chain/target/matchby that name.

开启了防火墙增加了一些端口,重启防火墙以后,重启docker服务遇到上面的问题,需要重启docker服务,centos7下使用sudo systemctl restart docker命令。

  • 阿里云服务器有些端口不可用

安全组策略添加了端口,服务器防火墙开启并加入安全组的端口,发现还是不能访问.使用nmap查看开放的端口:nmap 服务器地址,发现有部分端口关闭了,如下图

防火墙端口开发情况

安全组加入情况

实在解决不了,提交工单给售后工程师,售后工程师第一步要求在服务器执行命令:netstat -ano | grep 6666 查看端口连接情况,输出的是空信息,说明没有处于监听状态

检查一下使用端口的应用程序是否已经正常启动,如果没有应用程序使用端口,那么这个端口通过telnet是访问不通的。
这里的原因:没有应用程序使用访问不通的端口,docker 安装nginx 外部6667端口映射容器80 端口,在nginx.conf配置了两个server 一个server监听80端口,这时候外部访问6667就会来到这个80端口上,另外一个server配置了6666端口,这个6666端口在docker nginx启动容器中没有指定映射,因此6666端口是没有在使用的,可以在运行docker的nginx容器时映射多端口,这样宿主机的6666端口映射到第二个server绑定的端口上,docker run -p 80:80 -p 6666:6666 这里的第二个-p的第二个6666就是server绑定的端口

  • docker 部署nginx容器已经运行,但是外网访问不了

检查云服务器安全组配置,服务器防火墙配置,这里都配置好了,之所以出现这个原因是我端口映射出问题,docker run –name nginx-test -p 6667:6667 -d nginx 因为第二个6667没有在nginx.conf的server下绑定所以不对访问不了,可以增加一个server进行端口绑定,也可以改成docker run –name nginx-test -p 6667:80 -d nginx ,因为nginx的默认配置文件conf.d下有个default.conf 里面已经存在一个server绑定了80端口,这样成功成功运行且能够通过外网访问到6667端口

  • google浏览器对一些端口做了屏蔽,比如6666

也就是说上面费劲千辛万苦部署的6666端口不能访问,具体查看google屏蔽的端口:https://www.jianshu.com/p/7b5…。
解决办法二级域名绑定同一个服务器上,nginx做域名分发。这样二级域名也可以使用80端口

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理