大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
目录
三、启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能:
五、在C:\Windows\System32\drivers\etc\hosts文件中添加如下:
七、启动类加上@EnableDiscoveryClient注解,注册成为Eureka的一个服务提供者。
九、采用java -jar的方式启动高可用Eureka Server
十、同样使用java -jar 方式启动Eureka Client
一、前言:
本文主要搭建Spring Cloud Eureka服务注册中心(多节点), 本文基于SpringBoot 1.5.2,Spring Cloud Camden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:
二、搭建Eureka-Server
首先,引入相应的依赖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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloud.wsh</groupId>
<artifactId>springcloud_hign_availability_eureka_server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springcloud_hign_availability_eureka_server</name>
<description>Spring Cloud Eureka高可用</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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>Camden.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
三、启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能:
/**
* @Description: 高可用Eureka服务注册中心
* @Author: WeiShiHuai
* @Date: 2018/9/7 11:45
* Eureka Server的高可用实际上就是将自己做为服务向其他服务注册中心注册自己
* 只要有一条边将节点连接,就可以进行信息传播与同步。可以采用两两注册的方式实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现
*/
@SpringBootApplication
@EnableEurekaServer
public class SpringcloudHignAvailabilityEurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudHignAvailabilityEurekaServerApplication.class, args);
}
}
四、新建三个配置文件
application-availability1.yml:
server:
port: 3333 #服务端口号
eureka:
client:
service-url:
#相互注册,组成一个集群,实现高可用
defaultZone: http://availability2:4444/eureka/,http://availability3:5555/eureka/
instance:
#主机名
hostname: availability1
spring:
application:
#服务名称
name: eureka-availability-server
application-availability2.yml:
server:
port: 4444 #服务端口号
eureka:
client:
service-url:
#相互注册,组成一个集群,实现高可用
defaultZone: http://availability1:3333/eureka/,http://availability3:5555/eureka/
instance:
#主机名
hostname: availability2
spring:
application:
#服务名称
name: eureka-availability-server
application-availability3.yml:
server:
port: 5555 #服务端口号
eureka:
client:
service-url:
#相互注册,组成一个集群,实现高可用
defaultZone: http://availability1:3333/eureka/,http://availability2:4444/eureka/
instance:
#主机名
hostname: availability3
spring:
application:
#服务名称
name: eureka-availability-server
五、在C:\Windows\System32\drivers\etc\hosts文件中添加如下:
127.0.0.1 availability1
127.0.0.1 availability2
127.0.0.1 availability3
六、搭建服务提供者Eureka-Client:
首先引入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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloud.wsh</groupId>
<artifactId>springcloud_hign_availability_eureka_client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springcloud_hign_availability_eureka_client</name>
<description>Spring Cloud Eureka高可用 客户端</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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>Camden.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
七、启动类加上@EnableDiscoveryClient注解,注册成为Eureka的一个服务提供者。
/**
* @Description: 高可用Eureka-服务提供者
* @Author: WeiShiHuai
* @Date: 2018/9/7 14:01
*/
@SpringBootApplication
//注册成为Eureka客户端
@EnableDiscoveryClient
public class SpringcloudHignAvailabilityEurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudHignAvailabilityEurekaClientApplication.class, args);
}
}
八、编写application.yml配置文件:
server:
port: 6666 #服务端口号
eureka:
client:
service-url:
#注册到availability1上,由于3个注册中心组成了集群,eureka-availability-client服务通过availability1同步给了与之互相注册的availability2和availability3。
#两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现
defaultZone: http://availability1:3333/eureka/
#也可以指定多个注册中心
#defaultZone: http://availability1:3333/eureka/,http://availability2:4444/eureka/,http://availability3:5555/eureka/
instance:
#主机名
hostname: localhost
spring:
application:
#服务名称
name: eureka-availability-client
注意,这里我只注册到availability1上,因为availability1、availability2、availability3两两相互注册,所以服务会同步到availability2,availability3上面。
九、采用java -jar的方式启动高可用Eureka Server
通过指定–spring.profiles.active=availability1来加载不同的配置文件。
a. 首先cmd进入到项目根目录
//假设项目位于 F:\zuul-websocket\springcloud_eureka\springcloud_hign_availability_eureka_server
cd F:\zuul-websocket\springcloud_eureka\springcloud_hign_availability_eureka_server
b. 执行mvn install,执行完成后会在项目根目录生成target,通过cd target命令进入target目录,执行以下命令:
springcloud_hign_availability_eureka_server-0.0.1-SNAPSHOT.jar 对应为jar包名称,需要替换成具体生成的。
java -jar springcloud_hign_availability_eureka_server-0.0.1-SNAPSHOT.jar --spring.profiles.active=availability1
c. 以此方式依次启动availability2,availability3,
启动完成之后,浏览器访问http://localhost:3333/,http://localhost:4444/,http://localhost:5555/如下图,可以看到服务注册中心相互进行了注册,并且都在available-replicas可用分片中。
十、同样使用java -jar 方式启动Eureka Client
可以看到我们只指定了注册到availability1上面,但是因为注册中心高可用,服务进行同步,所以Eureka Client同样会被注册到availability2和availability3上面。
依次访问http://localhost:3333/、http://localhost:4444/、http://localhost:5555/,如下:
十一、总结
a. 两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现。
b. 首先需要注意必须开启服务注册中心的检索服务、注册自身服务的功能,否则会出现多节点的注册中心都不可用,全部服务都会出现在unavailable-replicas不可用分片中。
#要么不写,要么必须指定为true
eureka:
client:
fetch-registry: true #是否检索服务
register-with-eureka: true #表示向Eureka注册自身服务
c. application-availability1.yml、application-availability2.yml、application-availability3.yml三个配置文件中的application-name必须相同,否则也会出现注册中心不能高可用,出现在unavailable-replicas不可用分片中。
至此,高可用Eureka服务注册中心已经搭建完成,本文是笔者在温习SpringCloud的时候所写,仅供参考,大家一起学习,共同进步!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184540.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...