2012-11-09 19 views
6

Tôi đang cố gắng sử dụng Tìm kiếm Hibernate để tất cả các ghi vào chỉ mục Lucene từ các nút jgroupsLưu được gửi đến nút jgroupsMaster, và sau đó chỉ mục Lucene được chia sẻ trở lại nô lệ với Infinispan. Mọi thứ hoạt động cục bộ, nhưng trong khi các nút khám phá lẫn nhau trên EC2, chúng dường như không giao tiếp.Các nút JGroups trên EC2 không nói mặc dù chúng nhìn thấy nhau

Cả hai đều gửi cho nhau các thư là bạn còn sống.

# 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 

Security Group

Tôi có hai lọ, một cho chủ, và một cho nô lệ, mà tôi đang chạy trên EC2 của riêng mình. Tôi có thể ping từng thể hiện, từ trường hợp kia, và cả hai đều trong cùng một nhóm bảo mật, trong đó xác định các quy tắc sau cho giao tiếp giữa bất kỳ máy nào trong nhóm của tôi.

ALL cổng cho ICMP 0-65.535 cho TCP 0-65.535 cho UDP

Vì vậy, tôi không nghĩ rằng đó là một vấn đề cấu hình nhóm an ninh.

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> 

Tôi đã sao chép điều này trực tiếp từ bản phân phối lõi mới nhất (5.2.0.Beta3, nhưng tôi cũng đã thử 5.1.4). Điều duy nhất tôi thay đổi đã được thay thế s3_ping của họ với tôi, nhưng một lần nữa tôi thấy các nút ghi vào s3, và họ tìm thấy nhau vì vậy tôi không nghĩ rằng đó là vấn đề. Tôi cũng bắt đầu master/slave với các môi trường của họ vars cho jgroups.tcp.address thiết lập địa chỉ IP riêng của họ. Tôi cũng đã thử một vài cấu hình được đơn giản hóa rất nhiều mà không thành công.

Bất kỳ ý tưởng nào về vấn đề có thể là gì? Tôi đã dành một vài ngày chơi với nó, và nó làm tôi phát điên. Tôi nghĩ rằng nó phải là một cái gì đó với cấu hình jgroups kể từ khi nó hoạt động tại địa phương và chỉ là không thể nói chuyện trên EC2.

Bất kỳ thông tin nào khác mà các bạn muốn giúp tìm hiểu điều này?

Trả lời

6

Bạn có hai kênh JGroups đang được bắt đầu, vì vậy hai cấu hình JGroups để chỉ định: một cho Infinispan và một cho truyền thông công nhân phụ trợ.

Cả hai Infinispan và jgroupsMaster sẽ sử dụng cài đặt cấu hình mặc định của chúng trừ khi bạn chỉ định, nhưng mặc định sử dụng multicast không hoạt động trên EC2.

Có vẻ như bạn đã thiết lập cấu hình đúng cho chỉ mục Infinispan, nhưng bạn phải cấu hình lại công nhân jgroupsMaster cũng sử dụng S3_PING hoặc JDBC_PING; nó có khả năng là làm việc cho bạn tại địa phương như là cấu hình mặc định có thể tự động phát hiện đồng nghiệp bằng cách sử dụng multicast.

Sự sao chép này sẽ được giải quyết bởi HSEARCH-882, tôi rất mong được đơn giản hóa cấu hình đơn giản.

+1

Nếu có thể hôn bạn qua internet, tôi sẽ làm như vậy. Nó dễ dàng như việc đặt "hibernate.search.services.jgroups.configurationFile = jgroups-ec2.xml" vào các tệp hibernate.properties của tôi. Nó hoạt động dựa trên đầu ra của tôi, nhưng tôi cũng có thể nói nó hoạt động vì một thư mục thứ hai được tạo ra trên S3 không tồn tại trong các lần chạy trước. Cảm ơn một lần nữa! – dustincg

+0

Tôi rất vui khi nghe điều đó! – Sanne

Các vấn đề liên quan