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