Sign inSign up

caixb/spring-cloud-eureka

By caixb

Updated 9 months ago

🤓开箱即用的 Eureka 注册中心组件,支持高度自定义部署。

Image
Languages & frameworks
Web servers
0

225

caixb/spring-cloud-eureka repository overview

SpringCloud Eureka 服务注册中心

🔎 背景概述

下面用一张表格来看一下常见的注册中心有什么区别:

特性EurekaNacosConsulZookeeper
CAPAPCP + APCPCP
健康检查Client BeatTCP / HTTP / MySQL / Client BeatTCP / HTTP / gRPC / CmdKeep Alive
雪崩保护
自动注销实例
访问协议HTTPHTTP / DNSHTTP / DNSTCP
监听支持
多数据中心
跨注册中心同步
Spring Cloud集成

CAP 解释:

  • C 代表 Consistency (一致性)

  • A 代表 Availability(可用性)

  • P 代表 Partition tolerance (分区容错性)

CAP 定理由 Eric Brewer 在 2000 年 PODC 会议上提出。该猜想在提出后两年被证明成立,成为我们熟知的 CAP 定理,CAP三者不可兼得。

那我做这样一个镜像包的原因只是图省事,Eureka 本身相对于 Nacos 而言,轻量太多太多,而 Nacos 虽然功能十分齐全,也能跨注册中心同步,但使用下来成本也很大。

从个人开发者的角度上来说,我们其实是不喜欢每个项目都去搞一个注册中心,所以我就将该组件抽离成 Docker 镜像,开箱即用。

🧇 制作环境

下面大致说一下该镜像的制作环境及相关依赖版本:

  • Spring Cloud 版本:Greenwich.SR6 (格林威治)
  • Spring Cloud Alibaba 版本:2.1.4.RELEASE
  • Spring Boot 版本:2.1.3.RELEASE
  • JDK 版本:8
  • 基础镜像:openjdk:8u342

镜像制作 Dockerfile 文件:

# 使用 openjdk:8u342 作为基础构建镜像
FROM openjdk:8u342
# 声明维护人员信息
LABEL authors="本人制作"
MAINTAINER [email protected]
# 声明版本号
ARG VERSION
ENV VERSION=${VERSION}
# 环境参数
ENV JAVA_OPTS="-Xms256m -Xmx512m"
ENV TZ=Asia/Shanghai
ENV LANG C.UTF-8
ENV WORKDIR /usr/autumnnook-server/eureka
# 工作目录
WORKDIR $WORKDIR
# 设置时区链接
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 将 jar 源文件拷贝到容器目标路径下
COPY ./autumnnook-eureka/target/autumnnook-eureka-${VERSION}.jar $WORKDIR
# 列出目标目录内容
RUN ls -l $WORKDIR
# 启动
ENTRYPOINT ["sh", "-c","java $JAVA_OPTS -jar $WORKDIR/autumnnook-eureka-${VERSION}.jar"]

镜像制作 docker-compose 文件:

version: '3.8'

services:

  eureka:
    privileged: true
    restart: always
    build:
      context: .
      dockerfile: ./autumnnook-eureka/Dockerfile
      args:
        VERSION: ${PROJECT_VERSION}
      no_cache: true
    ports:
      - "8761:8761"
    environment:
      # 设置为服务名称,方便服务间通信
      - HOSTNAME=eureka
      # eureka 服务端口(默认8761)
      - SERVER_PORT=8761
      # eureka 应用名称(默认 autumnnook-eureka)
      - APPLICATION_NAME=spring-cloud-eureka
      # Eureka 管理员用户名(默认soaadmin)
      - EUREKA_ADMIN_NAME=soaadmin
      # Eureka 管理员密码(默认 jsepc01!)
      - EUREKA_ADMIN_PASSWORD=jsepc01
      # 是否开启 Eureka 自我保护机制(默认 true)
      - ENABLE_SELF_PRESERVATION=true
      # 服务剔除间隔时间,单位毫秒(默认30000)
      - EVICTION_INTERVAL_TIMER_IN_MS=30000
      # 续约百分比阈值(默认0.85)
      - RENEWAL_PERCENT_THRESHOLD=0.85
      # 实例优先使用IP地址(默认 false)
      - PREFER_IP_ADDRESS=false
      # 心跳发送间隔(秒)(默认 10 s)
      - LEASE_RENEWAL_INTERVAL_IN_SECONDS=10
      # 是否从Eureka服务器获取注册表(默认 false)
      - FETCH_REGISTRY=false
      # 是否向Eureka服务器注册自己(默认 false)
      - REGISTER_WITH_EUREKA=false
      # Eureka集群节点地址列表
      - EUREKA_PEERS=http://soaadmin:jsepc01@eureka:8761/eureka/
      # 监控端点配置
      - ENDPOINTS=info,health
      # 排除的端点
      - EXCLUDE_ENDPOINTS=shutdown,autoconfig,mappings,dump,trace,heapdump
      # 是否启用Shutdown端点(默认 false)
      - ENABLE_SHOWDOWN=false
    networks:
      - cluster-network

