Spring-Cloud-Netflix-Eureka集群搭建
eureka集群原理
- 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,
- 当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,
- 下次再调用时,则直接从本地缓存中取,完成一次调用。
搭建流程
- 修改host文件 C:WindowsSystem32driversetchost 把只读属性去掉
- 添加host 信息
127.0.0.1 eureka
127.0.0.1 eureka1
127.0.0.1 eureka2
- 新建两个子模块Eureka3001,Eureka3002
- 配置和Eureka3000一样 (pom.xml,启动类)
- 修改Eureka3000的yml配置文件
server:
port: 3000
spring:
application:
name: eurekaServer
eureka:
server:
enable-self-preservation: false #关闭自我保护机制
eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
instance:
hostname: eureka
client:
registerWithEureka: true #不把自己作为一个客户端注册到自己身上
fetchRegistry: true #不需要从服务端获取注册信息(因为在这里自己就是服务端,而且已经禁用自己注册了)
serviceUrl: #微服务要注册到的地址.
defaultZone: http://eureka1:3001/eureka,http://eureka2:3002/eureka,
- 复制一份application.yml到Eureka3001,Eureka3002
- 依次启动Eureka3000,Eureka3001,Eureka3002 启动Eureka3000,Eureka3001可能会报错,因为三个服务相互依赖,只要三个服务全部启动完成就行了
- 将user,goods,goods1客户端注册到server中心 1.打开user的application.yml
server:
port: 5000
eureka:
client:
serviceUrl:
#eureka服务端提供的注册地址 参考服务端配置的这个路径
defaultZone: http://eureka:3000/eureka,http://eureka1:3001/eureka,http://eureka2:3002/eureka
instance:
instance-id: user-1 #此实例注册到eureka服务端的唯一的实例ID
prefer-ip-address: true #是否显示IP地址
#eureka客户需要多长时间发送心跳给eureka服务器,表明它仍然活着,默认为30 秒 (与下面配置的单位都是秒)
leaseRenewalIntervalInSeconds: 10
#Eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除,默认为90秒
leaseExpirationDurationInSeconds: 30
spring:
application:
name: client-user #此实例注册到eureka服务端的n
注意启动类注解
goods,goods1
9. 访问localhost:3000
完成