当前位置: 移动技术网 > IT编程>开发语言>Java > 详解spring-cloud与netflixEureka整合(注册中心)

详解spring-cloud与netflixEureka整合(注册中心)

2019年07月19日  | 移动技术网IT编程  | 我要评论

基础依赖

compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.cloud:spring-cloud-starter') 

eureka(单机)

服务端:

依赖

compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server') 

application.yml 配置

spring:
 application:
  name: dev
eureka:
 client:
  service-url:
   defaultzone: http://本机ip地址:8761/eureka/ #注册中心地址
  register-with-eureka: false #表明该实例是否应该与尤里卡服务器登记其信息被别人发现。在某些情况下,您不希望您的实例被发现而你想发现其他实例。默认为true
  fetch-registry: false #表明这个客户是否应该从尤里卡服务器获取尤里卡注册表信息。默认为true
server:
 port: 8761

启动类添加 @enableeurekaserver

客户端:

主要依赖

compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client') 

application.yml 配置

eureka:
 client:
  service-url:
   defaultzone: http://eureka服务地址:8761/eureka/ 

启动类添加 @enablediscoveryclient (注册中心通用客户端注解)或 @enableeurekaclient (只有eureka客户端可用)

eureka(集群)

服务端

主要依赖

compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client') 

application.yml 配置

server:
 port: 8761
eureka:
 client:
  register-with-eureka: false
  fetch-registry: false
 server:
  enable-self-preservation: false #使用自我保护,默认true
  peer-node-read-timeout-ms: 5000 #节点读取超时时间,默认200毫秒
---
spring:
 application:
  name: eureka1
 profiles: eureka1
eureka:
 client:
  service-url:
   defaultzone: http://eureka2:8761/eureka/,http://eureka3:8761/eureka/
 instance:
  hostname: eureka1
---
spring:
 application:
  name: eureka2
 profiles: eureka2
eureka:
 client:
  service-url:
   defaultzone: http://eureka1:8761/eureka/,http://eureka3:8761/eureka/
 instance:
  hostname: eureka2
---
spring:
 application:
  name: eureka3
 profiles: eureka3
eureka:
 client:
  service-url:
   defaultzone: http://eureka1:8761/eureka/,http://eureka2:8761/eureka/
 instance:
  hostname: eureka3

eureka.client.service-url.defaultzone 与 eureka.instance.hostsname eureka1、eureka2、eureka3  都再本机的 hosts 文件里事先写好,

例如 eureka1 服务器上的hosts文件
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   eureka1
xxx.xxx.x.xx eureka2
xx.xxx.xxx.xx eureka3

启动类同样是添加 @enableeurekaserver 注意:如果运行 jar 包时需要程序接收命令行参数,一定要再main方法的 springapplication.run() 方法 中传入 args 参数

例如:

public static void main(string[] args) {
   springapplication.run(qnbbsconsumer.class,args);
}

如果不传入的话在命令行输入 java -jar xxx.jar --参数名=参数值 参数将不起作用从而影响你无法选择写好的环境配置

客户端:

依赖跟单机的一样

application.yml 配置

eureka:
 instance:
  prefer-ip-address: true #是否显示ip
  ip-address: 本机ip #填写本机ip地址
 client:
  service-url:
   defaultzone: http://eureka1:8761/eureka/,http://eureka2:8761/eureka/,http://eureka3:8761/eureka/

启动类注解与单机版一样

客户端注册一台注册中心,同时注册到其他集群中说明成功!

eureka添加 spring-security 权限认证

依赖

compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
compile('org.springframework.boot:spring-boot-starter-security')
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server') 

application.yml 配置

server:
 port: 8761
spring:
 application:
  name: eureka-server
 security:
  user:
   name: zyn
   password: zyn123... 
  #用户名与密码若是不配置,系统会自动生成并打印在控制台日志上
  
eureka:
 client:
  register-with-eureka: false
  fetch-registry: false
 server:
  enable-self-preservation: false
  peer-node-read-timeout-ms: 5000
  
management:
 endpoints:
  web:
   base-path: /
   exposure:
    include: '*'
 endpoint:
  health:
   show-details: always
  restart:
   enabled: true
 server:
  port: 8761
---
spring:
 profiles: eureka-jy
eureka:
 client:
  service-url:
   defaultzone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-b:8761/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-c:8761/eureka/
 instance:
  hostname: eureka-a
---
spring:
 profiles: eureka-lhn
eureka:
 client:
  service-url:
   defaultzone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-a:8761/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-c:8761/eureka/ 
 instance:
  hostname: eureka-b
---
spring:
 profiles: eureka-zsm
eureka:
 client:
  service-url:
   defaultzone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-a:8761/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-b:8761/eureka/
 instance:
  hostname: eureka-c

创建一个类并继承 websecurityconfigureradapter 类,并在此类上添加 @enablewebsecurity和@configuration 注解,重写 configure 方法

package com.iteng.eureka.security;​
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;
​
@enablewebsecurity
@configuration
public class websecurityconfig extends websecurityconfigureradapter {
​
  @override
  protected void configure(httpsecurity http) throws exception {
    http.csrf().disable(); // 关闭csrf
    http.authorizerequests().anyrequest().authenticated().and().httpbasic(); // 开启认证
  }
}

启动类添加注解

@enableeurekaserver
@enablewebsecurity

下线服务

http://eureka地址:端口/eureka/apps/服务名/服务地址:服务端口号

实例如下:

erueka注册中心ip: 10.100.1.100

端口: 12000

服务名: cps-risk-server

实例id: 192.168.10.54:18883

则向下面的url通过http发送delete命令,可将指定的服务实例删除:
http://10.100.1.100:12000/eureka/apps/cps-risk-server/192.168.10.54:18883

变更服务状态

http://eureka地址:端口/eureka/apps/服务名/服务地址/status?value=${value}

其中${value}的取值为:out_of_service , down , up

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网