详解spring cloud Eureka集群并在idea启动

1.创建服务注册中心Eureka-Server
new->project
详解spring cloud Eureka集群并在idea启动_第1张图片

next->填写信息
详解spring cloud Eureka集群并在idea启动_第2张图片
next->选择导入的依赖(不选手动导入也可以)
详解spring cloud Eureka集群并在idea启动_第3张图片
next->finish

项目目录:
详解spring cloud Eureka集群并在idea启动_第4张图片

生成的pom文件:



    4.0.0

    
     
        org.springframework.boot
        spring-boot-starter-parent
        2.1.7.RELEASE
         
    
    
    com.wxz
    springcloud-demo2
    0.0.1-SNAPSHOT
    springcloud-demo2
    Demo project for Spring Boot

    
    
        1.8
        Greenwich.SR2
    

    
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        

        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
    
        
            
            
                org.springframework.boot
                
                spring-boot-maven-plugin
            
        
    



在启动类开启EurekaServer功能:

package com.wxz.springclouddemo2;

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

/**
 * 服务启动类,应该和其他的类的上一级包处于同级目录
 */
@SpringBootApplication
@EnableEurekaServer  //开启EurekaServer功能
public class SpringcloudDemo2Application {

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

}

配置(创建的是.yml文件):

server:
  port: 8761  #服务端口
eureka:
  instance:
    hostname: localhost #ip
  client:
    register-with-eureka: false  #是否将自己注册到Eureka服务器
    fetch-registry: false  #
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #eureka 完整配置地址

启动启动类的main方法,访问http://localhost/8761
详解spring cloud Eureka集群并在idea启动_第5张图片

Instances currently registered with Eureka:下面可以看出目前还没有服务注册到上面

建议上面一开始建一个父的maven工程,里面引入 和spring boot的两个起步依赖,注册中心单独创建一个模块实现,这样的话项目结构会更清晰,功能效果一样啦

2.编写Eureka Client
在服务Eureka Server下创建Moudule 的spring boot项目
pom文件中引入父项目的pom.和Eureka-client所需要的依赖和web功能起步依赖
单元测试的依赖从父项目pom中引入了



    4.0.0

    
    
        com.wxz
        springcloud-demo2
        0.0.1-SNAPSHOT
         
    
    wxz
    eureka-client
    0.0.1-SNAPSHOT
    eureka-client
    Demo project for Spring Boot

    
        1.8
        Greenwich.SR2
    

    

        
        
            org.springframework.cloud
            spring-cloud-starter-eureka
        

        
        
            org.springframework.boot
            spring-boot-starter-web
        


    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



目录:
详解spring cloud Eureka集群并在idea启动_第6张图片
在该工程创建bootstrap.yml进行配置
详解spring cloud Eureka集群并在idea启动_第7张图片
在启动类加上@EnableEurekaClient功能注解
先启动服务注册中心的项目(父项目),再启动该消费者项目(Eureka-client)
访问http://localhost:8761

详解spring cloud Eureka集群并在idea启动_第8张图片
可见客户端项目已经注册上去了。

再消费者项目创建controller包,里面创建类Hcontroller

package wxz.eurekaclient.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Wangxingze
 * @date 2019-08-21 14:37
 */
@RestController
public class HController {

    @Value("${server.port}")
    private String port;

    @GetMapping(value = "/sayHello")
    public String sayHello(@RequestParam("name") String name){
        return "hello1"+name+port;
    }
}

启动,访问子项目地址

详解spring cloud Eureka集群并在idea启动_第9张图片

3.创建Eureka-server集群

修改上面server(以后用于指代上面的父项目,服务注册中心Eureka-server)的yml文件。采用多profiles文件

---   #多profiles分割符,文件1
spring:
  profiles: peer2
server:
  port: 8761  #自己的服务端口
eureka:
  instance:
    hostname: peer1 #ip
  client:
    #register-with-eureka: false  #是否将自己注册到Eureka服务器
    #fetch-registry: false  #
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/ #eureka 完整配置地址
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #eureka 完整配置地址

---   #多profiles分割符,文件2
spring:
  profiles: peer2
server:
  port: 8762  #自己的服务端口
eureka:
  instance:
    hostname: peer2 #ip
  client:
    #register-with-eureka: false  #是否将自己注册到Eureka服务器
    #fetch-registry: false  #
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/ #eureka 完整配置地址
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #eureka 完整配置地址

修改本地的hosts文件:C:system32//drivers//etc/hosts
添加:

127.0.0.1  peer1
127.0.0.1  peer2 

接着分别启动两个server,启动第一个的时候会报错,因为是集群,需要把自己注册到其他节点,而此时其他节点还没启动,所以会报错,其实项目是没有问题的,等待第二个启动就没有问题了
启动方法
1.可以通过编译成jar文件运行,但是我失败了。。。
我直接用idea启动:
详解spring cloud Eureka集群并在idea启动_第10张图片
选择+
详解spring cloud Eureka集群并在idea启动_第11张图片
选择spring boot到
详解spring cloud Eureka集群并在idea启动_第12张图片
修改unnamed名称,比如我的peer1,我这里已经设置好了,注意参数
–spring.profiles.active=peer1这个参数应该和配置文件对应
详解spring cloud Eureka集群并在idea启动_第13张图片
apply->ok

这样配置两次,注意–spring.profiles.active参数不一样哦
详解spring cloud Eureka集群并在idea启动_第14张图片
在这里就可以分别启动每个节点了。

启动Eureka-client,访问http:peer1:8761
详解spring cloud Eureka集群并在idea启动_第15张图片
可见上面出现了peer2和Eureka-client服务

这样集群就启动好了。

你可能感兴趣的:(spring,cloud)