Spring-cloudマイクロサービスアーキテクチャ構築01-Eurekaサービス構築および高可用性構成

3932 ワード

1.Eurekaの概要
どの分散アーキテクチャでも、サービスの物理マシンアドレスを探す必要があります.サービス発見と呼ばれ、Eurekaはこのような問題を解決するコンポーネントです.Zookeeperのようなサービス登録センターコンポーネントですが、Eurekaはサービスの高可用性を保証しています.それ自体のクラスタメカニズムとサービス保護メカニズムはその核心メカニズムであり、私たちはそれに提供する便利さを提供して、サービスシステムのために完全に構築することができます.以下、Eurekaサービス側とクライアントの簡単な構築を行います.
2.Eurekaサービスの特徴
2.1. 高可用性
クラスタ環境のホット配置をサポートし、複数のノードにわたってサービスインスタンスを共有することができ、1つのノードが利用可能であればサービスの可用性を維持することができる.
2.2. ポイント対ポイント
クラスタ内の各サービスノードは、サービスインスタンスの状態を共有する.
2.3. ふかへいこう
サービスはリクエストに対して負荷分散処理を行うことができ、一般的に健康インスタンスをポーリングする方式を採用したり、サービス発見方式をカスタマイズしたりすることができる.
2.4. クライアントの柔軟性
登録センターに登録されているすべてのクライアントは、サービスが使用できない場合にサービスの使用可能なローを負担し続けるサービスリストをローカルでキャッシュする必要があります.
2.5. フォールトトレランス
Eureka登録センターは心拍数検出メカニズムを採用してサービスの利用可能な行を確保し、利用できないサービスインスタンスをタイムリーに整理する.
3.Eureka-Serverサービス側構築
注意:本プロジェクトはideaツールを採用して構築する
  • idea自身のspring initializrを用いてプロジェクトの初期化
  • を行う
  • 初期化完了項目後pomファイルインポート
  • 
        org.springframework.boot
        spring-boot-starter-actuator
    
    
        org.springframework.cloud
        spring-cloud-starter-netflix-eureka-server
    
    
  • アプリケーションを修正する.ymlファイル、
  • の構成を追加
    server:
      #    Eureka     
      port: 8761
    
    eureka:
      instance:
        #    Eureka      
        hostname: localhost
        preferIpAddress: true
      server:
        #             
    #    enableSelfPreservation: false
        #           ,    (    ,   60*1000)
        eviction-interval-timer-in-ms: 10000
      client:
        registerWithEureka: false
        fetchRegistry: false
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    
  • 最後にEurekaサービスに@EnableEurekaServer注記を追加すると起動できます.

  • Eurekaは高可用性のサービスメカニズムを提供するため、複数のEurekaサービスインスタンスを起動し、クライアントセグメントがプロファイル内のdefaultZoneパラメータを変更すればよい.Eurekaサービス登録は、サービスポーリングによって行われます.一般的には、複数のインスタンスを起動します.client側は、1つのサービスインスタンスに登録に成功すれば、追加のサービスインスタンスに登録する必要はありません.また、Eureka自身のサービスリスト抽出メカニズムがあれば、より新しいサービスリストを同期させます.Eureka ClientがEureka Serverに登録されている秘密を深く理解することができます.
    4.Eureka-Client側によるサービス登録
  • ここでは、EurekaのClient端子としてconfig構成センターを使用します.
  • まずmavenプロジェクトを構築し、初期化が完了した後にpom導入を行い、
  • 
    
        org.springframework.boot
        spring-boot-starter-security
    
    
    
        org.springframework.cloud
        spring-cloud-starter-netflix-eureka-client
    
  • プロファイルを変更します.Eurekaクライアントの構成はBootstrapでなければなりません.ymlファイルでは、プロファイルの読み取り順序に関する問題があります.Bootstrap.yml構成は、
  • #        
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8761/eureka/  #,http://xxxxx:8761/eureka/
          #                         30 
          #               ,         
          registry-fetch-interval-seconds: 20
      instance:
        #     ip  
        prefer-ip-address: true
        #            30 
        lease-renewal-interval-in-seconds: 60
        #                         ,              90 
        lease-expiration-duration-in-seconds: 100
    #    instance-id: config-server
    
  • 構成が完了したら、Client起動クラスに@EnableDiscoveryClient注記を付ける必要があります.
  • 構成が完了すると、Eureka-ServerインスタンスとEureka-Clientインスタンスがそれぞれ起動し(ここではconfig-serverの代わりに)、http://localhost:8761クライアントインスタンスがserverに登録されていることがわかります.

  • 注意:prefer-ip-address:trueは、一般的に生産環境でtrueに設定する必要があります.理由は次のとおりです.
    なぜIPアドレスに偏っているのかデフォルトでは、Eurekaはサービスを登録しようとすると、ホスト名を使用して外部に連絡を取らせます.この方法はサーバベースの環境でよく動作し、このような環境ではDNSサポートのホスト名がサービスに割り当てられる.ただし、Dockerなどのコンテナベースの配置では、コンテナはランダムに生成されたホスト名で起動し、DNSレコードはありません.eureka.instance.preferipAddressの設定量がtrueの場合、クライアント・アプリケーションはDNSレコードが存在しないため、ホスト名の場所を正しく解析できません.preferipAddressプロパティを設定するとEurekaサービスに通知され、クライアントはIPアドレスで通知したいと考えています.
    本文githubコードアドレスspring-cloud基礎モジュール構築--ご指摘を歓迎します
    参考ブログアドレス:Eureka ClientがEureka Serverに登録した秘密