Eureka單機高可用偽集群配置


Eureka Server高可用集群
理論上來講,因為服務消費者本地緩存了服務提供者的地址,即使Eureka Server宕機,也不會影響服務之間的調用,但是一旦新服務上線,已經緩存在本地的服務提供者不可用了,服務消費者也無法知道,所以保證Eureka Server的高可用還是很有必要的。

在分布式系統中,任何的地方存在單點,整個體系就不是高可用的,Eureka 也一樣,Eureka Server不是以單點存在的,而是以集群的方式對外提供服務。


模擬在一台機器上搭建Eureka集群,配置peer1、peer2、peer3三個節點組成Eureka的集群。

1、配置域名解析
Hosts文件打開方法:打開windows命令窗口,輸入“drivers”,選擇“etc”文件夾,選擇“hosts”文件添加peer配置。

2、新建 Eureka 服務端集群項目
a、pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.mimaxueyuan</groupId>
        <artifactId>mima-cloud-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>mima-cloud-eureka-ha</artifactId>
    <packaging>jar</packaging>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--         <dependency> -->
<!--             <groupId>org.springframework.boot</groupId> -->
<!--             <artifactId>spring-boot-starter-security</artifactId> -->
<!--         </dependency> -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>
View Code

b、application.yml

spring:
  application:
    name: mima-cloud-eureka-ha
  profiles:
    active: peer1
---
server:
  port: 8762
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://peer2:8763/eureka/,http://peer3:8764/eureka/
---
server:
  port: 8763
spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://peer1:8762/eureka/,http://peer3:8764/eureka/
---
server:
  port: 8764
spring:
  profiles: peer3
eureka:
  instance:
    hostname: peer3
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka

 

配置文件是通過三個Eureka Server互相注冊,這里有四段配置,第一段配置為公共配置,配置了應用名稱,第二段為名peer1的配置,第三段為peer2的配置,第三段為peer3的配置。在項目啟動可以通過
--spring.profiles.active={配置名稱} 來啟動不同的配置。

c、Eureka服務端啟動類

package com.mimaxueyuan.cloud.eureka;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

//eureka高可用
@SpringBootApplication
@EnableEurekaServer
public class EurekaHAApplication {
    
    public static void main(String[] args) {
        new SpringApplicationBuilder(EurekaHAApplication.class).web(true).run(args);
    }
    
}

3、eureka客戶端修改eureka服務端的地址

eureka:
  instance:
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${server.port}
  client: 
    serviceUrl: 
      defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/,http://peer3:8764/eureka/
      #defaultZone: http://127.0.0.1:8762/eureka/,http://127.0.0.1:8763/eureka/,http://127.0.0.1:8764/eureka/

 

4、啟動eurekaClient客戶端

5、啟動eurekaServer服務端
因使用eureka集群,啟動的時候需要指定配置文件:

啟動peer1節點命令:
java -jar D:\jar\eurekaServer\eurekaServerHigh.jar--spring.profiles.active=peer1

啟動peer2節點命令:
java -jar D:\jar\eurekaServer\eurekaServerHigh.jar--spring.profiles.active=peer2

啟動peer3節點命令:
java -jar D:\jar\eurekaServer\eurekaServerHigh.jar--spring.profiles.active=peer3

從上面可以看到,eurekaClient客戶端MIMA-CLOUD-PRODUCER已注冊到Eureka集群中。

現把MIMA-CLOUD-PRODUCER服務關閉,刷新注冊中心節點

非Java服務注冊到Eureak Server
作為服務注冊中心,應該是語言無關的,使用其他語言的服務也可以通過調用Eureka Server的Rest API 注冊服務,這里不詳細展開。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM