springcloud+eureka项目搭建及部署

20 篇文章 0 订阅

springcloud + eureka 项目搭建及部署

1.Eureka简介

1.Eureka主要负责微服务架构中的服务治理功能,服务治理是微服务架构中必不可少的一部分。

2.子系统将服务的信息(ip,端口)注册到Eureka,那么子系统间的调用,将不再通过ip,而是通过服务名来调用。

3.Eureka专门用于给其他服务注册的称为Eureka Server(服务注册中心),其余注册到Eureka Server的服务称为Eureka Client 。

4.Eureka Client分为服务提供者和服务消费者。一个服务是服务提供者的同时,也可以是服务消费者。单纯的服务消费者,无需注册到Eureka。

5.Eureka服务治理机制:

​ 1).服务提供者:

​ 服务注册(Register):服务启动时,会发送Rest请求,将自己的服务信息注册到Eureka Server。

​ 服务续约(Renew):注册完服务后会向Eureka Server发送心跳(默认周期30s)。

​ 服务下线(Cancel):服务实例正常关闭时,会发送Rest请求到Eureka Server。

​ 2).服务消费者:
​ 获取服务(GET):服务消费者启动时,会发送Rest请求到Eureka Server,获取注册的服务清单。

​ 服务调用:服务消费者获取服务清单后,可以通过服务名取得服务提供者的数据信息。

​ 3).Eureka Server:

​ 失效剔除:每隔一段时间(默认60s),会将清单中超时(默认90s)没有续约的服务剔除。

​ 自我保护:Eureka Server在运行期间会统计15min内心跳失败的比例是否低于85%(可能由于网络问题导致),若低于,则会将服务实例信息保护起来,让这些实例不会过期。

2.Eureka Server单一节点创建

开发工具:STS

Spring Boot版本:2.3.6.RELEASE

Spring Cloud版本:Hoxton.SR9

1.File—>New—>Maven Project,新建一个Maven Project,packaging选择pom,作为parent
在这里插入图片描述

2.修改parent的pom文件

<packaging>pom</packaging>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.6.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
</properties>

<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>

3.在parent项目上鼠标右键,New—>Other—>Maven—>Maven Module,创建一个Eureka Server,我命名为eureka-server1,并修改其pom文件

<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

4.在eureka-server1项目内新建application.yml文件和主启动类文件

application.yml

spring:
  application:
    name: eureka-server1
  security:
    user:
      name: admin
      password: 123456
      
server:
  port: 8761
  
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false   #false表示不向服务中心注册自己
    fetch-registry: false         #false表示自己就是注册中心,不需要从eureka server获取注册信息
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

主启动类:

package com.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(EurekaServerApplication.class, args);
	}

}

项目结构:
在这里插入图片描述

5.启动eureka-server1,并访问localhost:8761
在这里插入图片描述

3.Eureka Server多节点创建

1.在parent项目上鼠标右键,New—>Other—>Maven—>Maven Module,再创建两个Eureka Server,我命名为eureka-server2和eureka-server3

2.由于之前是单节点,所以我们在application.yml中配置的defaultZone为

http://${eureka.instance.hostname}:${server.port}/eureka/

现在我们做的是多节点配置,hostname不能全为localhost,所以我们需要在本机设置虚拟域名。在本机C:\Windows\System32\drivers\etc路径下找到hosts文件,添加如下:

127.0.0.1 www.localhost1.com
127.0.0.1 www.localhost2.com
127.0.0.1 www.localhost3.com

3.修改eureka-server1的application.yml的hostname及defaultZone

spring:
  application:
    name: eureka-server1
  security:
    user:
      name: admin
      password: 123456
      
server:
  port: 8761
  
eureka:
  instance:
    hostname: eureka-server1
  client:
    register-with-eureka: false   #false表示不向服务中心注册自己
    fetch-registry: false         #false表示自己就是注册中心,不需要从eureka server获取注册信息
    service-url:
    #单个eureka server
    #  defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    #eureka server集群
      defaultZone: http://www.localhost2.com:8762/eureka/,http://www.localhost3.com:8763/eureka/

4.eureka-server2配置如下

pom.xml新增如下:

<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

新建application.yml

spring:
  application:
    name: eureka-server2
  security:
    user:
      name: admin
      password: 123456
      
server:
  port: 8762
  
eureka:
  instance:
    hostname: eureka-server2
  client:
    register-with-eureka: false   #false表示不向服务中心注册自己
    fetch-registry: false         #false表示自己就是注册中心,不需要从eureka server获取注册信息
    service-url:
    #单个eureka server
    #  defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    #eureka server集群
      defaultZone: http://www.localhost1.com:8761/eureka/,http://www.localhost3.com:8763/eureka/

主启动类和eureka-server1相同

5.eureka-server3配置如下

pom.xml新增如下:

<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

新建application.yml

spring:
  application:
    name: eureka-server3
  security:
    user:
      name: admin
      password: 123456
      
server:
  port: 8763
  
eureka:
  instance:
    hostname: eureka-server3
  client:
    register-with-eureka: false   #false表示不向服务中心注册自己
    fetch-registry: false         #false表示自己就是注册中心,不需要从eureka server获取注册信息
    service-url:
    #单个eureka server
    #  defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    #eureka server集群
      defaultZone: http://www.localhost1.com:8761/eureka/,http://www.localhost2.com:8762/eureka/

主启动类与eureka-server1相同

6.启动三个eureka server并访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.Eureka Server项目部署

在部署eureka server集群时,我们需要修改application.yml为对应server的IP地址,其他操作与单节点部署一致。所以我们以单节点示例。

1.修改application.yml配置文件的hostname和defaultZone

2.在项目上鼠标右键,Run AS—>Maven install,在target目录下找到生成的jar包

3.在服务器上的usr目录下新建文件夹eureka-server,并将jar上传到此路径

cd /usr

mkdir eureka-server

在这里插入图片描述

4.切换到eureka-server,并启动

# 关闭防火墙
systemctl stop firewalld.servcie

cd eureka-server

java -jar eureka-server1-0.0.1-SNAPSHOT.jar

5.通过服务器ip+port访问
在这里插入图片描述

5.源码地址:

https://github.com/DamonLiu666/springcloud_test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值