0

こんにちは、Spring gemfire 8.1 を使用して、同じホストで複数の gemfire キャッシュ サーバーを起動したいと考えています。以下の gemfire 構成ファイルを見つけてください。Spring Gemfire 構成を使用して、同じホスト ieHOSTNAME で GFServer1 と GFServer2 を起動したいと考えています。gfsh コマンドを避け、Eclipse からすべてを開始し、クライアントを同じホスト上のこれらのサーバーに接続したいと考えています。前もって感謝します

    <util:properties id="gemfireProperties">
        <prop key="name">Locator_Dev</prop>
        <prop key="mcast-port">0</prop>
        <prop key="locators">HOSTNAME[1099]</prop>
        <prop key="log-level">warning</prop>
        <prop key="http-service-port">8181</prop>
        <prop key="jmx-manager">true</prop>
        <prop key="jmx-manager-port">1199</prop>
        <prop key="jmx-manager-start">true</prop>
        <prop key="start-locator">HOSTNAME[1099]</prop>
    </util:properties>

    <gfe:cache properties-ref="gemfireProperties" />


    <gfe:cache-server id="GFServer1" auto-startup="true"
        bind-address="HOSTNAME" port="40411" host-name-for-clients="HOSTNAME"
        load-poll-interval="2000" max-connections="22" max-threads="16"
        max-message-count="1000" max-time-between-pings="30000" >

        <gfe:subscription-config eviction-type="ENTRY"
            capacity="1000" disk-store="diskStore1" />
    </gfe:cache-server>


    <gfe:cache-server id="GFServer2" auto-startup="true"
        bind-address="HOSTNAME" port="40412" host-name-for-clients="HOSTNAME"
        load-poll-interval="2000" max-connections="22" max-threads="16"
        max-message-count="1000" max-time-between-pings="30000" >

        <gfe:subscription-config eviction-type="ENTRY"
            capacity="1000" disk-store="diskStore1" />
    </gfe:cache-server>


   <gfe:disk-store id="diskStore1" queue-size="50"
        auto-compact="true" max-oplog-size="10" time-interval="9999">
        <gfe:disk-dir
            location="D:\NP\WorkSpace\GemfireRegionSolutionNStart\disk-store\store_1"
            max-size="20" />
        <gfe:disk-dir
            location="D:\NP\WorkSpace\GemfireRegionSolutionNStart\disk-store\store_2"
            max-size="20" />
    </gfe:disk-store>


    <gfe:replicated-region id="customer" name="Customer">
    </gfe:replicated-region>

    <gfe:replicated-region id="bookMaster" name="BookMaster">
    </gfe:replicated-region>

</beans> 
4

4 に答える 4

1

具体的な質問はありますか?@Swapnilが指摘しているように、同じJVM内の同じホストで適切に構成されているため、これにより2つのGemFire「キャッシュサーバー」(キャッシュクライアントをリッスンするServerSockets)が開始されます。これは、実行方法 (IDE、コマンドライン、Gfsh または Spring Boot など) に関係なく機能します。

より具体的な質問がある場合はお知らせください。ありがとうございます。

于 2015-09-28T16:43:18.927 に答える
1

したがって、たとえば次のようにLocatorLauncherFactoryBeanを構成できます...

<uti:properties id="gemfireProperties">
  <prop key="log-level">config</prop>
  <prop key="http-service-port">8181</prop>
  <prop key="jmx-manager">true</prop>
  <prop key="jmx-manager-port">1199</prop>
  <prop key="jmx-manager-start">true</prop>
  <prop key="locators">host1[10334],host2[11235],...,hostN[20668]</prop>
</util:properties>

<bean id="locator" class="org.spring.data.gemfire.config.LocatorLauncherFactoryBean">
  <property name="gemfireProperties" ref="gemfireProperties"/>
  <property name="memberName" value="SpringDataGemFireLocator"/>
  <property name="bindAddress" value="10.124.12.24"/>
  <property name="port" value="12480"/>
</bean>

お気づきかもしれませんが、このロケータは、" " GemFire システム プロパティgemfirePropertiesを持つ " " Bean で指定された、GemFire クラスタ内の他のロケータに参加できます。locators

注:bindAddressへの " " プロパティはLocatorLauncherFactoryBean、このロケーターが実行されるローカルホストに複数の NIC があり、特定の NIC にバインドする場合にのみ必要です。

また、JMX Manager GemFire システム プロパティを設定して、Locator が Manager になり、実際に (ポート 1199 で) 起動できるようにしました。gfsh>connect --locator=localhost[12480]これにより、または を使用して、Gfsh からこのロケータに接続できますgfsh>connect --jmx-manager=localhost[1199]

基本的に、" " Bean を使用すると、有効な GemFire システム プロパティgemfirePropertiesを構成できます。

この Locator は IDE 内から実行されるため、この Locator から Pulse を実行するには、 Pivo​​tal の Web サイトからダウンロードした GemFire ディストリビューション$GEMFIREを指す環境変数を使用して「実行プロファイル」を構成する必要があります。これは、GemFire Manager の ManagementAgentが、1. GemFire の既成の Web アプリケーション (Pulse など) を実行する組み込み HTTP サービス (Jetty) を開始するかどうか、および 2. Pulse を見つけて Web アプリケーションを開始できるかどうかを決定するときに予想されます。ManagementAgentはディストリビューションで Pulseを探します。

