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

相关推荐
Serverless 社区25 分钟前
进阶指南:BrowserUse + Agentrun Sandbox 最佳实践指南
人工智能·云原生·serverless
KubeSphere 云原生2 小时前
云原生周刊:Kubernetes 1.35 新机制与云原生生态更新
云原生·容器·kubernetes
Java程序员威哥2 小时前
云原生Java应用优化实战:资源限制+JVM参数调优,容器启动快50%
java·开发语言·jvm·python·docker·云原生
Java程序员威哥2 小时前
SpringBoot4.0+JDK25+GraalVM:云原生Java的性能革命与落地指南
java·开发语言·后端·python·云原生·c#
Java程序员威哥3 小时前
Spring AI快速上手:Java集成ChatGPT/文心一言,30分钟实现智能问答接口
java·人工智能·spring boot·后端·python·spring·云原生
AIGCExplore4 小时前
Docker环境配置步骤
docker·容器·eureka
zwjapple4 小时前
windows系统docker的mysql端口被占用解决方案
docker·云原生·eureka
青衫客3619 小时前
浅谈Kubernetes在systemd cgroup模式下的Slice/Scope组织结构
云原生·容器·kubernetes
王九思19 小时前
Podman 介绍
docker·云原生·kubernetes·podman
Serverless社区20 小时前
进阶指南:BrowserUse + Agentrun Sandbox 最佳实践指南
运维·阿里云·云原生·serverless·函数计算