高可用集群部署 Eureka
服务注册中心。java
使用 idea
开发工具建立一个 SpringBoot
项目,添加 Eureka Server
依赖便可, pom.xml
配置文件以下所示:node
...... <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties> <dependencies> <!--Eureka Server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> ......
咱们本章主要是完成 Eureka Server
的集群配置,因此只须要添加 spring-cloud-starter-netflix-eureka-server
依赖便可。spring
在入口类 XxxApplication
上添加 @EnableEurekaServer
注解来启用 Eureka Server
服务以及实例化一些依赖,修改以下所示:sql
@SpringBootApplication @EnableEurekaServer public class SpringCloudEurekaHighApplication { //.... }
依赖已经添加完成,接下来咱们就须要在 application.yml
内编写相关配置信息,由于测试环境都在咱们本机,有两种方式能够模拟测试同时运行:windows
spring.profiles.active
为了方便演示,咱们使用的第二种方式,主要是感受再去建立一个项目没有必要,那咱们的 profiles
环境该怎么配置呢?请继续往下看。架构
咱们在 src/main/resources
目录下建立名为 application-node1.yml
的配置文件,在该配置文件内添加以下配置:并发
# Eureka 客户端配置 eureka: client: service-url: defaultZone: http://node2:10002/eureka/ instance: # 配置经过主机名方式注册 hostname: node1 # 配置实例编号 instance-id: ${eureka.instance.hostname}:${server.port}:@project.version@ # 集群节点之间读取超时时间。单位:毫秒 server: peer-node-read-timeout-ms: 1000 # 服务端口号 server: port: 10001
继续在 src/main/resources
下建立一个名为 application-node2.yml
的配置文件,内容以下所示:app
# Eureka 客户端配置 eureka: client: service-url: defaultZone: http://node1:10001/eureka/ instance: # 配置经过主机名方式注册 hostname: node2 # 配置实例编号 instance-id: ${eureka.instance.hostname}:${server.port}:@project.version@ # 集群节点之间读取超时时间。单位:毫秒 server: peer-node-read-timeout-ms: 1000 server: port: 10002
下面咱们先来讲下 node1
、 node2
主机名的配置方式,而后再说下为何实现了集群的效果?maven
Mac
或者 Linux
配置方式分布式
若是你使用的是 osx
系统。能够找到 /etc/hosts
文件并添加以下内容:
127.0.0.1 node1 127.0.0.1 node2
通常状况下配置完成后就会生效,若是你的配置并无生效,你能够尝试重启。
Windows
配置方式
若是你使用的是 windows
系统,你能够修改 C:\Windows\System32\drivers\etc\hosts
文件,添加内容与 Mac
方式一致。
application-node1.yml
eureka.client.service-url.defaultZone
这个配置参数的值,配置的是 http://node2:10002/eureka/
,那这里的 node2
是什么呢?其实一看应该能够明白,这是们在 hosts
文件内配置的 hostname
,而 端口号
咱们配置的则是 10002
,根据 hostname
以及 port
咱们能够看出,环境 node1
注册到了 node2
上。
application-node2.yml
在 node2
环境内配置 eureka.client.service-url.defaultZone
是指向的 http://node1:10001/eureka/
,一样 node2
注册到了 node1
上。
经过这种相互注册的方式牢靠的把两个 服务注册中心
绑定在了一块。
咱们先来运行测试下 Eureka Server
的集群是否可行?下一章节咱们再来说解 把服务提供者注册到Eureka集群
,测试步骤以下:
Maven Projects -> Lifecycle
)cd
项目 target
目录node1
环境:java -jar hengboy-spring-cloud-eureka-high-0.0.1-SNAPSHOT.jar --spring.profiles.active=node1
cd
项目的 target
目录下,经过以下命令启动 node2
环境:java -jar hengboy-spring-cloud-eureka-high-0.0.1-SNAPSHOT.jar --spring.profiles.active=node2
http://node1:10001
查看 node1
环境的 Eureka
管理中心http://node2:10002
查看 node2
环境的 Eureka
管理中心效果以下图所示:
集群相互注册效果
欢迎工做一到五年的Java工程师朋友们加入Java架构开发: 855835163 群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用本身每一分每一秒的时间来学习提高本身,不要再用"没有时间“来掩饰本身思想上的懒惰!趁年轻,使劲拼,给将来的本身一个交代!