1. 程式人生 > >spring-cloud與netflixEureka整合(註冊中心)

spring-cloud與netflixEureka整合(註冊中心)

eureka 集群 uil brush enabled cor scons sta show

基礎依賴

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

spring-cloud與netflixEureka整合(註冊中心)