在微服務中我們要考慮到發(fā)生故障的情況,所以說對服務注冊中心也要進行高可用部署兼搏。
官方對于Eureka 高可用的描述:
Eureka can be made even more resilient and available by running multiple instances and asking them to register with each other. In fact, this is the default behaviour, so all you need to do to make it work is add a valid serviceUrl to a peer, e.g.
就是通過多個eureka實例進行互相注冊,然后修改每個實例的serviceUrl即可怕轿。Eureka Server的高可用實際上就是將自己作為服務向其他服務注冊中心注冊自己田盈,這樣就可以形成一組互相注冊的服務注冊中心,以實現(xiàn)服務清單的互相同步涧团,達到高可用的效果。
之前的有配置:
eureka:
client:
register-with-eureka: false
fetch-registry: false
讓服務注冊中心不注冊自己经磅。
創(chuàng)建application-peer1.yml
文件
eureka:
instance:
hostname: peer1
client:
register-with-eureka: true # 當然這個默認就是true泌绣,表示向eureka注冊自己
fetch-registry: true # 這個的意思是從eureka server拉取注冊表,集群中從相鄰的eureka server拉取注冊表
service-url:
defaultZone: http://peer2:8762/eureka/
server:
port: 8761
spring:
application:
name: eureka-server
向peer2注冊自己预厌。
創(chuàng)建application-peer2.yml
文件阿迈,配置
eureka:
instance:
hostname: peer2
client:
register-with-eureka: true # 當然這個默認就是true,表示向eureka注冊自己
fetch-registry: true # 這個的意思是從eureka server拉取注冊表轧叽,集群中從相鄰的eureka server拉取注冊表
service-url:
defaultZone: http://peer1:8761/eureka/
server:
port: 8762
spring:
application:
name: eureka-server
向peer1注冊自己
當然二個application.yml
的defaultZone
也可以設置成http://peer1:8761/eureka,http://peer2:8762/eureka/
修改vim /etc/hosts文件配置映射
127.0.0.1 peer1
127.0.0.1 peer2
通過spring.profiles.active
屬性來啟動不同的環(huán)境苗沧,當然生產(chǎn)上肯定就是二臺不同的服務了,這邊只是在單機上模擬Eureka Server的高可用炭晒。
啟動的時候指定不一樣的配置文件待逞,
java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer2
訪問http://localhost:8761/
訪問http://localhost:8762/
服務提供者消費者配置也要做一些修改,這邊以服務提供者為例网严,其實嚴格意義上一個服務可以做服務提供者也可以做服務消費者
server:
port: 8088
spring:
application:
name: ServiceA
eureka:
instance:
hostname: localhost
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka/
此時如果斷開peer1识樱,則AService也會向peer2上注冊。所以依然能夠訪問到AService服務,從而實現(xiàn)服務注冊中心的高可用怜庸。