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

2019-02-17 01:49:51来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

基础依赖

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

 

启动类添加 @EnableEurekaServer

客户端:
主要依赖
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
application.yml 配置
eureka:
  client:
    service-url:
      defaultZone: http://eureka服务地址:8761/eureka/ 
View Code

 

启动类添加 @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
View Code

 

eureka.client.service-url.defaultZone 与 eureka.instance.hostsname eureka1eureka2eureka3 都再本机的 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 参数

例如:

1    public static void main(String[] args) {
2         SpringApplication.run(QnbbsConsumer.class,args);
3     }

 

如果不传入的话在命令行输入 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 配置

 1 server:
 2   port: 8761
 3 spring:
 4   application:
 5     name: eureka-server
 6   security:
 7     user:
 8       name: zyn
 9       password: zyn123... 
10    #用户名与密码若是不配置,系统会自动生成并打印在控制台日志上
11    
12 eureka:
13   client:
14     register-with-eureka: false
15     fetch-registry: false
16   server:
17     enable-self-preservation: false
18     peer-node-read-timeout-ms: 5000
19     
20 management:
21   endpoints:
22     web:
23       base-path: /
24       exposure:
25         include: '*'
26   endpoint:
27     health:
28       show-details: always
29     restart:
30       enabled: true
31   server:
32     port: 8761
33 ---
34 spring:
35   profiles: eureka-jy
36 eureka:
37   client:
38     service-url:
39       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/
40   instance:
41     hostname: eureka-A
42 ---
43 spring:
44   profiles: eureka-lhn
45 eureka:
46   client:
47     service-url:
48       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/  
49   instance:
50     hostname: eureka-B
51 ---
52 spring:
53   profiles: eureka-zsm
54 eureka:
55   client:
56     service-url:
57       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/
58   instance:
59     hostname: eureka-C
View Code

 

创建一个类并继承 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


原文链接:https://www.cnblogs.com/bqzz/p/10294326.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:基本类型包装类缓存说明

下一篇:一篇文章搞定SpringMVC参数绑定