Eureka集群配置
-
问题:微服务RPC远程服务调用最核心的是什么
高可用,试想你的注册中心只有一个only one, 它出故障了那就会导致整个为服务环境不可用,所以解决办法:搭建Eureka注册中心集群 ,实现负载均衡+故障容错 -
eureka-serve集群搭建步骤
-
构建cloud-eureka-server7001和cloud-eureka-server7002模块,参考前一篇文章
-
找到C:\Windows\System32\drivers\etc路径下的hosts文件
127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com
-
修改YML文件
- cloud-eureka-server700下的application.yml
server: port: 7001 eureka: instance: hostname: eureka7001.com client: #表示是否将自己注册进EurekaServer默认为true。false表示不向注册中心注册自己 register-with-eureka: false #false表示自己端就是注册中心,职责就是维护服务实例,并不需要去检索服务 fetchRegistry: false service-url: defaultZone: http://eureka7002.com:7002/eureka/ #7001的要指向7002
- cloud-eureka-server700下的application.yml
server: port: 7002 eureka: instance: hostname: eureka7002.com client: #表示是否将自己注册进EurekaServer默认为true。false表示不向注册中心注册自己 register-with-eureka: false #false表示自己端就是注册中心,职责就是维护服务实例,并不需要去检索服务 fetchRegistry: false service-url: defaultZone: http://eureka7001.com:7001/eureka/#7002的要指向7001
-
将cloud-consumer-order80、cloud-provider-payment8001、cloud-provider-payment8002添加到2天Eureka集群配置中。
#分别在三个模块中的application.yml中添加下面的eureka配置 eureka: client: #表示是否将自己注册进EurekaServer默认为true。false表示不向注册中心注册自己 register-with-eureka: true #false表示自己端就是注册中心,职责就是维护服务实例,并不需要去检索服务 #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡 fetchRegistry: true service-url: defaultZone: http://eureka7002.com:7002/eureka,http://eureka7001.com:7001/eureka
-
测试
#启动顺序 1.先要启动EurekaServer,7001/7002服务 2.再要启动服务提供者provider,8001 3.再要启动消费者,80 4.分别访问 http://eureka7002.com:7002/ http://eureka7001.com:7001/ 可以看到80 8001 8002已经注册到Eureka中了
![](https://img2022.cnblogs.com/blog/1291730/202203/1291730-20220315175502040-1546075037.png)
-
负载均衡问题
由于支付服务提供者集群环境中存在8001 和 8002两个服务提供者,当用户访问服务的时候,选择那台服务就是个问题,通过负载均衡配置就能解决该问题,具体配置如下:
import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; /** * @Author: hcx * @Description: RestTemplate模板配置:RestTemplate提供了多种便捷访问远程Http服务的方法, 是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集 * @Date: 2021/12/16 11:10 * @Param: * @return: **/ @Configuration public class ApplicationContextConfig { @Bean @LoadBalanced//负载均衡注解 public RestTemplate restTemplate(){ return new RestTemplate(); } }
配置成功后,访问其中一个接口,8001/8002端口交替出现,就表明负载均衡配置成功。
脚踏实地,注重基础。