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 天前
阿里云获评 Agentic AI 开发平台领导者,函数计算 AgentRun 赢下关键分!
云原生
阿里云云原生2 天前
MSE Nacos Prompt 管理:让 AI Agent 的核心配置真正可治理
微服务·云原生
阿里云云原生2 天前
当 AI Agent 接管手机:移动端如何进行观测
云原生·agent
阿里云云原生2 天前
AI 原生应用开源开发者沙龙·深圳站精彩回顾 & PPT下载
云原生
阿里云云原生2 天前
灵感启发:日产文章 100 篇,打造“实时热点洞察”引擎
云原生
1candobetter2 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
~莫子2 天前
Haproxy七层负载详解+实验详细代码
云原生
阿里云云原生2 天前
OpenTelemetry + 云监控 2.0:打造你的云原生全栈可观测
云原生
阿狸猿2 天前
云原生数据库
云原生·软考
至此流年莫相忘2 天前
Kubernetes实战篇之配置与存储
云原生·容器·kubernetes