Ich versuche Hibernate Search zu verwenden, so dass alle Schreibvorgänge in den Lucene-Index von jgroupsSlave-Knoten an den jgroupsMaster-Knoten gesendet werden und der Lucene-Index dann wieder an den Sklaven mit Infinispan. Alles funktioniert lokal, aber während sich die Knoten auf EC2 gegenseitig entdecken, scheinen sie nicht miteinander zu kommunizieren.JGroups-Knoten auf EC2 sprechen nicht, obwohl sie sich sehen
Sie senden sich gegenseitig "are-you-alive" -Meldungen.
# master output sample
86522 [LockBreakingService,localCache,archlinux-37498] DEBUG org.infinispan.transaction.TransactionTable - About to cleanup completed transaction. Initial size is 0
86523 [LockBreakingService,LuceneIndexesLocking,archlinux-37498] DEBUG org.infinispan.transaction.TransactionTable - About to cleanup completed transaction. Initial size is 0
87449 [Timer-4,luceneCluster,archlinux-37498] DEBUG org.jgroups.protocols.FD - sending are-you-alive msg to archlinux-57950 (own address=archlinux-37498)
87522 [LockBreakingService,localCache,archlinux-37498] DEBUG org.infinispan.transaction.TransactionTable - About to cleanup completed transaction. Initial size is 0
87523 [LockBreakingService,LuceneIndexesLocking,archlinux-37498] DEBUG org.infinispan.transaction.TransactionTable - About to cleanup completed transaction. Initial size is 0
# slave output sample
85499 [LockBreakingService,localCache,archlinux-57950] DEBUG org.infinispan.transaction.TransactionTable - About to cleanup completed transaction. Initial size is 0
85503 [LockBreakingService,LuceneIndexesLocking,archlinux-57950] DEBUG org.infinispan.transaction.TransactionTable - About to cleanup completed transaction. Initial size is 0
86190 [Timer-3,luceneCluster,archlinux-57950] DEBUG org.jgroups.protocols.FD - sending are-you-alive msg to archlinux-37498 (own address=archlinux-57950)
86499 [LockBreakingService,localCache,archlinux-57950] DEBUG org.infinispan.transaction.TransactionTable - About to cleanup completed transaction. Initial size is 0
86503 [LockBreakingService,LuceneIndexesLocking,archlinux-57950] DEBUG org.infinispan.transaction.TransactionTable - About to cleanup completed transaction. Initial size is 0
Sicherheitsgruppen
Ich habe zwei Gläser, eines für Master und eines für Slave, dass ich auf ihre eigenen EC2-Instanzen leite. Ich kann jede Instanz pingen, von der anderen, und sie sind beide in der gleichen Sicherheitsgruppe, die die folgenden Regeln für die Kommunikation zwischen Maschinen in meiner Gruppe definiert.
alle Ports für ICMP 0-65535 für TCP 0-65535 für UDP
Also ich glaube nicht, dass es eine Sicherheitsgruppe Konfigurationsproblem ist.
hibernate.properties
# there is also a corresponding jgroupsSlave
hibernate.search.default.worker.backend=jgroupsMaster
hibernate.search.default.directory_provider = infinispan
hibernate.search.infinispan.configuration_resourcename=infinispan.xml
hibernate.search.default.data_cachename=localCache
hibernate.search.default.metadata_cachename=localCache
infinispan.xml
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:5.1 http://www.infinispan.org/schemas/infinispan-config-5.1.xsd"
xmlns="urn:infinispan:config:5.1">
<global>
<transport clusterName="luceneCluster" transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport">
<properties>
<property name="configurationFile" value="jgroups-ec2.xml" />
</properties>
</transport>
</global>
<default>
<invocationBatching enabled="true" />
<clustering mode="repl">
</clustering>
</default>
<!-- this is just so that each machine doesn't have to store the index
in memory -->
<namedCache name="localCache">
<loaders passivation="false" preload="true" shared="false">
<loader class="org.infinispan.loaders.file.FileCacheStore" fetchPersistentState="true" ignoreModifications="false" purgeOnStartup="false">
<properties>
<property name="location" value="/tmp/infinspan/master" />
<!-- there is a corresponding /tmp/infinispan/slave in
the slave config -->
</properties>
</loader>
</loaders>
</namedCache>
</infinispan>
JGroups-ec2.xml
<config xmlns="urn:org:jgroups" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.2.xsd">
<TCP
bind_addr="${jgroups.tcp.address:127.0.0.1}"
bind_port="${jgroups.tcp.port:7800}"
loopback="true"
port_range="30"
recv_buf_size="20000000"
send_buf_size="640000"
max_bundle_size="64000"
max_bundle_timeout="30"
enable_bundling="true"
use_send_queues="true"
sock_conn_timeout="300"
enable_diagnostics="false"
bundler_type="old"
thread_pool.enabled="true"
thread_pool.min_threads="2"
thread_pool.max_threads="30"
thread_pool.keep_alive_time="60000"
thread_pool.queue_enabled="false"
thread_pool.queue_max_size="100"
thread_pool.rejection_policy="Discard"
oob_thread_pool.enabled="true"
oob_thread_pool.min_threads="2"
oob_thread_pool.max_threads="30"
oob_thread_pool.keep_alive_time="60000"
oob_thread_pool.queue_enabled="false"
oob_thread_pool.queue_max_size="100"
oob_thread_pool.rejection_policy="Discard"
/>
<S3_PING secret_access_key="removed_for_stackoverflow" access_key="removed_for_stackoverflow" location="jgroups_ping" />
<MERGE2 max_interval="30000"
min_interval="10000"/>
<FD_SOCK/>
<FD timeout="3000" max_tries="3"/>
<VERIFY_SUSPECT timeout="1500"/>
<pbcast.NAKACK2
use_mcast_xmit="false"
xmit_interval="1000"
xmit_table_num_rows="100"
xmit_table_msgs_per_row="10000"
xmit_table_max_compaction_time="10000"
max_msg_batch_size="100"
become_server_queue_size="0"/>
<UNICAST2
max_bytes="20M"
xmit_table_num_rows="20"
xmit_table_msgs_per_row="10000"
xmit_table_max_compaction_time="10000"
max_msg_batch_size="100"/>
<RSVP />
<pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
max_bytes="400000"/>
<pbcast.GMS print_local_addr="false" join_timeout="7000" view_bundling="true"/>
<UFC max_credits="2000000" min_threshold="0.10"/>
<MFC max_credits="2000000" min_threshold="0.10"/>
<FRAG2 frag_size="60000"/>
</config>
Ich habe das direkt aus der letzten Infinispan-Core-Distribution kopiert (5.2.0.Beta3, aber ich habe auch die 5.1.4 ausprobiert, die ich glaube). Die einzige Sache, die ich änderte, war ihre s3_ping durch meine zu ersetzen, aber wieder sehe ich, wie die Knoten auf s3 schreiben, und sie finden sich gegenseitig, also glaube ich nicht, dass das das Problem ist. Ich starte auch Master/Slave mit ihrer Umgebung vars für jgroups.tcp.address auf ihre private IP-Adresse gesetzt. Ich habe auch ein paar Konfigurationen ausprobiert, die ohne Erfolg sehr vereinfacht wurden.
Irgendwelche Ideen, was das Problem sein könnte? Ich habe ein paar Tage damit verbracht, damit herumzuspielen, und es macht mich verrückt. Ich denke es muss etwas mit der jgroups config sein, da es lokal funktioniert und einfach nicht auf EC2 sprechen kann.
Irgendwelche anderen Informationen, die Sie helfen möchten, um das herauszufinden?
Wenn es möglich wäre, Sie über das Internet zu küssen, würde ich. Es war so einfach wie "hibernate.search.services.jgroups.configurationFile = jgroups-ec2.xml" in meine hibernate.properties-Dateien zu schreiben. Es funktionierte basierend auf meiner Ausgabe, aber ich konnte auch sagen, dass es funktionierte, weil ein zweiter Ordner auf S3 erstellt wurde, der in vorherigen Läufen nicht existierte. Danke noch einmal! – dustincg
Ich bin sehr froh, das zu hören! – Sanne