Eureka高可用叢集搭建
就是搭建Eureka的叢集。
每個Eureka Server需要相互註冊,確保資料一致。
我這裡準備兩個Eureka Server 他兩的POM檔案配置是一樣的
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
主要是配置檔案:搭建叢集時,主機名,埠不能一樣。spring application name儘量取一樣名字. 還需取C盤修改自己的host檔案,讓兩個主機名被識別
在Windows目錄下的System32裡的dirvers裡的etc,找到hosts 新增對應的資料 比如:127.0.0.1 eureka-server1 127.0.0.1 eureka-server2 這樣兩個都可以被識別
,然後取進行相互註冊,兩個Ereka server相互註冊
先說啟動類:兩個除了名字不一樣 其他都一樣
@SpringBootApplication
// 啟用EurekaServer
@EnableEurekaServer
public class Eureka2App {
public static void main(String[] args) {
SpringApplication.run(Eureka2App.class,args);
}
}
配置檔案:
Eureka-server1的配置
server:
port: 8761
eureka:
instance:
hostname: eureka-server1 # 主機名
client:
service-url:
defaultZone: http://eureka-server2:8762/eurekav #註冊到另一個eureka server裡 相互註冊
register-with-eureka: true # 是否將自己的路徑 註冊到eureka上。eureka server 不需要的,eureka provider client 需要 這裡true和false都一樣
fetch-registry: true # 是否需要從eureka中抓取路徑。eureka server 不需要的,eureka consumer client 需要 這裡true和false都一樣
spring:
application:
name: eureka-server-ha
Eureka-server2的配置
server:
port: 8762
eureka:
instance:
hostname: eureka-server2 # 主機名
client:
service-url:
defaultZone: http://eureka-server1:8761/eureka
register-with-eureka: true # 是否將自己的路徑 註冊到eureka上。eureka server 不需要的,eureka provider client 需要
fetch-registry: true # 是否需要從eureka中抓取路徑。eureka server 不需要的,eureka consumer client 需要
spring:
application:
name: eureka-server-ha
Eureka Client 的配置 無論是Provider或是Consumer都需要修改下面的紅色欄位 註冊兩個Eureka server
server:
port: 8001
eureka:
instance:
hostname: localhost # 主機名
prefer-ip-address: true # 將當前例項的ip註冊到eureka server 中。預設是false 註冊主機名
ip-address: 127.0.0.1 # 設定當前例項的ip
instance-id: ${eureka.instance.ip-address}:${spring.application.name}:${server.port} # 設定web控制檯顯示的 例項id
lease-renewal-interval-in-seconds: 3 # 每隔3 秒發一次心跳包
lease-expiration-duration-in-seconds: 9 # 如果9秒沒有發心跳包,伺服器呀,你把我幹掉吧~
client:
service-url:
defaultZone: http://eureka-server1:8761/eureka,http://eureka-server2:8762/eureka # eureka服務端地址,將來客戶端使用該地址和eureka進行通訊
spring:
application:
name: eureka-provider # 設定當前應用的名稱。將來會在eureka中Application顯示。將來需要使用該名稱來獲取路徑
在Eureka Client還沒註冊時 啟動了兩個Eureka Server 的場景
兩個已經互相註冊了。
接下來把兩個Eureka Client啟動 eureka-server2 也會有下面一樣的場景 開始進行遠端呼叫
即使掛掉任何一個Eureka server 對應Eureka Client來說都不影響