第一篇:服务的注册与发现Eureka(Finchley版本)

一 springcloud简介

  目前的springcloud的版本 Finchley.RELEASE springboot的版本 2.0.3.RELEASE

Finchley版本的官方文档如下:

http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html

spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需要开发中对springboot有一定的了解。另外对于“微服务架构” 不了解的话,可以通过搜索引擎搜索“微服务架构”了解下!

二 创建服务注册中心

在这里,我还是采用Eureka作为服务注册与发现的组件,至于其他的服务发现组件之后会出文章详细介绍。

2.1 首先创建一个maven主工程。

  首先创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。这一系列文章全部采用这种模式,其他文章的pom跟这个pom一样。再次说明一下,以后不再重复引入

2.2 创建eureka-server Module

  

  

  

  继续next 创建eureka-server Module 其依赖如下:

  

<?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.hmzj</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>eureka-server</name>
    <description>EurekaServer project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.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>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <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.security</groupId>
            <artifactId>spring-security-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>
@EnableEurekaServer //开启EurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

 2.3 Eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件appication.yml:

  

server:
  port: 8060
spring:
  application:
    name: eureka-server
eureka:
  server:
    enable-self-preservation: true # 测试时关闭自我保护机制,保证不可用服务及时踢出
  client:
    register-with-eureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://127.0.0.1:8060/eureka/

通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.

2.4 eureka server 是有界面的,启动工程,打开浏览器访问: http://localhost:8060 ,界面如下:

No application available 没有服务被发现 因为没有注册服务。

  到此一个简单的服务端就完成了!

三 给Eureka Server加上安全验证

  1. 引入依赖 
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>

  2.application.yml中添加配置

spring:
  security:
    user:
      name: **
      password: **

修改defaultZone: http://pyq:[email protected]:8060/eureka/  

serviceUrl格式:http://<username>:<password>@ip:port/eureka

  

# 此种方法已经过时
security:
  basic:
    enabled: true
  user:
    name: admin  # 用户名
    password: admin123   # 用户密码

  3.由于Finchey版本默认开启csrf  为了可以使用 http://${userName}:${password}@${host}:${port}/eureka/ 这种方式登录,所以必须是httpBasic,写一个配置类

package com.hmzj.eurekaserver;

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;
import org.springframework.security.config.http.SessionCreationPolicy;

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);
        http.csrf().disable(); //关闭csrf
        //注意:为了可以使用 http://${user}:${password}@${host}:${port}/eureka/ 这种方式登录,所以必须是httpBasic,如果是form方式,不能使用url格式登录
        http.authorizeRequests().anyRequest().authenticated().and().httpBasic(); //开启认证
    }

}

  4.此时再重新启动eureka-server 打开浏览器访问: http://localhost:8060  就需要账号和密码了  

四 高可用的服务注册中心 (双注册节点)

  

新建一个application-peer1.yml和application-peer2.yml

server:
  port: 8060
spring:
  application:
    name: eureka-server
  security:
    user:
      name: **
      password: **
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    register-with-eureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://**:**@127.0.0.1:8061/eureka/ #注意端口

注意:在使用双节点注册时应在注册时将 defaultZone: http://**:**@127.0.0.1:8061/eureka/ 的端口写成另外一个节点的端口

server:
  port: 8061
spring:
  application:
    name: eureka-server
  security:
    user:
      name: **
      password: **
  profiles: peer2
eureka:
  instance:
    hostname: peer2
  client:
    register-with-eureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://**:**@127.0.0.1:8060/eureka/ #注意端口

按照官方文档的指示,需要改变etc/hosts,linux系统通过vi /etc/hosts ,加上:
127.0.0.1 peer1

127.0.0.1 peer2

windows电脑,在c:/windows/systems/drivers/etc/hosts 修改

linux上将eureka-server打包 编译后  运行jar包

nohup java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1 >/dev/null 2>&1 &

nohup java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2 >/dev/null 2>&1 &

完美注册!

原文地址:https://www.cnblogs.com/pangyangqi/p/9389865.html

时间: 2024-11-07 10:31:57

第一篇:服务的注册与发现Eureka(Finchley版本)的相关文章

业余草 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

一.spring cloud简介 鉴于<史上最简单的Spring Cloud教程>很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如下: http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发

SpringCloud分布式微服务云架构 第一篇: 服务的注册与发现Eureka(Finchley版

一.spring cloud简介鉴于<史上最简单的Spring Cloud教程>很受读者欢迎再次我特意升级了一下版本目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如下http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发人员提供了

SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)

在上一篇文章,讲了服务的注册和发现.在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign.在这一篇文章首先讲解下基于ribbon+rest. 一.ribbon简介 Ribbon is a client side load balancer which gives you a lot of control over the behaviour o

Spring Cloud学习(一) 服务的注册与发现(Eureka)

1 创建服务注册中心 在这里,我需要用的组件是Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块. 1.1    创建model工程作为服务注册中心Eureka-server 项目结构 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xml

SpringCloud微服务云架构构建B2B2C电子商务平台之-服务的注册与发现Eureka

创建服务注册中心在这里,我还是采用Eureka作为服务注册与发现的组件,至于Consul 之后会出文章详细介绍. 2.1 首先创建一个maven主工程. 首先创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE.这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom.这一系列文章全部采用这种模式,其他文章的pom跟这个pom一样.再次说明一下,以后

SpringCloud (Finchley版本)教程(一): 服务的注册与发现Eureka

一.spring cloud简介 目前spring cloud的版本更新到了Finchley,支持的springbott2.0以上版本.具体版本可以参照下面的表格. Cloud代号 Boot版本(train) Boot版本(tested) lifecycle Angle 1.2.x incompatible with 1.3 EOL in July 2017 Brixton 1.3.x 1.4.x 2017-07卒 Camden 1.4.x 1.5.x - Dalston 1.5.x not e

业余草 SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)

这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Add sleuth to the classpath of a Spring Boot application (see below for Maven and Gradle examples), and you will see the correlation data being collected in logs, as long as you are logging re

史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

最新Finchley版本请访问:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/或者http://blog.csdn.net/forezp/article/details/81040925 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境简单,可以在开发人员的电脑上跑.另外说明spring cl

springcloud 的学习(一) 服务的注册与发现

水滴石穿 知道springcloud 很久了,但是一直没有时间学习和练习,正好这两天有这个冲动,那就趁热打铁...!!!!! 搜寻了一些资料后发现了一个简单易上手的系列博客 http://blog.csdn.net/forezp/article/details/70148833   借此练手....感谢前辈的知识总结和分享 -------------------------------------------------------------------- 1.创建项目,我这里使用的是IDE,