详解spring-cloud与netflixEureka整合(注册中心)
基础依赖
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.hostsnameeureka1、eureka2、eureka3 都再本机的hosts文件里事先写好,
例如eureka1服务器上的hosts文件
127.0.0.1 localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
::1 localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
127.0.0.1 eureka1
xxx.xxx.x.xxeureka2
xx.xxx.xxx.xxeureka3
启动类同样是添加@EnableEurekaServer注意:如果运行jar包时需要程序接收命令行参数,一定要再main方法的SpringApplication.run()方法中传入args参数
例如:
publicstaticvoidmain(String[]args){
SpringApplication.run(QnbbsConsumer.class,args);
}
如果不传入的话在命令行输入java-jarxxx.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方法
packagecom.iteng.eureka.security;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.security.config.annotation.web.builders.HttpSecurity;
importorg.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
importorg.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity
@Configuration
publicclassWebSecurityConfigextendsWebSecurityConfigurerAdapter{
@Override
protectedvoidconfigure(HttpSecurityhttp)throwsException{
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。