Eureka部署参考文档

第一章 Eureka 简介

介绍

Eureka 是 Netflix 开源的服务发现组件,广泛应用于 Spring Cloud 微服务架构中。其核心功能是实现服务的自动注册与发现,帮助微服务之间高效、动态地进行通信。

主要特点:

高可用性:支持多节点集群部署,各节点间数据同步,避免单点故障。

服务注册与发现:服务启动后自动注册到 Eureka Server,消费者通过注册中心发现并调用服务。

自我保护机制:在网络分区或服务短暂失联时,保留已注册服务信息,防止误剔除。

去中心化架构:所有节点地位对等,采用 AP 模型(可用性与分区容错性优先),保障服务持续可用。

Eureka 由 Eureka Server(注册中心)和 Eureka Client(服务提供者/消费者)组成,是构建弹性、可扩展微服务系统的重要基础设施。

第二章 部署环境

1、基础环境

|---------|------------------------------|
| 项目 | 配置说明 |
| 节点数量 | 3 个 Eureka Server 节点 |
| Java 版本 | JDK 8 或以上 |
| 网络要求 | 节点间网络互通,开放 8761、8762、8763 端口 |
| 部署方式 | 容器化部署 |

2、 节点规划:

节点1:eureka1,IP: x.x.x.x,端口:8761

节点2:eureka2,IP: x.x.x.x,端口:8762

节点3:eureka3,IP: x.x.x.x,端口:8763

第三章

一、构建eureka集群镜像

1、编写dockerfile文件,此处基础镜像为arm版本,eureka目录中文件内容:application-dev.yml、Dockerfile、eureka-server-1.0-SNAPSHOT.jar

FROM mdsol/java8-jdk-arm:latest

COPY eureka /opt/eureka

RUN chmod -R 777 /opt/eureka/*

ENTRYPOINT ["java","-jar","/opt/eureka/eureka-server-1.0-SNAPSHOT.jar","--spring.config.location=classpath:/bootstrap.yml,/opt/eureka/application-dev.yml","&"]

  1. 配置文件

spring:

application:

name: eurekaServer

jackson:

date-format: yyyy-MM-dd HH:mm:ss

time-zone: GMT+8

default-property-inclusion: non_null

security:

user:

name: eureka

password: e4!u$8&R*kA111

server:

port: 8761

eureka:

instance:

hostname: x.x.x.x

lease-expiration-duration-in-seconds: 60

server:

enable-self-preservation: false

eviction-interval-timer-in-ms: 30000

client:

#不向Eureka注册自己

register-with-eureka: false

#不检查其他的EurekaServer节点

fetch-registry: false

service-url:

#设置eureka服务器所在的地址,查询服务和注册服务程序都注册到这个地址(服务暴露的地址)

defaultZone: http://x.x.x.x:8761/eureka/

第三章部署过程

使用有状态服务StatefulSet部署eureka集群

  1. 配置文件使用configmap挂载至eureka集群中

账号密码可以自己调整修改

apiVersion: v1

data:

application.yml: |

spring:

application:

name: eurekaServer

jackson:

date-format: yyyy-MM-dd HH:mm:ss

time-zone: GMT+8

default-property-inclusion: non_null

security:

user:

name: usr

password: password

server:

port: 8761

eureka:

instance:

hostname: eureka

lease-expiration-duration-in-seconds: 60

server:

enable-self-preservation: true

eviction-interval-timer-in-ms: 3000

client:

#不向Eureka注册自己

register-with-eureka: true

#不检查其他的EurekaServer节点

fetch-registry: true

service-url:

#设置eureka服务器所在的地址,查询服务和注册服务程序都注册到这个地址(服务暴露的地址)

defaultZone: http://usr:password@eureka-dev-0.eureka-dev:8761/eureka/,http://usr:password@eureka-dev-1.eureka-dev:8761/eureka/,http://uer:password@eureka-dev-2.eureka-dev:8761/eureka/

kind: ConfigMap

metadata:

name: eureka-config-dev

namespace: paas

  1. service 配置文件内容

service 配置文件内容,看实际环境修改,默认不需要修改。

apiVersion: v1

kind: Service

metadata:

name: eureka-dev

namespace: paas

spec:

ports:

  • name: http

port: 8761

protocol: TCP

targetPort: 8761

selector:

app: eureka-dev

type: NodePort

  1. 修改 StatefulSet文件

需修改参数 EUREKA_CLIENT_SERVICEURL_DEFAULTZONE ,启动命令需配置configmap文件同步修改,可保持默认启动。

apiVersion: apps/v1

kind: StatefulSet

metadata:

labels:

app: eureka-dev

name: eureka-dev

namespace: paas

spec:

replicas: 3

selector:

matchLabels:

app: eureka-dev

serviceName: eureka-dev

template:

metadata:

creationTimestamp: null

labels:

app: eureka-dev

spec:

containers:

  • args:

  • --spring.config.location=classpath:/bootstrap.yml,/opt/eureka/application.yml

command:

  • java

  • -jar

  • /opt/eureka/eureka-server-1.0-SNAPSHOT.jar

env:

  • name: EUREKA_INSTANCE_HOSTNAME

value: $(POD_NAME)

  • name: EUREKA_INSTANCE_ID

value: $(POD_NAME)

  • name: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE

value: http://usr:password@eureka-dev-0.eureka-dev:8761/eureka/,http://usr:password@eureka-dev-1.eureka-dev:8761/eureka/,http://usr:password@eureka-dev-2.eureka-dev:8761/eureka/

image: harbor.dcos.xixian.unicom.local/armtianti/cetp-eureke-arm-dev:latest

imagePullPolicy: IfNotPresent

name: eureka-dev

ports:

  • containerPort: 8761

protocol: TCP

terminationMessagePath: /dev/termination-log

terminationMessagePolicy: File

volumeMounts:

  • mountPath: /opt/eureka/application.yml

name: eureka-config-dev

subPath: application.yml

volumes:

  • configMap:

defaultMode: 420

items:

  • key: application.yml

path: application.yml

name: eureka-config-dev

name: eureka-config-dev

  1. 查看集群状态

部署成功示例如下:

  1. 登录eureka集群

此处登录地址 http://masterIP:nodeport 方式登录

至此部署完成,可作为部署eureka三集群参考文档。

相关推荐
损落星辰2 小时前
docker常用命令
docker·容器·eureka
庸子2 小时前
【博客之星2025】2025 深度复盘:云原生隐形之后,技术的下一个主战场在哪里?
云原生
门思科技2 小时前
ThinkLink 正式上线 Docker 安装版本:快速部署的一体化 LoRaWAN 物联网平台
物联网·docker·eureka
mr_orange_klj3 小时前
关于K8S的ingress透明代理的AI问答(豆包)
云原生·容器·kubernetes
Light603 小时前
MyBatis-Plus 全解:从高效 CRUD 到云原生数据层架构的艺术
spring boot·云原生·架构·mybatis·orm·代码生成·数据持久层
yannan201903133 小时前
简述kubernetes(k8s)
云原生·容器·kubernetes
eddy-原4 小时前
云原生分布式系统综合实战:微服务网关、日志监控与对象存储架构
微服务·云原生·架构
汪碧康4 小时前
【k8s-1.34.2安装部署】十.gateway Api v1.4.0和istio安装
云原生·容器·kubernetes·gateway·istio·cilium·xkube