SpringCloud(Hoxton.SR3)の基本:第3章、Eurekaクラスターの高可用性認証サービスの実装と構築

1. Eurekaサーバー(サービス登録センター)の高可用性

1.1 MAVEN関連の依存関係

    < > 
        < groupIdを> org.springframework.boot </ groupIdを> 
        < たartifactId >春・ブート・スターター・親</ たartifactId > 
        < バージョン> 2.2.6.RELEASE </ バージョン> 
        < relativePath />  <! - 検索リポジトリからの親-> 
    </ > 

    < プロパティ> 
        < project.build.sourceEncoding > UTF-8 </ project.build.sourceEncoding >
        <project.reporting.outputEncoding > UTF-8 </ project.reporting.outputEncoding > 
        <! - JDKのバージョン- > 
        < のjava.version > 1.8 </ のjava.version > 
        <! - SpringCloudのバージョン番号、最新の公式の安定版-> 
        < spring-cloud.version > Hoxton.SR3 </ spring-cloud.version > 
    </ properties > 

    <!- spring-cloud- > < dependencyManagement > < dependencies > < の依存関係を管理するために使用される依存関係管理依存関係><
    
        
            
                groupId > org.springframework.cloud </ のgroupId > 
                < たartifactId >ばねクラウド依存性</ たartifactId > 
                < バージョン> $ {ばねcloud.version} </ バージョン> 
                < タイプ> POM </ タイプ> 
                < スコープ>インポート</ スコープ> 
            </ 依存関係> 
        </ 依存関係> 
    </ 依存関係管理> 

    < 依存関係>
        <!-ユーレカ服务端依赖瓶包- > 
        < 依存> 
            < groupIdを> org.springframework.cloud </ groupIdを> 
            < たartifactId >春・クラウド・スターター・ネットフリックス-ユーレカ・サーバー</ たartifactId > 
        </ 依存関係> 
        <! - ユーレカ安全组件瓶包- > 
        < 依存> 
            < groupIdを> org.springframework.boot </ groupIdを> 
            < たartifactId >春・ブート・スターター・セキュリティ</ たartifactId >
        </依存関係> 
    </ 依存関係>

1.2 Application.yml関連の設定

eurekaサービス1つの構成

サーバー:
   ポート:8761#セキュリティ
認証構成Spring 
   アプリケーション:
      名前:EUREKA-HA 
   セキュリティ:
      基本:
         有効:true 
      ユーザー:
         名前:ユーザー
         パスワード:password123 
eureka:
   #Eurekaインスタンス名、クラスターは他の
   インスタンスをそれぞれ認識します:
      ホスト名: peer1 
   client:
      serviceUrl:
         #Registration Center 
         address defaultZone:http:// user:password123 @ peer2:8762 / eureka /、http:// user:password123 @ peer3:8763 / eureka /

 

エウレカサービス2構成

サーバー:
   ポート:8762#セキュリティ
認証構成
スプリング:
   アプリケーション:
      名前:EUREKA-HA 
   セキュリティ:
      基本:
         有効:true 
      ユーザー:
         名前:ユーザー
         パスワード:password123 
eureka:
   #Eurekaインスタンス名、クラスターは他の
   インスタンスをそれぞれ認識します:
      ホスト名: peer2 
   client:
      serviceUrl:
         defaultZone:http:// user:password123 @ peer1:8761 / eureka /、http:// user:password123 @ peer3:8763 / eureka /

 

エウレカサービス3構成

サーバー:
   ポート:8763#セキュリティ
認証構成Spring 
   アプリケーション:
      名前:EUREKA-HA 
   セキュリティ:
      基本:
         有効:true 
      ユーザー:
         名前:ユーザー
         パスワード:password123 
eureka:
   #相互認証
   インスタンスに基づくEurekaインスタンス名
      ホスト名: peer3 
   client:
      serviceUrl:
         defaultZone:http:// user:password123 @ peer1:8761 / eureka /、http:// user:password123 @ peer2:8762 / eureka /

 

1.2.2ホストファイルを設定して、peer1、peer2、およびpeer3のアドレスを識別します

 

 

  Windowsシステムホストファイルパス:C:\ Windows \ System32 \ drivers \ etc

 

 

 

  変更手順:管理者としてCMDを実行し、メモ帳を入力してメモ帳を開きます。メモ帳を使用してホストファイルにコンテンツを追加する

  ホストファイルにpeer1、peer2、peer3コンテンツを追加します

#localhostの名前解決はDNS自体で処理されます。
#127.0.0.1 localhost 
#:: 1 localhost 
127.0.0.1 peer1 
127.0.0.1 peer2 
127.0.0.1 peer3

 

 

1.3起動コード

 

import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 

@SpringBootApplication 
// この注釈は、アプリケーションがeurekaサービスであり、組み合わせることができることを示しますクラスタ、外部サービスプロバイダの登録および発見などのサービスの複数
@EnableEurekaServer
 パブリック クラスEurekaHaApplication {
     公共 静的 ボイドメイン(文字列[]引数){ 
        SpringApplication.run(EurekaHaApplication。クラス、引数); 
    } 
}

 

 

1.4現在、Eurekaに登録されているインスタンスの下で注入されていない、ページ上の他のサービスを解決します

Spring SecurityのCSRF保護を無効にし、csrfを無効にする構成クラスを追加します

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 ; 

/ ** 
 * eurekaサービスはレジストリに接続できません
 * spring Cloud 2.0上記のセキュリティではデフォルトでcsrf検証が有効になっています。セキュリティcsrf検証はeurekaServer側でfalseにする必要があります
 * @author computer 
 * 
 * / 
@EnableWebSecurity 
public  class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected  void configure(HttpSecurity http)例外を
        スローします{ 
        http.csrf()。disable(); super .configure(http); 
    } 
    
}

 

1.5エウレカページでのレプリカの使用不可(使用できないシャード)の問題

原因1:preference-ip-address構成アイテムが正しく設定されていない
たとえば、8761サーバーでprefer-ip-address:trueが設定されている場合、8772サーバーと8733サーバーに登録するときにdefaultZone:http:// yourIP:8761 / eureka /を使用する必要がありますが、現時点ではホスト名がまだ使用されていることがわかります。エラーが発生します。
別の理由は、preferential-ip-address:trueが3つの8671、8762、および8763に設定されているため、最後に解決されるホスト名が同じIPになり、コピーが使用できなくなることです。
 
原因2:register-with-eureka構成アイテムが正しく設定されていない
インターネット上の多くのブログや素材でこの項目がfalseに設定されていますが、現時点では他のサーバーにユーレカが登録されていないため、エラーが発生しています。
 
理由3:その他の理由
ここで参照できる理由は他にもいくつかあります。 ユーレカは高可用性であり、ノードは利用不可レプリカの下に表示されます

 

 

 

最後に、3つのeurekaサービスが正常に開始され、結果は図のようになります

 

 

 

参照:https://blog.csdn.net/longguo321/article/details/80493618

     https://blog.csdn.net/liupeifeng3514/java/article/details/85273961

 

おすすめ

転載: www.cnblogs.com/wps54213/p/12716846.html