赞
踩
eureka是spring-cloud体系里面,由netflix推出的一款服务注册发现的框架。
eureka分为服务端和客户端,服务端可以是单点部署,也可以是多节点部署,为了高可用一般至少两个节点。
在这里介绍eureka服务端三个节点的搭建。
开发工具IntelliJ IDEA。
1、新建project
next--》finish
2、启动类上添加@EnableEurekaServer 注解
这个注解的真正作用不是启动eurekaserver,而是为eurekaserverconfig启动注入创建一个条件类Maker。
3、配置文件配置
在此介绍两种配置方式:
3.1),使用一个配置文件,配置三个节点:
将application.properties改为application.yaml(个人习惯)
在application.yaml中添加如下配置:
- spring:
- application:
- name: eureka-server
- eureka:
- client:
- register-with-eureka: true
- fetch-registry: true
- service-url:
- defaultZone: http://eureka-7900:7900/eureka/,http://eureka-7901:7901/eureka/,http://eureka-7902:7902/eureka/
-
- ---
- eureka:
- instance:
- hostname: eureka-7900
- server:
- port: 7900
- spring:
- profiles: 7900
-
- ---
- eureka:
- instance:
- hostname: eureka-7901
- server:
- port: 7901
- spring:
- profiles: 7901
-
- ---
- eureka:
- instance:
- hostname: eureka-7902
- server:
- port: 7902
- spring:
- profiles: 7902
通过这个配置,我们添加了7900,7901,7902三个端口,因为是一台机器,如果是三台机器,就不用这么麻烦了,只需要添加一个端口,也不需要profiles来区分了。因为是在一台机器上做的测试,所以通过profiles来区分。设置了profiles之后,在启动的时候需要指定profiles,如下图所示,点击Edit Configurations...,默认情况下,spring boot下面会有启动类的一个服务,将默认的服务改名7900,然后设置Active profiles为7900。然后复制7900服务,改名7901,设置Active profiles为7901; 同理复制出7902。这样三个服务就创建好了。
这样就完成了一个配置文件,三个节点的配置。
在配置中,defaultZone设置的域名是eureka-7900,eureka-7901,eureka-7902, 因为是本机单机测试,所以在hosts文件中添加了此三个域名,实际部署的时候,按实际服务器域名来就可。
hosts(位置:C:\Windows\System32\drivers\etc)添加的内容:
127.0.0.1 eureka-7900
127.0.0.1 eureka-7901
127.0.0.1 eureka-7902
这里还有个需要注意的点,就是每一个节点的instance.hostname 必须跟defaultZone中域名相对应起来,否则服务之间replicas会是unavailable。
正确的是:
3.2),使用三个配置文件,配置三个节点:
一个节点一个配置文件,实际上就是将
---
eureka:
instance:
hostname: eureka-7900
server:
port: 7900
spring:
profiles: 7900
转化到一个文件中。具体做法如下:
文件名的形式就是application-{profiles_name}.yaml。 因为我们这里定义的profiles是7900,7901,7902,所以就创建三个文件application-7900.yaml,application-7901.yaml,application-7902.yaml。(如果你的profile是用来区分环境的,可以自行修改为dev/pro/pre等等)。
application-7900.yaml内容如下:
- spring:
- application:
- name: eureka-server
- eureka:
- instance:
- hostname: eureka-7900
- client:
- register-with-eureka: true
- fetch-registry: true
- service-url:
- defaultZone: http://eureka-7900:7900/eureka/,http://eureka-7901:7901/eureka/,http://eureka-7902:7902/eureka/
- server:
- port: 7900
7901和7902的配置与7900基本一致,就是将hostname和port改为7901和7902即可。
这里不需要再配置profiles,因为文件名中就已经区分了。从这里其实也可以猜得到spring去找profiles的方式,就是先找application文件名的对应profiles配置文件,如果没有对应的配置文件,就从默认的application.yaml文件中查找profiles设置。
至此,eureka服务端的基本配置就搞定了,可以启动三个端口试下,启动之后,访问eureka-7900:7900 或者 eureka-7901:7901 或者 eureka-7902:7902
都能相互看到对方:
PS:
搭建的时候,需要有几个注意的点:
1、所有服务端节点的spring: application: name的值必须一样,否则在eureka控制台看到的Instances实例会是多条
2、以下两个配置需要设置为true,当然默认就是true,所以不配置即可。
register-with-eureka: true fetch-registry: true
3、每个节点的defautZone设置必须是所有节点的访问地址。
4、每个节点的eureka: instance: hostname 必须跟本节点在defautZone中的域名一致。否则登录自己节点的后台,看到的其他节点都是unavailable-replicas。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。