2009-05-19 10 views
10

Tôi đang cố gắng thiết lập sao chép ehcache như được ghi ở đây: http://ehcache.sourceforge.net/EhcacheUserGuide.html#id.s22.2
Đây là trên máy tính Windows nhưng cuối cùng sẽ chạy trên Solaris trong sản xuất.Thiết lập sao chép ehcache - tôi cần cài đặt multicast nào?

Các hướng dẫn nói để thiết lập một nhà cung cấp như sau:

<cacheManagerPeerProviderFactory 
    class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
    properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, 
    multicastGroupPort=4446, timeToLive=32"/> 

Và một người biết lắng nghe như thế này:

<cacheManagerPeerListenerFactory 
    class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
    properties="hostName=localhost, port=40001, 
    socketTimeoutMillis=2000"/> 

Câu hỏi của tôi là:
Are địa chỉ IP multicast và cổng tùy ý (Tôi biết địa chỉ phải sống trong một phạm vi cụ thể nhưng họ có phải là số cụ thể không?
Chúng có cần được thiết lập theo cách nào đó bởi quản trị viên hệ thống của chúng tôi (Tôi đang ở trên mạng văn phòng) không?

Tôi muốn kiểm tra nó cục bộ để chạy hai trường hợp tomcat riêng biệt với cấu hình ở trên. Tôi cần thay đổi điều gì trong mỗi loại? Tôi biết cả hai người nghe không thể nghe trên cùng một cổng - nhưng nhà cung cấp thì sao?
Ngoài ra, các cổng lắng nghe có tùy ý không?

Tôi đã thử thiết lập nó như trên nhưng trong thử nghiệm của tôi, bộ đệm không xuất hiện để được nhân rộng - giá trị được thêm vào trong bộ nhớ cache của một tomcat không có trong bộ nhớ cache khác.
Có bất kỳ điều gì tôi có thể làm để gỡ lỗi tình trạng này (ngoài việc ngửi gói) không?

Cảm ơn trước vì đã giúp đỡ, hãy xé tóc ra khỏi cái này!

Trả lời

5

Tôi muốn thử nghiệm cục bộ để chạy hai trường hợp tomcat riêng biệt với cấu hình ở trên.

Như tôi vừa gửi một câu trả lời liên quan đến cherouvims related question Tôi chỉ muốn nhấn mạnh ở đây quá rằng họ đang có trong thực tế cung cấp một ví dụ làm một cái gì đó tương tự ít nhất (nhiều nút cho mỗi máy chủ, mặc dù một trường hợp duy nhất): xem phần Ví dụ đầy đủ trong tài liệu RMI Distributed Caching.

Đó là thực sự quan trọng để thay đổi cổng TCP cho mỗi cacheManagerPeerListenerFactory nhưng các thiết lập multicast có thể (tôi nghĩ rằng họ phải) giữ nguyên: bạn có thể thấy điều này trong hành động trong ehcache.xml's cho Full Ví dụ đề cập ở trên: số cổng được tăng từng cái một từ 40001 lên đến 40006 mỗi nút trong khi cài đặt phát đa hướng vẫn giống nhau.

Nếu bạn đã tuân rằng, vấn đề của bạn chỉ có thể liên quan đến Tomcat chạy trên Windows - xem đoạn có liên quan trong phần vấn đề thường gặp trong RMI Distributed Caching:

Có một lỗi trong Tomcat và/hoặc JDK nơi bất kỳ người nghe RMI nào sẽ không khởi động được Tomcat nếu đường dẫn cài đặt có dấu cách trong đó.
[...]
Theo mặc định trên Windows, hãy cài đặt Tomcat trong "Program Files", vấn đề này sẽ xảy ra theo mặc định.

+0

Chấp nhận vì nó trả lời câu hỏi về số cổng. Mẹo hay về không gian trong đường dẫn mặc dù tôi không bị ảnh hưởng vì tôi luôn cài đặt công cụ Java trong một đường dẫn không có dấu cách. –

2

Đảm bảo máy chủ của bạn đã bật phát đa hướng cho người mới bắt đầu. Bạn không chắc chắn nền tảng nào bạn đang chạy.

+0

Xin chào, trên Windows (đã thêm vào câu hỏi ngay bây giờ). Đó có phải là ý nghĩa của "máy chủ" - tôi cần bật tính năng này trong hệ điều hành không? –

+2

http://technet.microsoft.com/en-us/library/bb726985.aspx – Gandalf

+0

Xin chào, có vẻ như đã bật chế độ phát đa hướng - tôi đã nhận được sysadmin thân thiện tại địa phương của mình để kiểm tra. Tôi chưa thử lại khi tôi đang thực hiện một công việc khác - sẽ đăng các phát hiện của tôi khi tôi làm. –

2

Chỉ cần theo dõi nhanh.

Chúng tôi đã làm việc này với hai máy riêng biệt đã giải quyết được vấn đề ban đầu khiến nó hoạt động. Theo như tôi nhớ Multicast sẽ làm việc "ra khỏi hộp" nhưng nó có giá trị kiểm tra với sysadmin địa phương của bạn (chúng tôi đề nghị một tinh chỉnh cho multicastGroupAddress).

Cuối cùng, chúng tôi đã nhấn tất cả các loại sự cố trên Solaris và kết thúc từ bỏ đa hướng cho Manual Peer Discovery thay thế.

Cuối cùng, về gỡ lỗi, sử dụng jconsole để theo dõi các giá trị bộ nhớ cache được chứng minh là cách tốt nhất để làm điều đó. Không cần phải nghỉ mát để gói sniffing. :-)

