Spring cloud + Swarm mode 实战二:部署微服务

本文详细介绍了如何在Docker Swarm模式下部署基于Spring Cloud的微服务架构,包括集群创建、镜像制作、服务注册发现、配置中心、服务提供者和消费者的部署,以及使用Portainer进行集群管理。同时,文章提到了一些关键问题,如服务实例的网络配置,以及如何解决服务注册时的网络访问问题。
摘要由CSDN通过智能技术生成

简介

将基于spring cloud的微服务架构应用于docker swarm mode,基本系统结构图:

所需基础知识

  • docker、docker compose、docker machine
  • docker swarm mode
  • spring cloud

环境简介

  • 三台CentOS7 VM:reg(192.168.245.137)、docker1(192.168.245.139)、docker2(192.168.245.140)
  • Win7:安装了dockertoolbox,使用docker-machine管理三台docker宿主机

工程实例

swarm-spring-cloud-test

docker-machine管理三台VM

在win7的“Docker Quickstart Terminal”中分别执行以下命令:

docker-machine -D create -d generic --generic-ip-address=192.168.245.137 --engine-registry-mirror=https://registry.docker-cn.com reg --engine-insecure-registry=myrepo.com:5000

docker-machine -D create -d generic --generic-ip-address=192.168.245.139 --engine-registry-mirror=https://registry.docker-cn.com docker1 --engine-insecure-registry=myrepo.com:5000

docker-machine -D create -d generic --generic-ip-address=192.168.245.140 --engine-registry-mirror=https://registry.docker-cn.com docker2 --engine-insecure-registry=myrepo.com:5000

说明:

  • 如果创建过程很慢,请手动在三台机子上安装docker后,再执行上述命令进行关联。
  • 使用Docker中国官方镜像加速
  • 使用http模式下的私有仓库
  • 创建成功后,使用docker info 查看Registry Mirrors和Insecure Registries是否配置成功。

创建集群

切换到reg

eval $(docker-machine env reg)

初始化reg为管理节点:

docker swarm init

查看工作节点的join-token

docker swarm join-token worker  

加入工作节点:

docker-machine ssh docker1 docker swarm join --token SWMTKN-1-0yuuj2o7mi6gzcy54u6ayhqwr0989u2cb3xbswbc94k4pmcqmi-48q7mw60esyl18ttgwo07t870 192.168.245.137:2377

docker-machine ssh docker2 docker swarm join --token SWMTKN-1-0yuuj2o7mi6gzcy54u6ayhqwr0989u2cb3xbswbc94k4pmcqmi-48q7mw60esyl18ttgwo07t870 192.168.245.137:2377

查看节点:

$ docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
aom77kgv9y530n63c6schlebl     docker2             Ready               Active
h6p4tp2uozk2xd2bwpnue05pl *   reg                 Ready               Active              Leader
te527c08gqbipwhdcv8aa3bab     docker1             Ready               Active

集群已创建成功。

制作镜像,存入私有仓库

为什么使用私有仓库

因为在创建service时,swarm manager会下发task到各个node上去执行,这样每个node都会去pull相同的镜像,重复操作,如果使用外网会很耗时间,所以必须先搭建私服。

本文中使用的镜像都是预先pull后再push到私有仓库的

1.制作基础镜像

Dockerfile:

FROM openjdk:8-jre-alpine

# Install base packages
RUN apk update && apk add curl bash tree tzdata \
    && cp -r -f /usr/share/zoneinfo/Hongkong /etc/localtime \
    && echo -ne "Alpine Linux 3.6 image. (`uname -rsv`)\n" >> /root/.built

# Install dockerize
RUN apk add --no-cache openssl
ENV DOCKERIZE_VERSION v0.5.0
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz

# Define bash as default command
CMD ["/bin/bash"]

添加常用工具,修正时区,dockerize(容器启动检测),构建镜像并存入私服:

docker build -t myrepo.com:5000/openjdk:dockerize .
docker push myrepo.com:5000/openjdk:dockerize

2.高可用服务注册发现及配置中心

使用jhipster-registry进行搭建,详介请看:http://www.jhipster.tech/jhipster-registry/

cd /swarm-spring-cloud-test/jhipster-re

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值