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‘)
服務端:
依賴
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:View Code8761
啟動類添加 @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(集群)
服務端
主要依賴
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: eureka3View Code
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 參數
例如:
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-CView 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
spring-cloud與netflixEureka整合(註冊中心)