eureka搭建集群就是搭建好几个eureka,然后将彼此之间相互注册,并且将其他服务注册到所有eureka中
一、idea下配置eureka一个服务的两个实例**
下列步骤请严格按照我的步骤来,后面会解释:
1、Edit configuration,复制一份EurekaServer
将Name改为EurekaServer2
2、启动服务
- 先将EurekaServer的配置按照如下图修改:修改端口号为10087,service-url:的值中的端口号为10086
- 然后启动EurekaServer,UserApplication,ConsumerApplication三个服务(启动顺序可以是先启动EurekaServer,在启动其他两个,也可以随便启动)
- 然后再次修改EurekaServer的application.yml配置文件,将端口号改为10086,service-url:的值中的端口号为10087
- 启动EurekaServer2
访问eureka
http://localhost:10087/
http://localhost:10086/
可以发现eureka-server中有两个实例。
如果刚开始没有,就等一会儿,eureka注册中心注册是有时间的,可以到控制台看EurekaServer的打印日志信息,在不停的变,就说明在注册,一般过30s就刷新就能出现。
解释
Q:我们复制了两份configuration,为什么在左侧文件导航栏中,cloud-demo中只有一个EurekaServer呢?
A:不论你复制多少分Configuration,文件都只有一个,我么把另一个名字改为EurekaServer2,是这个配置的名字,但是在application.yml这个服务的名字还是叫eureka-server,这是一个服务的多个实例(这里是eureka-server服务的两个实例),这一点在http://localhost:10086/页面也能显示出来:UP (2)
Q:我们为什么总是修改一个配置文件,不是有两个实例吗
A:这个记住就行了,两个实例(配置)用的同一份文件,配置文件按照启动的时候是什么样子,那这个实例的配置就是什么样子。我们编辑配置文件application.yml的内容后,启动服务EurekaServer;再修改配置文件application.yml,再启动EurekaServer2服务,那第二个服务实例就跟第一个服务实例的application.yml配置信息不同了
二、将服务注册到多个注册州中心上,对Eureka做集群,做高可用的注册中心
上面的步骤之后,就要将其他服务注册都注册到所有注册中心中,这样一个注册中心意外挂了之后,也不会影响系统运行。(将来Eureka服务是要部署到不同服务器上的)
- 在user-service的application.yml中修改,添加新的eureka服务
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka,http://localhost:10087/eureka
- 在consumer-service的application.yml中修改,添加新的eureka服务
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka,http://localhost:10087/eureka
- 将两个eureka注册中心也相互注册。
启动所有服务(注意,先启动一个eureka,然后修改配置文件,再启动另一个eureka)
这样看不出来有什么好处,我们将eureka挂掉一台,选择EurekaServer,右键,停掉。
然后再访问http://localhost:8080/consumer/111
在一个Eureka服务停掉(down机)的情况下,依旧能够访问到服务。
其他
在注册服务完成后,服务提供者会维持一个心跳(定时向EurekaServer发起Rest请求),告诉EurekaServer:“我还活着”。我们称为服务的续约(renew);
有两个重要的参数可以修改服务续约行为:
(修改服务提供者的配置,user-service的配置文件)
eureka:
instance:
lease-renewal-interval-in-seconds: 30
lease-expiration-duration-in-seconds: 90
最大续约周期 单位 秒 默认30s (每隔30秒发送一次续约请求,如果周期太短,将会给eureka带来很大压力)
最小过期时长 单位 秒 默认90s (超过90秒没有发送续约请求,意味着这个服务出现意外挂了,那么注册中心将会剔除该服务)
当一个服务90s没有向Eureka发送续约请求时,Eureka就认为这个服务失效了,会从注册中心剔除此服务(这叫失效剔除),但这个剔除不是立即执行,Eureka发现一个服务挂了之后,再过60s才会剔除该服务
这个60s是默认,也可以配置,在Eureka服务中配置
eureka:
server:
eviction-interval-timer-in-ms: 60