Под «Двумя одноранговыми серверами Eureka» подразумевается сценарий, в котором у вас есть два сервера Eureka, которые знают друг о друге. Eureka – это сервер реестра и обнаружения служб, используемый в архитектурах микросервисов.
В этой настройке оба сервера Eureka действуют как одноранговые, то есть обмениваются данными и синхронизируют информацию своего реестра. Эта настройка обеспечивает избыточность и отказоустойчивость при обнаружении служб.
Вот несколько методов, которые можно использовать для реализации двух одноранговых серверов Eureka:
Метод 1: Spring Cloud Netflix
// Eureka Server 1
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer1Application {
public static void main(String[] args) {
SpringApplication.run(EurekaServer1Application.class, args);
}
}
// Eureka Server 2
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer2Application {
public static void main(String[] args) {
SpringApplication.run(EurekaServer2Application.class, args);
}
}
// application.properties (for both servers)
spring.application.name=eureka-server
server.port=8761
# Eureka server 1 configuration
eureka.client.serviceUrl.defaultZone=http://localhost:8762/eureka/
# Eureka server 2 configuration
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
Метод 2: автономный Netflix Eureka
Вы также можете запустить два автономных экземпляра серверов Eureka без использования Spring Cloud.
Сначала загрузите JAR-файл сервера Eureka из репозитория Netflix. Затем создайте два отдельных файла конфигурации для каждого сервера:
eureka-server1.properties:
server.port=8761
eureka.client.serviceUrl.defaultZone=http://localhost:8762/eureka/
eureka-server2.properties:
server.port=8762
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
Запустите серверы, используя следующие команды в отдельных окнах терминала:
java -jar eureka-server.jar --spring.config.name=eureka-server1
java -jar eureka-server.jar --spring.config.name=eureka-server2
Метод 3: Kubernetes
Если вы используете Kubernetes, вы можете развернуть два экземпляра сервера Eureka как отдельные модули и использовать службы Kubernetes для связи.
Вот пример конфигурации YAML для двух серверов Eureka:
eureka-server1.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: eureka-server1
spec:
replicas: 1
selector:
matchLabels:
app: eureka-server1
template:
metadata:
labels:
app: eureka-server1
spec:
containers:
- name: eureka-server1
image: eureka-server:latest
ports:
- containerPort: 8761
env:
- name: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE
value: http://eureka-server2:8762/eureka/
---
apiVersion: v1
kind: Service
metadata:
name: eureka-server1
spec:
selector:
app: eureka-server1
ports:
- protocol: TCP
port: 8761
targetPort: 8761
eureka-server2.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: eureka-server2
spec:
replicas: 1
selector:
matchLabels:
app: eureka-server2
template:
metadata:
labels:
app: eureka-server2
spec:
containers:
- name: eureka-server2
image: eureka-server:latest
ports:
- containerPort: 8761
env:
- name: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE
value: http://eureka-server1:8761/eureka/
---
apiVersion: v1
kind: Service
metadata:
name: eureka-server2
spec:
selector:
app: eureka-server2
ports:
- protocol: TCP
port: 8761
targetPort: 8761
Это всего лишь несколько способов реализации двух одноранговых серверов Eureka. Вы можете выбрать метод, который соответствует вашей среде и предпочтениям.