2017-03-02 15 views
1

私は、spring-cloud-netflix eurekaサーバーをawsに展開するための適切な方法についてガイダンスを探しているインターネットを精査しています。私たちは、スプリングクラウドとnodejの両方を使ったマイクロサービスにドッカーをかなり使用していました。そのため、私はスプリングブートのスプリングクラウドユーレカアプリをECSに導入しようとしていました。春のクラウドのドキュメントには非常に限られた情報しかありませんが、ここではかなり有用な情報が見つかりました:https://www.slideshare.net/ToddMiller34/spring-cloud-into-production。これに基づき、私は現在、次のようにありますspring-cloud-netflix eureka aws deployment

@Bean 
@Autowired 
@Profile("aws") 
public EurekaInstanceConfigBean eurekaInstanceConfigBean(InetUtils inetUtils) { 
    EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inetUtils); 
    AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka"); 
    config.setHostname(info.get(AmazonInfo.MetaDataKey.publicHostname)); 
    config.setIpAddress(info.get(AmazonInfo.MetaDataKey.publicIpv4)); 
    config.setDataCenterInfo(info); 
    return config;  
} 

関連部分を持つ標準のスプリング・クラウド・スターター・ユーレカ・サーバー(春・クラウドCamden.SR5、春ブート1.5.1)クラウドコンフィグレポからの設定:脇

eureka: 
    instance: 
    non-secure-port: ${server.port} 
    environment: test 
    client: 
    eurekaServerDNSName: test.mydomain.com 
    datacenter: cloud 
    client: 
    region: us-west-2 
    registerWithEureka: true 
    fetchRegistry: true 
    eurekaServerURLContext: eureka 
    eurekaServerPort: 8761 
    useDnsForFetchingServiceUrls: true 

:私はeureka.client.regionが必要だったことに驚きましたが、それなしでDNSサービスURLのフェッチtxt.us-東-1をする...デフォルトで行きました。

route53のTXTレコードは、プライベートホストされたゾーンで:

txt.us-west-2.test.mydomain.com = "us-west-2a.test.mydomain.com" "us-west-2b.test.mydomain.com" 
txt.us-west-2a.test.mydomain.com = "ec2-123-456-789-123.us-west-2.compute.amazonaws.com" 
txt.us-west-2b.test.mydomain.com = "ec2-987-654-321-123.us-west-2.compute.amazonaws.com" 

私はいくつかのeureka.server.bindingStrategyが「route53」に設定されていたが、これは動作しませんが(私に見つけることができないというエラーになりますRoute53Binder行135からのローカルホストのフリードメイン)。

私はec2コンテナインスタンスからec2 - ###ホスト名を取得しましたが、動作しているようですが、コンテナインスタンスが再起動されるたびにこれらのホスト名が変更される可能性が非常に高いです。私はroute53バインディングについて読んだことがありますが、DNSからサービスURLを取得することと互換性がないようで、netflix自身でもうまくサポートされていないようです(netflixエンジニアによるバグコメントを読んでいますコミュニティから寄付されたコード、そしてnetflixでそれを使用していないことなど)。私はEIPバインディングについても読んだことがありますが、ECSでどのように使用するかはわかりません。私はeurekaサーバーを持っているのと同じくらい多くのEIPを作成し、route53のtxtレコードに入れて、ユーレカが自動的に関連付けますか?これはすべてドキュメントに欠けているようです。

答えて

3

他の誰かがこの問題に遭遇した場合に私自身の質問に答えると便利です。

私はユーレカ・サーバを持っているとして、私はちょうどroute53のTXTレコードユーレカ のものを入れて、できるだけ多くのEIPを作成しますが、自動的に関連付けますか?

はい、これはまさに私がやったことです。私は2つのEIPを作成しました。私の環境では、2つのAZのそれぞれに1つのeurekaインスタンスしかないからです。 EIPは単なるIPアドレスです。私は、このように私のroute53のTXTレコードのもの、置く:この場合、

txt.us-west-2.test.mydomain.com = "us-west-2a.test.mydomain.com" "us-west-2b.test.mydomain.com" 
txt.us-west-2a.test.mydomain.com = "ec2-123-456-789-123.us-west-2.compute.amazonaws.com" 
txt.us-west-2b.test.mydomain.com = "ec2-987-654-321-123.us-west-2.compute.amazonaws.com" 

、EC2を - ### - ### - ### - ###のエントリは、ホスト名、IPアドレスに基づいていますEIPからたとえば、EIPアドレスが123.456.789.123でus-west-2の場合、ec2-123-456-789-123.us-west-2.compute.amazonaws.comを使用します。

ユーレカのECSが起動し、私のeurekaクライアントの設定がdnsからフェッチするように設定されているため、EIPアドレスを見つけて適切なゾーンに自動的にバインドします。マイクロサービスアプリケーションのユーレカクライアントは同じユーレカクライアント設定を必要とするので、同じユーレカサーバホスト名を見つけることができます。

+1

あなたは全体的なデザインに関するさらに詳しい情報を提供できますか?私は最初のSpring CloudアプリケーションをECSで動かすのに少し問題があります。git repoの例はとても役に立ちます... –