springcloud+vue docker部署记录—2

springcloud+vue docker部署记录—2

前言

上一篇文章我们部署了单一宿主机下的一套服务,这仅限于个人环境或者测试环境搭建,真正的生产环境下所有的服务必然是在不同的宿主机上(否则微服务就没有意义了),我们提到通过搭建docker swarm集群来实现容器的跨主机通信

阶段

该文档为第二阶段——集群部署
该阶段更加贴合实际的生产环境,我们将所有服务都分散在不同的宿主机上,再通过网络互联,最后只将网关等有需要的服务暴露出去即可

环境准备

虚拟机3台(centOS7)
安装docker

部署架构

主机 ip 集群角色 部署服务
hyper1 10.18.32.215 manager 注册中心、配置中心、网关
hyper2 10.18.32.161 worker mysql, redis, nginx
hyper3 10.18.32.68 worker 子服务A、子服务B

集群搭建

  1. 在hyper1上执行集群初始化命令

    docker swarm init
    #返回如下token信息,则其他主机通过该代码加入集群
    #docker swarm join --token SWMTKN-1-0oxo6qrxwvl8xlneq0jqz2zd87nkj7c0vyf1h9m8kcj3qbzd4v-3eu9zb5athq0s2n79rncbejb1 ip:port
    
  2. hyper2、hyper3加入集群
    加入集群时建议关闭防火墙,或者暴露指定端口
    之后在hyper1输入docker node ls查看集群信息

  3. 在hyper1创建共享网络

    docker network create -d overlay --attchable test-swarm
    #注意网络类型与上文不同,是overlay
    

部署调整

  • redis、mysql及各服务通过–network 加入test-swarm网络
  • 各服务可直接通过配置redis、mysql容器名连接对应数据库(之前只能通过暴露在161宿主机上的端口来访问)
  • 各服务可直接通过配置eureka容器名,将服务注册到其他宿主机的注册中心上

后记

至此,我们只是在之前的基础上搭建一个集群,略微做了点调整,就可以将服务任意地部署在不同的宿主机上,这更加符合真实的生产环境。
docker部署相比于传统的部署方式方便快捷(不用安装mysq,redis、jdk,升级方便,部署过程更加个性化,甚至可以感受到部署过程中的趣味 )。
但是为了搭建高可用的微服务体系,我们往往需要部署多个注册中心保证实例注册和获取的稳定性、多个网关用来做进一步负载以及网关服务的稳定性、多个子服务以缓解各服务的压力提高各服务的稳定性。
如果使用目前介绍的方式部署上述场景,则大量的docker命令明显不合理(传统方式就根本没法玩了),因此下篇文章我们使用docker stack命令进行更复杂场景的部署

上一篇:springcloud+vue docker部署记录—1
下一篇:springcloud+vue docker部署记录—3

猜你喜欢

转载自blog.csdn.net/weixin_42189048/article/details/106232081