先寫一下整理過程, 之後總結一下踩的坑,(參考了翟永超的書籍,和一些相關博客)
Eureka高可用的作用
之所以進行eureka集羣的搭建,在於我們平時的生產環境中,很難保證單節點的eureka服務能提供百分百不間斷的服務,如果eureka無響應了,整個項目應用都會出現問題,因此要保證eureka隨時都能提供服務的情況下,最好的方式就是採用eureka的集羣模式,也就是搭建eureka的高可用,在eureka的集羣模式下,多個eureka server之間可以同步註冊服務,因此,在一個eureka宕掉的情況下,仍然可以提供服務註冊和服務發現的能力,從而達到註冊中心的高可用。
創建 兩個 註冊中心, 節點爲 peer1, peer2
創建appliaction-peer1.yml
#本機端口
server:
port: 1111
spring:
application:
name: eureka-server
eureka:
instance:
hostname: peer1
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://peer2:1112/eureka/
創建 application-peer2.yml
server:
port: 1112
spring:
application:
name: eureka-server
eureka:
instance:
hostname: peer2
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://peer1:1111/eureka/
修改配置文件hosts文件
127.0.0.1 peer1
127.0.0.1 peer2
本地分別啓動兩個註冊中心
java -jar springcloud-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar springcloud-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
打開http://localhost:1112 查看peer2 節點 , registered-replicas 裏面出現了 http://peer1:11111/eureka ,
切換到 peer1 節點,可以看到peer 爲備用節點,
這裏面用 peer1,peer2 代表 ip地址,主要是方便區分, 沒有特別的意義, 如果你想使用ip的字的話, 設置:
eureka.instance.prefer-ip-address=true
我沒測試,需要測試的話, 可以自己去測試一下,
踩坑:這裏面的話,需要手動設置
如果不手動設置,按道理默認是爲true 的 但是如果不填的話, 不會將自己 註冊到註冊中心, 會導致,副本註冊中心 不可用
不知道是不是spring cloud 依賴的版本問題導致的