Eureka集群原理说明
Eureka集群原理:互相注册,相互守望
EurekaServer集群环境构建步骤
新建一个cloud-eureka-server7002模块
1. 新建一个cloud-eureka-server7002模块
pom依赖
2. pom依赖同cloud-eureka-server7001
修改两个EurekaServer的yml配置
4. yml
现在有多台Eureka服务器,所以没台Eureka服务器都要有自己的主机名。
同时Eureka7001和Eureka7002要互相注册。
我们先修改映射配置文件:第3步
1. Eureka7001的yml
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
client:
# false表示不向注册中心注册自己(中介不用注册了)
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
fetch-registry: false
service-url:
# 以7001作为服务提供者,向该指定的服务注册中心的位置注册7001服务
defaultZone: http://eureka7002.com:7002/eureka/
2. Eureka7002的yml
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com #eureka服务端的实例名称
client:
# false表示不向注册中心注册自己(中介不用注册了)
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
fetch-registry: false
service-url:
# 以7002作为服务提供者,向该指定的服务注册中心的位置注册7002服务
defaultZone: http://eureka7001.com:7001/eureka/
修改域名映射配置文件
3. 修改映射配置文件
修改:C:\Windows\System32\drivers\etc 路径下的host文件
受限于我们只有一台物理机器,我们用不同的端口号来映射同一个地址。
这样修改是是什么意思:
由于我只有一台电脑,而且将这台电脑也作为服务器。每次我们发送localhost,就会被域名解析器
解析成127.0.0.1,也就是我们本机的ip回送地址,访问我们本机。
现在我们将eureka7001.com和eureka7002.com作为域名映射到127.0.0.1,那么我们就可以
模拟请求不同的服务器名。实际上都会解析到我们本机。
注意这个映射修改了不意味着localhost 127.0.0.1之间的映射关系没有,还有。
即localhost/eureka7001.com/eureka7002.com 都会被域名解析器解析成127.0.0.1
例子1:
之前的单机的EurekaServer的yml配置:
server.port=7001
eureka.instance.hostname=localhost
eureka.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
那么我通过发送http://localhost:7001/eureka能访问到服务器在本地主机的EurekaServer。
例子2:以两个集群为例
现在集群的EurekaServer的yml配置
server.port=7001
eureka.instance.hostname=eureka7001.com
eureka.service-url.defaultZone=http://eureka7002.com:7002/eureka/
server.port=7002
eureka.instance.hostname=eureka7002.com
eureka.service-url.defaultZone=http://eureka7001.com:7001/eureka/
那么这样配置后,我们就可以通过:
http://eureka7001.com:7001和http://eureka7002.com:7002来
分别访问这两个EurekaServer。
同时这两个EurekaServer实现了互相注册。
主配置类
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7002 {
public static void main(String[] args) {
SpringApplication.run(EurekaMain7002.class, args);
}
}
测试
开启eureka7002 和 eureka7001 这两个服务
测试: http://localhost:7001/ 和 http://localhost:7002/
都成功连接。
我又测试一个eureka7003
server: port: 7003
eureka: instance: hostname: eureka7003.com #eureka服务端的实例名称 client: # false表示不向注册中心注册自己(中介不用注册了) register-with-eureka: false # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 fetch-registry: false
service-url:
# 以7001作为服务提供者,向该指定的服务注册中心的位置注册7001服务
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/
将其注册到eureka7002和eureka7001中。
注册提供者微服务和消费者微服务
将提供者服务8001微服务发布到上面的3台Eureka集群配置中
1. 修改yml
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
将消费者服务80微服务发布到上面的3台Eureka集群配置中
1. 修改yml
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
测试
1. 启动顺序
先启动Eureka 7001/7002/7003
在启动payment8001,order80
2. 测试:http://eureka7003.com:7003/ 成功
3. 测试:http://eureka7001.com:7001/和http://eureka7002.com:7002/
略...
4. 测试order80微服务