springcloud之eureka集群搭建

eureka 高可用集群

在实际的生产环境中,eureka 常常是以集群的方式提供服务的,目的就是要保证高可用性,同时它还保证了分区容错性。这也满足了一个健壮的分布式系统所要求的 CAP 理论原则,即 eureka 保证了高可用性,分区容错性

eureka 的简介:https://blog.csdn.net/weixin_38192427/article/details/113854489

eureka 高可用集群搭建

项目的创建

创建父项目,eureka 服务端子项目 3 个,如下

在这里插入图片描述

springbootspringcloud 对应版本

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-oneeureka-server-twoeureka-server-three 三个 eureka 服务端项目,测试

浏览器地址栏输入:http://eureka7001:8761/,页面如下

在这里插入图片描述
浏览器地址栏输入:hhttp://eureka7002:8762/,页面如下

在这里插入图片描述
浏览器地址栏输入:http://eureka7003:8763/,页面如下

在这里插入图片描述

注意 DS Replicas

在这里插入图片描述
这里的意思就是:这两个注册中心是当前注册中心的集群节点,当前注册中心会从这两个节点同步服务,这里是通过 eureka.instance.hostname 辨别的,所以配置 eureka.instance.hostname 参数的时候需要配置不同的 hostname。这里有显示配置的集群节点,就证明集群配置成功了

猜你喜欢

转载自blog.csdn.net/weixin_38192427/article/details/121149259