+0

+1 để chia sẻ kết quả và mẹo JConsole. –

5

Một lỗi mà tôi gặp phải trong quá trình sao chép ngang hàng EHCache. Điều này có thể hữu ích để ai đó cố gắng sao chép ngang hàng trên một hộp địa phương duy nhất.

Tôi muốn chạy 3 bản sao ngang hàng của EhCache trên một hộp Windows Vista bằng cách sử dụng peerDiscovery = automatic (môi trường đích cuối cùng là Linux).

Sao chép ngang hàng không hoạt động. Thật kỳ lạ, tất cả các cá thể EhCache đều khởi động mà không có bất kỳ lỗi hoặc khiếu nại nào trong nhật ký.

Đã cho tôi một thời gian để tìm ra lỗi của mình; mà không có bất cứ điều gì trong các bản ghi tôi đã phải grok xung quanh: Tôi đã sử dụng cùng một listenerPort (40001) trong cấu hình lắng nghe đồng đẳng cho mỗi trường hợp EhCache. Sử dụng listenerPorts khác nhau (40001, 40002 ...) đã làm các trick.

<cacheManagerPeerListenerFactory 
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
properties="port=40001, socketTimeoutMillis=3000"/> 

<cacheManagerPeerListenerFactory 
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
properties="port=40002, socketTimeoutMillis=3000"/> 

Lưu ý rằng đây là cấu hình 'người nghe đồng đẳng' cần số cổng khác nhau. Phát hiện đồng đẳng 'multicast' vẫn sử dụng địa chỉ multicast giống nhau và số cổng cho mọi cá thể ehcache.

2
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/> 

chỉ cần thực hiện ở trên, ehcache sẽ sử dụng bước tiếp theo! Vì vậy, bạn không cần phải lo lắng về cấu hình trên các nút mới mà bạn muốn triển khai trong cluser

-Jeryl Nấu

1

có thể giúp người thực hiện multicasting. Tôi đã xác minh bằng cách chạy ứng dụng của tôi trong tomcat địa phương của tôi từ nhật thực và chạy cùng một ứng dụng trong tomcat địa phương từ nhật thực của đồng nghiệp của tôi.

Chạy bên dưới trên Máy tính Windows của bạn sẽ hiển thị cho bạn một số ips và đảm bảo rằng tính năng đa đúc sẽ hoạt động.

netsh interface ip show joins 

thuộc tính multicastGroupAddress = 230.0.0.1 có nghĩa là ứng dụng của bạn muốn sử dụng IP này, điều này có thể thay đổi nhưng đảm bảo sử dụng Class D IP Phạm vi chỉ. Sau khi chạy ứng dụng của bạn, bạn có thể thấy IP này 230.0.0.1 Cũng như dưới đây enter image description here

Để xem tất cả các phép thuật, hãy đảm bảo bật nhật ký chính xác.

<logger name="net.sf.ehcache"> <level value="debug"/></logger> 
    <logger name="net.sf.ehcache.distribution.RMICachePeer" level="debug" /> 

Đảm bảo để có dưới lisners trong bộ nhớ cache mặc định của bạn hoặc yêu cầu cấu hình bộ nhớ cache

  <cacheManagerPeerProviderFactory 
     class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
     properties="port=40003, peerDiscovery=automatic, 
        multicastGroupAddress=230.0.0.1, 
        multicastGroupPort=4446, 
        timeToLive=32"/> 
    <cacheManagerPeerListenerFactory 
     class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
     properties="port=40001, socketTimeoutMillis=3000" /> 
    <cacheManagerPeerListenerFactory 
     class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
     properties="port=40002, socketTimeoutMillis=3000"/> 
<defaultCache 
    eternal="false" 
    timeToIdleSeconds="300" 
    timeToLiveSeconds="300" 
    diskExpiryThreadIntervalSeconds="305" 
    memoryStoreEvictionPolicy="LRU" 
    statistics="true"> 
    <persistence strategy="localTempSwap"/> 
    <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/> 
    <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" properties="bootstrapAsynchronously=true, maximumChunkSizeBytes=5000000"/> 
     </defaultCache> 

Sau khi triển khai các ứng dụng mà bạn có thể nhìn thấy dưới đây trong nhật ký

13:31:27.073 DEBUG n.s.e.d.PayloadUtil assembleUrlList - Cache peers for this CacheManager to be advertised:...... 
15:15:14.110 DEBUG net.sf.ehcache.distribution.MulticastKeepaliveHeartbeatReceiver processPayload rmiUrls received....(YOur configured caches with Ips) 

nào sẽ rất hữu ích nếu bạn cần phải định cấu hình quy trình khám phá ngang hàng thủ công.