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 小时前
云原生(LVS NAT模式集群实验)
服务器·云原生·lvs
DolitD3 小时前
云流技术深度剖析:国内云渲染主流技术与开源和海外厂商技术实测对比
功能测试·云原生·开源·云计算·实时云渲染
ghostwritten4 小时前
春节前夕,运维的「年关」:用 Kubeowler 给集群做一次「年终体检」
运维·云原生·kubernetes
liux352820 小时前
基于kubeadm部署Kubernetes 1.26.4 集群指南
云原生·容器·kubernetes
Zfox_1 天前
CANN Catlass 算子模板库深度解析:高性能 GEMM 融合计算、Cube Unit Tiling 机制与编程范式实践
docker·云原生·容器·eureka
农民工老王1 天前
K8s 1.31 私有化部署实战:从 Calico 崩溃到 NFS 挂载失败的排坑全记录
云原生·kubernetes
灰子学技术1 天前
istio从0到1:如何解决分布式配置同步问题
分布式·云原生·istio
小马爱打代码1 天前
ZooKeeper:入门实战
分布式·zookeeper·云原生
logocode_li1 天前
OCI/CRI 双标准下:从 dockerd 到 containerd 的 K8s 运行时迭代史
docker·云原生·容器·k8s
天才奇男子2 天前
HAProxy高级功能全解析
linux·运维·服务器·微服务·云原生