以前面试新人的时候,我总喜欢问他们的职业规划,90%以上的小伙伴都有一个技术总监目标。做技术的人都有一颗上进的心,但最终达到目标的又有几人呢。
我入行 10 余年,从 2017 年短暂接触后端(NodeJS)以来,终于在 2023 年才算是真正迈入了后端的世界。有的时候机会需要自己创造,那是我还是前端技术经理,我自荐去担任新项目的项目经理,才算是有了机会进入后端世界。
言归正传,接手了一个 Spring Cloud 的微服务项目,各个服务间通过 Dubbo 通讯,服务分别部署在不同的物理服务器上面。接手后我发现每次更新都比较麻烦(虽然已经使用 Jenkins,但是由于每个服务的副本在不同的服务器上面,每次更新都需要每个服务、每个服务器进行操作)。综合服务器资源和服务所需资源后,我觉得可以将所有服务都部署到同一台服务器上面,然后创建多个副本,这样我在更新的时候就可以按服务器实例更新所有服务或者更新指定服务。
Docker 安装、容器启动等就不在赘述了,docker compose up -d,服务都正常启动,看起来一切正常。接口测试也正常,突然发现部分接口不正常,查看日志后发现,Dubbo服务通讯异常。
查看Nacos注册中心后发现,所有Dubbo服务元数据注册的服务IP都是172.17.0.1。这是什么情况?登录服务器,ip addr查看 ip 信息,发现有一个docker0的网卡。
1 | ... |
看起来是 Dubbo 服务获取IP地址的时候获取到了容器的IP地址,立马查看Dubbo官方文档,打包部署
,新增配置如下:
1 | environment: |
重启服务后,一切正常。
[越努力,越幸运!]