上一篇文章里注册中心只用了一个服务端,在实际生产环境中由于负载、断点保护等原因,肯定是不合适的, 这样我们就要将Eureka集群化。Eureka可通过运行多个实例,使其更具有高可用性。事实上,这是它默认的熟性,你需要做的就是给对等的实例一个合法的关联serviceurl。
1、创建服务端项目
将上一篇文章终端服务端拷贝,重命名为 13-eureka-server-club。
2、多个实例的创建
根据《springboot 配置文件:多环境配置》文章所描述,springboot项目运行多个实例非常简单,只要设置多个环境配置文件即可。
将 配置文件 application.properties 拷贝2份,分别命名为:application-eureka1.properties 、application-eureka2.properties。
3、修改配置文件
application-eureka1.properties
spring.application.name=eureka-server1
server.port=8761
#设置eureka 实例名称,与配置文件的变量为主
eureka.instance.hostname=eureka1
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka2:8762/eureka/
#是否将自己注册到Eureka-Server 中,默认的为true
eureka.client.register-with-eureka=false
#是否冲Eureka-Server 中获取服务注册信息,默认为true
eureka.client.fetch-registry=false
修改项目名称,设置此实例的名称并指向另一个注册中心,注意这里设置的另一个注册中心的实例名称和端口号就是另一个配置文件里要设置的,如下:
application-eureka2.properties
spring.application.name=eureka-server2
server.port=8762
#设置eureka 实例名称,与配置文件的变量为主
eureka.instance.hostname=eureka2
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/
#是否将自己注册到Eureka-Server 中,默认的为true
eureka.client.register-with-eureka=false
#是否冲Eureka-Server 中获取服务注册信息,默认为true
eureka.client.fetch-registry=false
修改项目名称,端口号,实例名称,并设置指向第一个注册中心的参数,后面3个参数均要和第一个配置文件里的设置一一匹配。
修改好后的项目结构如下
4、客户端项目
沿用上一篇文章里创建的项目即可,需要将配置文件里的“指向注册中心”的链接修改成实际的即可,因为这里是2个中心,则加上2个中心的地址即可,
注:这里的注册中心的访问地址,用的是域名形式,所以要修改hosts文件。
application.properties
spring.application.name=eureka-client
server.port=8080
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8762/eureka/
5、修改window的hosts文件
C:\Windows\System32\drivers\etc\hosts
127.0.0.1 eureka1
127.0.0.1 eureka2
6、测试
a) 运行注册中心
通过MAVEN打包注册中心为jar包,将其拷贝到E盘,然后打开2个命令窗口,分别运行下面2个命令:
java -jar 13-eureka-server-club-0.0.1-SNAPSHOT.jar --spring.profiles.active=eureka1
java -jar 13-eureka-server-club-0.0.1-SNAPSHOT.jar --spring.profiles.active=eureka2
命令运行成功后,就有2个实例了。
此时访问注册中心,如下图,是没有客户端的。
注册中心1:
注册中心2:
b)运行客户端项目
再访问注册中心,则能看到客户端被注册成功,
注册中心1:
注册中心2: