【Hoxton.SR1版本】Spring Cloud Eureka服务注册中心集群搭建
目录
一、前言:
二、创建Eureka Server
三、调整7001端口注册中心
四、调整服务提供者的配置文件:
五、总结
一、前言:
在旧版本的时候,已经讲解过如何搭建Eureka注册中心集群,小伙伴们可以参考:https://blog.csdn.net/Weixiaohuai/article/details/82499345进行学习。
版本说明:
SpringBoot:2.2.2.RELEASE
SpringCloud:Hoxton.SR1
本文主要搭建Spring Cloud Eureka服务注册中心(多节点),注意,本文所使用的的项目是基于上一节单节点进行搭建的。
二、创建Eureka Server
上一篇文章我们已经创建了端口号为7001的服务注册中心,这里我们再创建一个7002端口的注册中心,简单一点,组成两个节点的Eureka集群。
【a】pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud2020</artifactId><groupId>com.wsh.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>springcloud-eureka-server7002</artifactId><dependencies><!--eureka-server--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity --><dependency><groupId>com.wsh.springcloud</groupId><artifactId>springcloud-api-commons</artifactId><version>${project.version}</version></dependency><!--boot web actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--一般通用配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies></project>
【b】application.yml
server:port: 7002
spring:application:name: springcloud-eureka-server #应用名称
eureka:instance:hostname: springcloud-eureka7002.com #eureka服务端的实例名称client:fetch-registry: true #false表示不需要去检索服务实例register-with-eureka: true #false表示不向注册中心注册自己service-url:defaultZone: http://springcloud-eureka7001.com:7001/eureka/
注意点:这里instance.name尽量不要指定为localhost。
【c】启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能
package com.wsh.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/*** @Description Eureka服务注册中心* @Date 2020/7/26 8:55* @Author weishihuai* 说明: Eureka Server的高可用实际上就是将自己做为服务向其他服务注册中心注册自己。只要有一条边将节点连接,就可以进行信息传播与同步。可以采用两两注册的方式实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现*/
@SpringBootApplication
//@EnableEurekaServer: 开启Eureka服务注册和发现功能(服务端)
@EnableEurekaServer
public class SpringCloudEurekaServiceApplication7002 {public static void main(String[] args) {SpringApplication.run(SpringCloudEurekaServiceApplication7002.class, args);}
}
【d】修改C:\Windows\System32\drivers\etc文件下的hosts文件,加入上面配置文件中的域名映射:
127.0.0.1 springcloud-eureka7001.com
127.0.0.1 springcloud-eureka7002.com
三、调整7001端口注册中心
主要修改application.yml配置文件:
server:port: 7001
spring:application:name: springcloud-eureka-server #应用名称
eureka:instance:hostname: springcloud-eureka7001.com #eureka服务端的实例名称client:fetch-registry: true #false表示不需要去检索服务实例register-with-eureka: true #false表示不向注册中心注册自己service-url:defaultZone: http://springcloud-eureka7002.com:7002/eureka/
如上配置,可见,在7001的注册中心,指定的eureka.client.service-utl.defaultZone的地址为7002的eureka地址,在7002上面,指定的eureka.client.service-utl.defaultZone的地址为7001的eureka地址。
- 小总结:Eureka Server集群搭建的关键点就是:Eureka两两相互注册,互相观望
四、调整服务提供者的配置文件:
server:port: 8001 #指定服务端口号
spring:application:name: springcloud-payment-service #指定服务名称datasource:type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型driver-class-name: com.mysql.jdbc.Driver # mysql驱动包&useSSL=falseurl: jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=utf-8 #数据库地址username: root #数据库用户名password: root #数据库用户密码
mybatis:mapperLocations: classpath:mapper/*.xml #mapper.xml文件扫描位置type-aliases-package: com.wsh.springcloud.entity # 所有Entity别名类所在包
eureka:client:register-with-eureka: true #注册到Eureka注册中心fetch-registry: true #开启检索服务service-url:
# defaultZone: http://localhost:7001/eureka/ #单机版Eureka注册中心defaultZone: http://springcloud-eureka7001.com:7001/eureka/,http://springcloud-eureka7002.com:7002/eureka/ #集群版Eureka注册中心
注意到,这里指定的defaultZone为:http://springcloud-eureka7001.com:7001/eureka/,http://springcloud-eureka7002.com:7002/eureka/,即同时注册到两个EurekaServer上面。当然也可以只指定注册到任意一个,因为2个注册中心组成了集群,eureka客户端通过springcloud-eureka7001.com同步给了与之互相注册的springcloud-eureka7002.com。
- 两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现
下面我们依次启动各个微服务,启动完成之后,浏览器访问http://springcloud-eureka7001.com:7001/和http://springcloud-eureka7002.com:7002/,如下图,可以看到服务注册中心相互进行了注册,并且都在available-replicas可用分片中。
并且我们使用postman测试,访问http://localhost:80/consumer/payment/get/3,查看返回结果:
可见,接口正常返回数据,至此,Eureka Server集群搭建完成,有兴趣的小伙伴可以尝试停掉某个Eureka Server,然后继续请求接口,看下单个节点down掉是否会影响其他微服务正常使用。
五、总结
a. 两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现。
b. 首先需要注意必须开启服务注册中心的检索服务、注册自身服务的功能,否则会出现多节点的注册中心都不可用,全部服务都会出现在unavailable-replicas不可用分片中。
#要么不写,要么必须指定为true
eureka:client:fetch-registry: true #是否检索服务register-with-eureka: true #表示向Eureka注册自身服务
c. spring.application.name必须相同,否则也会出现注册中心不能高可用,出现在unavailable-replicas不可用分片中。
相关项目的代码我已经放在Gitee上,有需要的小伙伴可以去拉取进行学习:https://gitee.com/weixiaohuai/springcloud_Hoxton
以上就是集群版本的Eureka服务注册中心搭建的详细过程,由于笔者水平有限,如有不对之处,还请小伙伴们指正,相互学习,一起进步。
【Hoxton.SR1版本】Spring Cloud Eureka服务注册中心集群搭建相关推荐
- eureka集群只注册一个_一、Spring Cloud Eureka服务注册中心
Sping boot Eureka是服务中心,管理各种服务功能包括服务的注册.发现.熔断.负载.降级等.Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装. 在du ...
- eureka服务注册中心集群模式创建
Eureka组件是springcloud提供的服务注册与发现中心组件 这里创建Eureka server 端的一个集群环境 Eureka服务端运行依赖于spring工程,其集群环境搭建,需要创建spr ...
- 如何优化Spring Cloud微服务注册中心架构?
作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...
- spring cloud eureka服务注册和调用
SPRING INITIALIZR构建工程 spring boot 可通过SPRING INITIALIZR构建项目 访问SPRING INITIALIZR官网,填写项目相关信息后,生成项目. 将下载 ...
- spring cloud搭建_Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!
Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...
- 【SpringCloud】三、Nacos服务注册+配置管理+集群搭建
文章目录 一.认识Nacos 1.安装 2.服务注册和发现 3.服务分级存储模型 4.负载均衡策略--NacosRule 5.服务实例的权重设置 5.环境隔离namespace 6.Eureka和Na ...
- 微服务注册发现集群搭建——Registrator + Consul + Consul-template + nginx
在互联网应用领域,服务的动态性需求十分常见,这就对服务的自动发现和可动态扩展提出了很高的要求. 微服务系统动辄上万个服务,而且还要动态伸缩.以人工写好的IP.Port 硬编码脚本的方式无法做到大规模自 ...
- Consul 注册中心集群搭建
简介 之前公司一直用的是Eureka 1.X版本,但是自从SpringBoot升级到2.X版本后Eureka团队对外宣布不再开源且Eureka 2.X版本不在维护,这就一下子懵逼了,开始寻找Eurek ...
- Nacos注册中心集群搭建和AP/CP模式切换
Nacos集群启动后通过选举推出Matser主节点和Slave从节点.但是Nacos 集群默认是AP模式,即虽然有主从节点之分,但是在恢复模式选举过程中仍可对外提供服务,不影响新服务注册.因节点宕机而 ...
- spring cloud微服务注册中心EurekaServer
注册中心EurekaServer pom文件: <?xml version="1.0" encoding="UTF-8"?> <project ...
最新文章
- 紧急更新下降难度,《王者荣耀》绝悟 AI 难倒一片玩家
- 如何利用 KLEE 符号执行引擎挖掘软件漏洞
- 免费!!3天,吃透JVM!(限时领)
- 创建采购申请---BAPI_REQUISITION_CREATE
- mysql 插入汉字异常: Incorrect string value: '\xE8\xB0\xA2\xE9\x9D\x99' for column 'uname' at row 1...
- AudioContext
- python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
- integer超出范围_BigInteger:可以让超过Integer范围内的数据进行运算
- seaborn—seaborn.distplot绘制直方图和连续密度统计
- 寒流来袭·《求职初体验》
- CentOS7 安装jdk8教程
- ubuntu 11.10 安装RTX 腾讯通
- Matlab2017a许可证问题:一直提示激活
- 收集的tracker
- 微型计算机温度控制系统,单片机实现PC机温度控制系统方案
- Sql Server备份时提示:备份文件不可用,原先扇区为512,现在为4096
- #来陀螺问答,问大V#交易所专场优质问答精选
- STM32F429内部FLASH读写擦除操作流程和寄存器配置要点
- 计算机四级数据工程师题库,全国计算机等级考试四级数据库系统工程师练习题...
- 图像处理特征不变算子系列之Moravec算子(一)