SpringCloud从入门到进阶(四)——生产环境下Eureka的完全分布式部署
内容
由于前两节的内容我们知道,开启了preferIpAddress后,Eureka的伪分布式部署会提示replica不可用。这一节我们讲解如何在生产环境下部署完全分布式的Eureka集群,确保开启了preferIpAddress后replica的可用性。
版本
IDE:IDEA 2017.2.2 x64
JDK:1.8.0_171
manve:3.3.3
SpringBoot:1.5.9.RELEASE
SpringCloud:Dalston.SR1
适合人群
Java开发人员
节点信息:
节点A的IP为:172.26.125.118
节点B的IP为:172.26.125.114
节点C的IP为:172.26.125.115
说明
转载请说明出处:SpringCloud从入门到进阶(四)——生产环境下Eureka的完全分布式部署
三台服务器都需要安装好JDK,可以参考:Linux入门实践笔记(一)——安装JDK与运行jar包
步骤
Eureka的完全分布式部署与伪分布式部署大同小异,只是yaml配置文件和启动方式不同。项目结构、pom.xml文件、主启动类的配置,以及项目打包、部署的操作都几乎一样,请参考SpringCloud从入门到进阶(二)——注册中心Eureka的伪分布式部署。
yaml
在单台主机进行伪分布式部署时,三个Eureka实例的端口号是不同的。但是完全分布式部署是在不同的主机中运行不同的Eureka实例,端口号保持一致便于管理。同时实例的名称要能体现主机的信息。此外,由于开启了preferIpAddress,在配置service-url的时候需要使用ip地址,而不是域名。
#将公共部分提取出来,比如端口号、实例名等配置 spring: application: name: application-eurekaserver server: port: 7001 eureka: instance: #要求Client通过ip的方式进行注册 prefer-ip-address: true client: register-with-eureka: true fetch-registry: true #actuator management: #配置了Actuator对外暴露REST API接口的端口号,如果不指定,端口为应用程序的启动端口,这样做的目的是将程序端口和程序的监控端口分开。 port: 7101 #Actuator 采取非安全验证方式,l.5x 版本默认开启了 Actuator 的安全验证。• security: enabled: false --- spring: profiles: peer1 eureka: instance: instance-id: springcloud-eurekaserver-A8-118 client: service-url: defaultZone: http://172.26.125.114:7001/eureka,http://172.26.125.115:7001/eureka --- spring: profiles: peer2 eureka: instance: instance-id: springcloud-eurekaserver-A6-114 client: service-url: defaultZone: http://172.26.125.118:7001/eureka,http://172.26.125.115:7001/eureka --- spring: profiles: peer3 eureka: instance: instance-id: springcloud-eurekaserver-A2-115 client: service-url: defaultZone: http://172.26.125.118:7001/eureka,http://172.26.125.114:7001/eureka
启动与测试
在启动时,通过JVM参数-Dspring.profiles.active选择项目启动的profiles。此处还设定了虚拟机堆空间的最小值为512mb,堆空间的最大值为1024mb。
#请根据你的机器配置设置合适的堆空间参数。 #在节点A上运行 [ServerA@172.26.125.118 jars]$ java -Xms512m -Xmx1024m -Dspring.profiles.active=peer1 -jar eurekaserver-1.0-SNAPSHOT.jar & #在节点B上运行 [ServerB@172.26.125.114 jars]$ java -Xms512m -Xmx1024m -Dspring.profiles.active=peer2 -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar #在节点C上运行 [ServerC@172.26.125.115 jars]$ java -Xms512m -Xmx1024m -Dspring.profiles.active=peer3 -jar eureka-server-7001-7002-1.0-SNAPSHOT.jar
验证
确保本地能访问到这三台eureka服务器,访问http://172.26.125.118:7001/
可见,所有replica的状态均可用。