たとえば、$GEMFIRE 環境変数を次のように設定しました。

/Users/jblum/Downloads/Pivotal/GemStone/製品/GemFire/Pivotal_GemFire_820_b17919_Linux

ここで、個々の Spring 構成の GemFire サーバーをクラスターに接続するのは簡単です。

gemfireProperties繰り返しになりますが、「ロケーター」GemFire システム プロパティが定義された各 Spring GemFire サーバー XML 構成ファイルで定義された「」Bean のみが必要です。

<uti:properties id="gemfireProperties">
  <prop key="log-level">config</prop>
  <prop key="locators">localhost[12480]</prop>
</util:properties>

<gfe:cache properties-ref="gemfireProperties"/>

この構成により、GemFire データ ノードがクラスターに接続できるようになり、すべてが正しくセットアップされていれば、このクラスターは Pulse から表示されます。

繰り返しますが、これがお役に立てば幸いです。

乾杯、ジョン

于 2015-10-02T02:03:03.760 に答える
0

わかりました... IDE (Eclipse など) 内からいくつかのオプションがあります。

上記の Spring 構成を 2 つの個別の Spring (Data GemFire) XML 構成ファイルに分割し、それぞれに 1 つの<gfe:cache-server>要素が含まれている場合は、これらのファイルを呼び出します (例: spring-gemfire-server1-context.xml および spring-gemfire-server2-context)。 .xml を使用すると、Spring ベース/構成の GemFire の「データ ノード」とキャッシュ サーバーを次のように実行できます...

SimpleSpring アプリケーション

単純で小さな Java の「メイン」プログラムへの引数は、上記の Spring XML 構成ファイルの 1 つへのファイル システム パスです。

さらに良いことに、次のようなものを使用して、SpringBoot アプリケーションでこれらの Spring (GemFire) 構成を起動できます...

UsefulSpringBootGemFireApplication

ここでわかるように、@ImportJava ベースの構成 ( UsefulSpringBasedGemFireConfiguration など) を使用して Spring から GemFire を構成している場合はアノテーションを使用できます。この場合は、アノテーションを使用して XML を使用できます @ImportResoruce("/classpath/to/spring-gemfire-server1-context.xml")

システムプロパティ値を @ImportResource アノテーションに渡すことは可能かもしれません (確かではありません)。

@SpringBootApplication
@ImportResource("${spring-gemfire-context-xml-location}")
class SpringBootGemFireApplication {
  ...
}

次に、IDE 内から、同じクラスを使用して 2 つの個別の「実行プロファイル」を作成しSpringBootGemFireApplication、システム プロパティ (例: -Dspring-gemfire-context-xml-location=/path/to/spring-gemfire-server1-context.xml) を構成ごとに適切に設定できます。

Spring のResourceLoader パス修飾子(例: file:、http: など) を使用して、さまざまなソースの場所 (CLASSPATH、ファイル システムなど) から Spring GemFire 構成を解決できることを思い出してください。表 (「表 7.1 リソース文字列」 ) Spring Framework リファレンス ガイドのハイパーリンク セクションにあります。

最悪の場合、GemFire データ ノード (および CacheServer) JVM プロセスごとに 2 つの構成ファイルを起動するために、2 つの別個の、しかしほぼ同一の SpringBoot アプリケーション Java メイン クラスを作成する必要があります。ただし、システム プロパティ アプローチを使用すると、同じクラスを 2 つの個別の実行プロファイルでリサイクルできることを願っています。

したがって、これで 2 つの GemFire データ ノード JVM プロセスが残ります。しかし、彼のロケーターはどうですか?

さて、以前と同様に引き続き Locator を GemFire Data Node Server JVM プロセスに埋め込むことができますが、スタンドアロンの Locator JVM プロセスが本当に必要な場合は、次の「実験的」クラスを使用できます...

LocatorLauncherFactoryBean

このクラスは、GemFire のLocatorLauncherクラスを使用して、Spring 構成からGemFire ロケーターを構成およびブートストラップします。このクラスは、開発者が Spring 構成からGemFire Locatorを構成する方法の例として、顧客の POC のために 2 年以上前に作成しました。

Spring XML 構成 (SpringBootGemFireApplication @ImportResoruceさらに別の「実行プロファイル」とシステム プロパティの組み合わせで注釈によって使用される) は、次のようになります...

ロケーター.xml

これで、3 つの個別の GemFire JVM プロセス (2 つのサーバーと 1 つのロケーター) を効果的に達成できました。IDE を使用してこれを任意の数のサーバーとロケーターにスケーリングできます。クラスターが正しく構成されていれば (ロケーターを指すサーバーなど)、Pulse はクラスター内のこれらすべてを表示します。

お役に立てれば。

乾杯!ジョン

于 2015-09-30T15:50:05.133 に答える