networks:
  cluster-network:
    driver: overlay
    attachable: true
    driver_opts:
      # 加密网络流量
      encrypted: "true"

后续可以通过命令构建镜像:

# 该命令仅作参考
docker-compose -f docker-compose.yml build

如果你不喜欢用 docker-compose 去打镜像,也可以使用 docker 构建:

# 该命令仅作参考
docker build -t <IMAGE_NAME>:<IMAGE_VERSION> .

☁️ 部署方案

单机单节点部署
  1. 获取镜像
docker pull caixb/spring-cloud-eureka:1.0
  1. 通过 run 命令部署
docker run -d \
  --name eureka \
  -p 8761:8761 \
  -e HOSTNAME=eureka \
  -e SERVER_PORT=8761 \
  -e APPLICATION_NAME=spring-cloud-eureka \
  -e EUREKA_ADMIN_NAME=soaadmin \
  -e EUREKA_ADMIN_PASSWORD=jsepc01 \
  -e ENABLE_SELF_PRESERVATION=true \
  -e EVICTION_INTERVAL_TIMER_IN_MS=30000 \
  -e RENEWAL_PERCENT_THRESHOLD=0.85 \
  -e PREFER_IP_ADDRESS=false \
  -e LEASE_RENEWAL_INTERVAL_IN_SECONDS=10 \
  -e FETCH_REGISTRY=false \
  -e REGISTER_WITH_EUREKA=false \
  -e EUREKA_PEERS=http://soaadmin:jsepc01@eureka:8761/eureka/ \
  -e ENDPOINTS=info,health \
  -e EXCLUDE_ENDPOINTS=shutdown,autoconfig,mappings,dump,trace,heapdump \
  -e ENABLE_SHOWDOWN=false \
  --memory="512m" \
  --memory-reservation="256m" \
  --cpus="0.25" \
  --restart=on-failure:3 \
  caixb/spring-cloud-eureka:1.0
  1. 通过 compose 编排部署
version: '3.8'

services:
  eureka:
    image: caixb/spring-cloud-eureka:1.0
    container_name: eureka
    ports:
      - "8761:8761"
    environment:
      # 设置为服务名称,方便服务间通信
      - HOSTNAME=eureka
      # eureka 服务端口(默认8761)
      - SERVER_PORT=8761
      # eureka 应用名称(默认 autumnnook-eureka)
      - APPLICATION_NAME=spring-cloud-eureka
      # Eureka 管理员用户名(默认soaadmin)
      - EUREKA_ADMIN_NAME=soaadmin
      # Eureka 管理员密码(默认 jsepc01!)
      - EUREKA_ADMIN_PASSWORD=jsepc01
      # 是否开启 Eureka 自我保护机制(默认 true)
      - ENABLE_SELF_PRESERVATION=true
      # 服务剔除间隔时间,单位毫秒(默认30000)
      - EVICTION_INTERVAL_TIMER_IN_MS=30000
      # 续约百分比阈值(默认0.85)
      - RENEWAL_PERCENT_THRESHOLD=0.85
      # 实例优先使用IP地址(默认 false)
      - PREFER_IP_ADDRESS=false
      # 心跳发送间隔(秒)(默认 10 s)
      - LEASE_RENEWAL_INTERVAL_IN_SECONDS=10
      # 是否从Eureka服务器获取注册表(默认 false)
      - FETCH_REGISTRY=false
      # 是否向Eureka服务器注册自己(默认 false)
      - REGISTER_WITH_EUREKA=false
      # Eureka集群节点地址列表(单机模式可以注释掉)
      # - EUREKA_PEERS=http://soaadmin:jsepc01@eureka:8761/eureka/
      # 监控端点配置
      - ENDPOINTS=info,health
      # 排除的端点
      - EXCLUDE_ENDPOINTS=shutdown,autoconfig,mappings,dump,trace,heapdump
      # 是否启用Shutdown端点(默认 false)
      - ENABLE_SHOWDOWN=false
    # 资源限制(可选)
    mem_limit: 512M
    mem_reservation: 256M
    cpus: 0.25
    # 重启策略
    restart: on-failure:3
    # 健康检查(可选)
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8761/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    # 日志配置(可选)
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    # 网络配置(使用默认桥接网络)
    networks:
      - eureka-network

# 可选:如果需要连接其他服务,可以创建网络
networks:
  eureka-network:
    driver: bridge
Docker Swarm 集群部署

👉 请移步至:https://juejin.cn/post/7585289701826527241

Tag summary

Content type

Image

Digest

sha256:397cd79a6

Size

559.4 MB

Last updated

9 months ago

docker pull caixb/spring-cloud-eureka:2.0