springcloud(三,高可用eureka,集群eureka)
文章目录
- 为什么要集群eureka
- 搭建集群
- 服务注册
- 启动测试
为什么要集群eureka
- 如果我们只有一个注册中心eureka,这个注册中心如果挂了我们所有服务就直接全部挂了,所以我们需要对eureka做集群
搭建集群
创建两个eureka
父依赖<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zou</groupId>
<artifactId>springcloud-shopping-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>springcloud-shopping-eurekaserver</module>
<module>springcloud-shopping-eurekaserver1</module>
</modules>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/>
</parent>
<!--指定编码格式及jdk版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.M9</spring-cloud.version>
</properties>
<!--集成web-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!--指定springcloud版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${ spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
两个eureka的依赖一致
<dependencies>
<!--SpringCloud eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
springcloud-shopping-eurekaserver配置文件 application.yml
服务端口号
server:
port: 8009eureka 基本信息配置
spring:
application:name: eureka-server
eureka:
instance:###注册到eureka ip地址
hostname: 127.0.0.1
client:
serviceUrl:
defaultZone: http://127.0.0.1:8100/eureka/
###集群改为true注册到其他eureka
register-with-eureka: true
###群改为true注册到其他eureka
fetch-registry: true
- 这里与单机版不同的是 register-with fetch-registry都改为 true
defaultZone: http://127.0.0.1:8100/eureka/
地址为需要注册的另一台eureka 地址,如果是多台以上用逗号隔开如(defaultZone: http://127.0.0.1:8100/eureka/,http://127.0.0.1:8008/eureka/
)- 集群必须要有项目名,即spring.application.name,且必须相同
springcloud-shopping-eurekaserver1配置文件 application.yml
服务端口号
server:
port: 8100eureka 基本信息配置
spring:
application:name: eureka-server
eureka:
instance:###注册到eureka ip地址
hostname: 127.0.0.1
client:
serviceUrl:
defaultZone: http://127.0.0.1:8009/eureka/
###集群改为true注册到其他eureka
register-with-eureka: true
###群改为true注册到其他eureka
fetch-registry: true
- 唯一不同为
defaultZone: http://127.0.0.1:8009/eureka/
启动类
EurekaServer.java
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer {
public static void main(String[] args) {
SpringApplication.run(EurekaServer.class);
}
}
服务注册
这里我们服务使用 springcloud-shopping-member
配置文件 application.yml
server:
port: 9100
spring:
application:
name: shopping-member
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8009/eureka/,http://127.0.0.1:8100/eureka/
register-with-eureka: true
fetch-registry: true
- 这里需要注意的是集群环境下defaultZone也要写两台eureka地址
启动测试
- 最先启动的eureka肯定会报错,因为另一台eureka还没有启动,这里不用担心
- 后启动的eureka需要等几秒刷新才能看到最新启动的eureka注册上来
这里可以看到两台服务中心相互注册,但是shopping-member只在y一个eureka注册(8100),这是因为在注册过程中会保证只有一个注册中心,只有当8009eureka挂了的情况下,才会注册到8009上去
- 我们现在停掉8009eureka测试
还没有评论,来说两句吧...