dokcer swarm 部署go-micro微服务应用

微服务应用使用容器部署非常方便,但是当应用服务注册自身地址(ip:port)到服务注册中心的时候,如果注册的是容器内的ip,别的服务是无法访问到的。 解决这个问题,可以在运行容器的时候指定网络模式为 host (–net=host) ,这样就可以跳过 Docker 的独立网络栈,直接通过本机IP端口就可以访问,但是这样会大量占用本地端口。 最好的场景还是后端服务都在容器网络中,仅 API 网关暴露一个端口供外部访问,但是同时还后端服务还需要能实现跨机器的网络连通。 早期 Docker 本身的容器网络本身并不支持跨机器,也就是说明如果容器部署在不同的节点(服务器)上面,只能通过暴露端口到宿主机上,再通过宿主机之间进行通信。Docker 12.0 之后的版本自带 Docker Swarm,Docker Swarm 的 Overlay 网络驱动可以实现跨主机网络通信。Kubernetes 固然好,但是同时也非常重,学习成本也很大,Swarm 在小项目中还是有用武之地的。 dokcer swarm 集群搭建 准备两台安装有 docker 的机器: 192.168.0.1 192.168.0.2 192.168.0.1 创建master节点 # docker swarm init # docker swarm join \ --token SWMTKN-1-3uu3gjkdt6xgk06wd1c9gfog8xec99ga69ilcclyzyk181n5ki-6f7frw75gvpdwsl1yvpf885lw \ 192.168.0.1:2377 This node joined a swarm as a worker. 复制上面的 docker swarm join … 在 192.168.0.2 上执行,即将本机加入 swarm 集群。 至此,我们已经创建了一个最基础的 swarm 的集群,执行命令查看: # docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS r76ighlnw0p2r0tbd9wmoqaep server2 Ready Active rzqbzl58hlu89xoty4cedn0er * server1 Ready Active Leader 创建 overlay 网络 先创建一个可以跨机器的 overlay 网络...

July 18, 2019 · 2 min · 徐旭