因为大部分人只有一台电脑,所以本节演示如何在一台电脑上实现“服务中心”集群。这里以模拟3台服务器来实现集群,具体如下表。
访问URI | IP(本机) | 几点名称 | 端口号 |
---|---|---|---|
http://node1:9091 | 127.0.0.1 | node1 | 9091 |
http://node2:9092 | 127.0.0.1 | node2 | 9092 |
http://node3:9093 | 127.0.0.1 | node3 | 9093 |
1. 配置虚拟地址
在C:\Windows\System32\drivers\etc 下的hosts文件中添加一下代码并保存(注意提供修改权限):
#节点 node1
127.0.0.1 node1
#节点 node2
127.0.0.1 node2
#节点 node3
127.0.0.1 node3
DNS的作用是将域名解析到对应的IP地址。
在做好上面配置后,访问http://node1、http://node2、http://node3 都是访问IP地址为127.0.0.1 的主机(即本机)。需要在域名地址后加上端口号,这样才能出现“服务中心”的管理界面。
2.多环境配置
下面通过创建多个配置文件来模拟多个“服务中心”。
(1) 创建节点 node1 的配置文件 application-node1.properties,并将“serviceUrl”指向节点 node2 和node3。见以下代码:
#应用名称
spring.application.name=Eureka Server Demo
#服务的端口号
server.port=9091
#节点的名称
eureka.instance.hostname=node1
#是否注册到eureka server,默认为true
eureka.client.register-with-eureka=false
#是否从eureka server 获取注册信息,默认为 true
eureka.client.fetch-registry=false
#设置与eureka server交互的地址。查询服和注册服务都需要依赖这个地址。多个地址可使用","分隔${server.port}代表配置的是9090的
#端口号
eureka.client.serviceUrl.defaultZone=http://node2:9092/eureka/,http://node3:9093/eureka/
(2) 创建节点 node2 的配置文件 application-node2.properties,并将“serviceUrl”指向节点 node1 和node3。见以下代码:
#应用名称
spring.application.name=Eureka Server Demo
#服务的端口号
server.port=9092
#节点的名称
eureka.instance.hostname=node2
#是否注册到eureka server,默认为true
eureka.client.register-with-eureka=false
#是否从eureka server 获取注册信息,默认为 true
eureka.client.fetch-registry=false
#设置与eureka server交互的地址。查询服和注册服务都需要依赖这个地址。多个地址可使用","分隔${server.port}代表配置的是9090的
#端口号
eureka.client.serviceUrl.defaultZone=http://node1:9091/eureka/,http://node3:9093/eureka/
(2) 创建节点 node3 的配置文件 application-node3.properties,并将“serviceUrl”指向节点 node1 和node2。见以下代码:
#应用名称
spring.application.name=Eureka Server Demo
#服务的端口号
server.port=9093
#节点的名称
eureka.instance.hostname=node3
#是否注册到eureka server,默认为true
eureka.client.register-with-eureka=false
#是否从eureka server 获取注册信息,默认为 true
eureka.client.fetch-registry=false
#设置与eureka server交互的地址。查询服和注册服务都需要依赖这个地址。多个地址可使用","分隔${server.port}代表配置的是9090的
#端口号
eureka.client.serviceUrl.defaultZone=http://node1:9091/eureka/,http://node2:9092/eureka/
3 打包和部署“服务中心”
在开发完成后,可以直接使用IDEA将应用打包成JAR(WAR)包,以便在多服务器多配置环境中运行。
3.1 部署“服务中心”集群。
接下来进入打包后的JRA包目录,分别以node1、node2、node3的配置参数启动“服务中心” Eureka。具体如下。
- 进入JRA目录,在地址栏输入"cmd"命令,按3次Enter键,即可打开3个DOS命令窗口。
- 在3个DOS命令窗口中分别输入以下命令以启动服务中心。
命令1:
java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=node1
命令2:
java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=node2
命令3:
java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=node3
待各个节点依次启动后在浏览器中输入“http://node1:9091”,会显示如下图的“服务中心”管理页面。
由图可知,节点node1 的“DS Replicas” 中已经有了node2、node3、的配置信息,并且在“available-replicas” 中有node1、node2、node3的状态信息。如果停止node2,则会发现node2被移动到“unavailable-replicas” 一栏中,表示node2不可用。
4 用Eureka实现“服务提供者”
4.1 实现“服务提供者”的客户端
4.1.1 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>