docker swarm集群---SpringCloud基础设施及业务篇

本文的主节点IP为A,A可以是公网或者内网地址。

配置好集群以及仓库管理等的基础设施之后,下一步就是使用他们了,我们的项目目前主要是使用Java作为主要技术栈,使用springcloud来进行微服务的架构,涉及多个仓库,所以本篇文章我会记录下我们项目部署相关的细节。

首先,我把所有的Java仓库分为四类,在gitosis.conf中,前三类各属于一个文件夹。第四类可能有多个文件夹,每个文件夹包含一个消费者仓库consumer和一个生产者仓库client,以下我们以一个新闻业务为例进行说明。

  • 配置与注册中心
  • 网关
  • 监控类
  • 业务类

我会重点讲解一下配置与注册中心的编写、配置与部署,其他几项的步骤差不多,就不会太过详细的讲解了,监控类主要是指zipkin等组件,目前还没有研究透,所以目前先不进行记录,但是预留一个位置。

0.配置gitosis.conf

这里我假设所有项目都是由相同的账号来进行编写,项目名称为non,则配置与注册中心的文件夹名为non_base,网关的文件夹为non_gateway,监控类的文件夹为non_monitor,最后业务类的文件夹命名格式为non_业务名称,如用户业务则为non_user。

于是可以这样来写gitosis.conf。

[group non]
members = zekdot@z-terminal
writable = non_base non_monitor non_gateway non_user

然后添加并进行提交

git commit -am "增加新项目"
git push origin master

我们顺手在主机A上创建一个overlay网络,否则可能之后部署的服务不能彼此通信。

docker network create --driver overlay non_network

1.配置与注册中心

首先新建文件夹non_base,初始化git仓库并添加远程地址。

mkdir non_base
git init
git remote add origin zgit@A:non_base.git

1.1.注册中心

注册中心是Spring Cloud必不可少的一个组件,它可以实现服务治理,个人感觉就是能够让其他程序或者用户本身知道哪些服务当前在线,状态如何,而这些是由注册中心封装心跳包等功能实现的。

注册中心的代码和配置等可以参考以下的博客中的创建“服务注册中心”的Eureka的配置部分,因为本文也是参考他的做的,所以不再重复了。

Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】

本文唯一的区别就是端口使用了9101,即application.properties修改成如下:

spring.application.name=eureka-server
server.port=9101

eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

最后在和pom.xml同目录下创建Dockerfile。

FROM openjdk:8u282-slim as eureka
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD app.jar app.jar
RUN bash -c "touch /app.jar"
ENTRYPOINT ["java","-jar","app.jar"]

1.2.配置中心

配置中心对于Spring Cloud来说其实是一个可选的组件,他可以实现各项目的集中配置,所谓配置,就是指application.properties中的内容,它定义了项目的端口号、项目名称、数据库url用户名密码等。

我的项目采用了配置中心这一组件的主要理由是为了增强项目的可配置性,因为之后项目都会打包到镜像中然后部署为容器,如果想要修改配置文件的话有两种方案:

  1. 修改配置文件,重新打包镜像
  2. 给容器挂载一个卷来存储配置文件,启动的时候载入

但这两种我觉得都不如直接创建一个配置中心,当需要修改配置文件时,只需要修改,然后git add commit push,再重启容器来的方便。

首先我们需要在gitosis.conf增加一个用于配置项目的仓库non_config:

[group non]
members = zekdot@z-terminal
writable = non_base non_monitor non_gateway non_user non_config

然后增加提交并推送。

为了测试配置中心搭建情况,我们创建一个测试的配置文件。

mkdir non_config
cd non_config
git init
git remote add origin zgit@A:non_config.git
touch test-client.yml

然后写入如下的内容:

spring:
  application:
    name: test-client
eureka:
  client:
    serviceUrl:
      defaultZone: http://A:9101/eureka/
    healthcheck:
      enabled: true
  instance:
    lease-renewal-interval-in-seconds: 10
    lease-expiration-duration-in-seconds: 30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值