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三集群参考文档。

相关推荐
阿里云云原生19 小时前
Agent 观测与优化三城巡演丨第二站深圳精彩回顾 & PPT 下载
云原生
Henry-SAP1 天前
AI产业迎来标准化与商业化双突破
人工智能·云原生·sap·erp
报错小能手1 天前
Kubernetes入门实战课 3
云原生·容器·kubernetes
2601_962219011 天前
版本平滑升级架构:万象生鲜系统 V4.3.3 迭代无停机更新技术拆解
微服务·云原生·架构
阿里云云原生2 天前
深入解析 STAROps 瑶池 Agent:如何实现从应用告警到数据库命令级的全栈 RCA?
云原生
阿里云云原生2 天前
告别手工配置:利用 Migration Skill 实现 Nginx Ingress 注解的智能分析与自动转换
云原生
2601_962218472 天前
万象生鲜系统冷链物联网接入技术实现生鲜企业温控管理数字化
大数据·运维·微服务·云原生·架构
阿里云云原生2 天前
Event-Driven AI 架构解析:从 Confluent Intelligence 三大支柱到阿里云实践
云原生
阿里云云原生2 天前
从手工回测到全自动化:AgentLoop 在 Agent Engineering 中的落地与实践总结
云原生·agent
报错小能手2 天前
Kubernetes入门实战课 1
云原生·容器·kubernetes