目录
eureka
高可用集群
在实际的生产环境中,eureka
常常是以集群的方式提供服务的,目的就是要保证高可用性,同时它还保证了分区容错性。这也满足了一个健壮的分布式系统所要求的 CAP
理论原则,即 eureka
保证了高可用性,分区容错性
eureka
的简介:https://blog.csdn.net/weixin_38192427/article/details/113854489
eureka
高可用集群搭建
项目的创建
创建父项目,eureka
服务端子项目 3
个,如下
springboot
与 springcloud
对应版本
springboot
版本一定要与 springcloud
版本对应,官方给出的对应关系:https://start.spring.io/actuator/info
也可以参考如下博客:https://blog.csdn.net/qq_31868147/article/details/105808148
Maven
依赖
springcloud-learn
父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.9.RELEASE</version>
<relativePath></relativePath>
</parent>
<dependencyManagement>
<dependencies>
<!--springcloud依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
其余三个子模块
三个子模块的依赖都一样
<dependencies>
<!--springcloud eureka服务端-->
<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-web</artifactId>
</dependency>
<!--lombok 插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
application.properties
配置文件
修改 hosts
文件
由于条件有限,只能在本机模拟三台服务器,此时就要修改 hosts
文件。windows
目录:C:\Windows\System32\drivers\etc\hosts
,在末尾处添加如下映射配置
127.0.0.1 eureka7001
127.0.0.1 eureka7002
127.0.0.1 eureka7003
eureka-server-one
server.port=8761
#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
eureka.client.fetch-registry=false
#false表示不向注册中心注册自己
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://eureka7002:8762/eureka/,http://eureka7003:8763/eureka/
#注册进对方注册中心展示的实例名称
eureka.instance.hostname=eureka7001
eureka-server-two
server.port=8762
#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
eureka.client.fetch-registry=false
#false表示不向注册中心注册自己
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://eureka7001:8761/eureka/,http://eureka7003:8763/eureka/
#注册进对方注册中心展示的实例名称
eureka.instance.hostname=eureka7002
eureka-server-three
server.port=8763
#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
eureka.client.fetch-registry=false
#false表示不向注册中心注册自己
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://eureka7001:8761/eureka/,http://eureka7002:8762/eureka/
#注册进对方注册中心展示的实例名称
eureka.instance.hostname=eureka7003
eureka.client.service-url.defaultZone
:有多台服务器时,用逗号隔开。它们之间是互相注册的,以便于客户端的数据同步
eureka
服务端注解 @EnableEurekaServer
在 3
个服务端的子项目中的启动类上分别添加注解 @EnableEurekaServer
@EnableEurekaServer
@Slf4j
@SpringBootApplication
public class AppOne {
public static void main(String[] args) {
SpringApplication.run(AppOne.class, args);
log.info("------AppOne Running------");
}
}
启动服务,测试
分别启动 eureka-server-one
,eureka-server-two
,eureka-server-three
三个 eureka
服务端项目,测试
浏览器地址栏输入:http://eureka7001:8761/
,页面如下
浏览器地址栏输入:hhttp://eureka7002:8762/
,页面如下
浏览器地址栏输入:http://eureka7003:8763/
,页面如下
注意 DS Replicas
这里的意思就是:这两个注册中心是当前注册中心的集群节点,当前注册中心会从这两个节点同步服务,这里是通过 eureka.instance.hostname
辨别的,所以配置 eureka.instance.hostname
参数的时候需要配置不同的 hostname
。这里有显示配置的集群节点,就证明集群配置成功了