一,注册中心服务集群搭建
- 创建一个文件夹 名称为 eurekas
- 使用IDEA打开这个文件夹
- 创建多个Module -> 选择SpringBoot -> 名称为: eureka-server-1 和 eureka-server-2 和 eureka-server-3
- 创建项目时勾选Spring web和Eureka Server依赖。
- 三个项目都是注册中心,pom文件一样,依赖CV即可,启动类添加@EnableEurekaServer注解,表明是服务注册中心。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zpa</groupId>
<artifactId>eureka-server-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-server-1</name>
<description>Eureka集群一</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.1</spring-cloud.version>
</properties>
<dependencies>
<!--添加SpringBoot的Web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--添加 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-test</artifactId>
<scope>test</scope>
</dependency>
<!--登陆或连接验证的依赖 安全依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
<!--Spring Cloud 父级依赖-->
<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>
6. 配置HTTP密码验证 (需手动添加依赖);
7. 因为我们设置了注册中心 密码验证 此时我们的provider和consumer项目想要连接上注册中心就会报错,由于spring-boot-starter-security默认开启了CSRF校验,对于client端这类非界面应用来说,有些不合适,-但是又没有配置文件的方式可以禁用,需要通过Java配置,进行禁用,如下:这样的话需要连接注册中心的其他项目就可以在连接URL中配置账号和密码 就可以连接上注册中心;
8. 三个集群项目中都需要此配置类!
package com.zpa.eurekaserver1.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/**
* @Author user
*/
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
super.configure(http);
}
}
- 配置Windows的hosts文件
- 打开 此电脑 C:\Windows\System32\drivers\etc
- 这个文件夹里有 一个名称为hosts 或者HOSTS 的文件 这个文件是以键值对 的方式进行配置。
127.0.0.1 eureka1.com
127.0.0.1 eureka2.com
127.0.0.1 eureka3.com
12.重点配置.yml
- eureka-server-1 项目的配置
server:
port: 8001 #服务注册中心端口号
eureka:
instance:
appname: eureka-server-1
eureks2Port: 8002
eureks3Port: 8003
client:
fetch-registry: false #是否检索其他注册中心
register-with-eureka: false #是否把自己注册到注册中心
service-url: # 配置注册中心的地址 url
defaultZone: http://root:root@eureka2.com:${eureka.instance.eureks2Port}/eureka/,http://root:root@eureka3.com:${eureka.instance.eureks3Port}/eureka/
server: #关闭自我安全检查
enable-self-preservation: false
# 配置认证密码
spring:
application:
name: eureka-server-1
security:
user:
name: root
password: root
- eureka-server-2项目的配置
server:
port: 8002
eureka:
instance:
appname: eureka-server-2
eureks1Port: 8001
eureks3Port: 8003
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZone: http://root:root@eureka1.com:${eureka.instance.eureks1Port}/eureka/,http://root:root@eureka3.com:${eureka.instance.eureks3Port}/eureka/
server:
enable-self-preservation: false
# 配置认证密码
spring:
application:
name: eureka-server-2
security:
user:
name: root
password: root
- eureka-server-3项目的配置
server:
port: 8003
eureka:
instance:
appname: eureka-server-3
eureks1Port: 8001
eureks2Port: 8002
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZone: http://root:root@eureka1.com:${eureka.instance.eureks1Port}/eureka/,http://root:root@eureka2.com:${eureka.instance.eureks2Port}/eureka/
server:
enable-self-preservation: false
# 配置认证密码
spring:
application:
name: eureka-server-3
security:
user:
name: root
password: root
- 启动三个项目
二,简单来个服务提供者
- 创建一个文件夹 名称为 spring-cloud
- 使用IDEA打开这个文件夹 创建Module -> 选择SpringBoot -> 名称为: provider1
- 创建项目时勾选Springweb和Eureka Server依赖
- 启动类添加@EnableEurekaClient注解表明是服务提供者
- 如上同添加密码验证依赖与配置
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zpa</groupId>
<artifactId>provider1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>provider1</name>
<description>服务提供者1</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.1</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-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--登陆或连接验证的依赖 安全依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</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>
- appliction.yml配置类
server:
port: 8011
eureka:
instance:
appname: provider1
client:
fetchRegistry: false #是否检索其他注册中心
register-with-eureka: true # 需要把自己注册到注册中心
service-url:
defaultZone: http://root:root@eureka1.com:8001/eureka/
server: # 关闭自我安全检查 及时的排除掉不可用的服务
enable-self-preservation: false
#密码
spring:
application:
name: provider1
security:
user:
name: root
password: root
- 开始测试
- 先启动三个注册中心
- 然后启动该服务提供者
10.完结,这样即完成服务注册中心的集群部署。
具体参考:https://www.kuangstudy.com/bbs/1364133964096217090