docker swarm部署高可用eureka服务

一.docker swarm搭建

1.比较简单,自行百度

2.查看swarm集群下面的节点

本人将所有的节点都promote成了manager

192.168..1.119作为私有镜像库服务(harbor私有镜像库搭建与使用见上篇博客

将需要在镜像库中的服务在daemon.json文件中注册

保存daemon.json文件后,刷新配置:systemctl daemon-reload

在110、111、112下分别注册私有镜像库服务

执行命令:vi /usr/lib/systemd/system/docker.service 修改docker.service文件,在三台服务器上分别添加红框内容:--insecure-registry=192.168.1.119 \

保存文件后分别执行:systemctl daemon-reload && systemctl restart docker.service

修改代码中eureka的application.yml文件

maven clean -> package -> 构建镜像 ->推送镜像到harbor(详细见上篇博客)

 harbor镜像位置:

分别在三台服务器上拉取eureka镜像:docker pull 192.168.1.119/demo/eureka:latest

在manager节点上创建一个overlay网络:docker network create -d overlay spring-cloud-overlay

查看网络列表:docker network ls

创建overlay网络的目的是:用来保证在不同主机上的容器网络互通的网络模式

编写swarm的stack文件

在manager节点任意位置创建一个eureka.yml 内容如下:

version: '3'
services:
  eureka1:
    image: 192.168.1.119/demo/eureka:latest
    networks:
     spring-cloud-overlay:
        aliases:
          - eureka
    ports:
      - "8761:8082"
    environment:
      - eureka.instance.hostname=eureka1 #指定当前启动服务的hostname
      - spring.cloud.inetutils.preferred-networks=192.168.1
      - EUREKA_SERVICE_LIST=http://eureka2:8082/eureka,http://eureka3:8082/eureka
  eureka2:
    image: 192.168.1.119/demo/eureka:latest
    networks:
      spring-cloud-overlay:
        aliases:
          - eureka
    ports:
      - "8762:8082"
    environment:
      - eureka.instance.hostname=eureka2 #指定当前启动服务的hostname
      - spring.cloud.inetutils.preferred-networks=192.168.1
      - EUREKA_SERVICE_LIST=http://eureka1:8082/eureka,http://eureka3:8082/eureka 
  eureka3:
    image: 192.168.1.119/demo/eureka:latest
    networks:
      spring-cloud-overlay:
        aliases:
          - eureka
    ports:
      - "8763:8082"
    environment:
      - eureka.instance.hostname=eureka3 #指定当前启动服务的hostname
      - spring.cloud.inetutils.preferred-networks=192.168.1
      - EUREKA_SERVICE_LIST=http://eureka1:8082/eureka,http://eureka2:8082/eureka
networks:
  spring-cloud-overlay:
    external:
      name: spring-cloud-overlay

保存eureka.yml后执行:docker stack deploy -c eureka.yml eureka(随意取名)

查看服务

 查看eureka_eureka2服务落在那个服务器上:docker service ps eureka_eureka2

登录浏览器,任一打开一个eureka查看

通过docker service ps XXXX查看各服务都落在不同的节点上,验证各节点是否可以相互通信:

上图eureka_eureka2落在112、eureka1落在110、eureka3落在111

查看110上运行的容器:docker ps

登录容器:docker exec -it 052a44f42f2e /bin/bash

都可以ping通其他服务的服务 说明跨主机通讯成功!

ps:如果拉取镜像失败,可以在拉取失败的节点上登录harbor镜像库,如果返回404或80 connect refused 请登录harbor服务器查看harbor是否正常运行

如果非上述状态 在harbor目录下执行:docker-compose restart 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker Swarm是Docker官方提供的容器编排工具,用于在多个Docker主机上部署和管理容器化应用程序。它允许您将多个Docker主机组成一个集群,并使用简单的命令进行应用程序的部署、扩展和管理。 下面是Docker Swarm部署的一般步骤: 1. 初始化Swarm:在一个Docker主机上执行`docker swarm init`命令来初始化Swarm集群。这个主机将成为Swarm的管理节点。 2. 加入节点:将其他Docker主机加入到Swarm集群中,可以通过在其他主机上执行`docker swarm join`命令并提供管理节点的地址和令牌来实现。 3. 配置服务:使用Docker Compose或者Docker Stack来定义和配置您的应用程序服务。您可以指定容器的数量、网络设置、挂载卷等。 4. 部署服务:使用`docker stack deploy`命令来部署您的应用程序服务。这将在Swarm集群中的多个节点上启动和管理容器。 5. 扩展服务:使用`docker service scale`命令来扩展或缩小服务的容器数量。Swarm会自动将容器分配到可用的节点上。 6. 更新服务:当应用程序需要更新时,可以通过更新服务的镜像版本或配置文件来进行更新。Swarm会逐步替换旧的容器,确保应用程序的高可用性。 7. 监控和管理:使用`docker service ls`命令来查看当前运行的服务列表,使用`docker service ps <service_name>`命令来查看特定服务的容器状态。您还可以使用其他监控工具来监控Swarm集群的健康状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值