jboss - Combine Embedded and Server as Clustered Infinispan -
as proof of concept, try build infinispan cluster existing application starts embedded cache , 1 or more standalone infinispan servers.
same asked @ : https://developer.jboss.org/thread/261096 jboss forum question reference
the reasosing behind is, want show, there way of zero-configuration automatic creation of cluster starting freshly downloaded infinispan standalone servers. application runs embedded cache automatically "joined" new nodes.
i'm using default configuration infinispan , jgroups (see below).
the effect is, 2 or more of applications embedded cache "see each other" , 2 or more standalone infinispan servers see each other. none of nodes "see" standalone nodes , don't see nodes.
i use infinispan 7.2.3.
my embedded configuration like-
builder = new configurationbuilder(); globalconfigurationbuilder globalbuilder = globalconfigurationbuilder.defaultclusteredbuilder(); if (enablediskpersistance) { builder.jmxstatistics().enable().persistence().passivation(true).addsinglefilestore().location("data/cachedata").async().threadpoolsize(15).flushlocktimeout(15000).transaction().transactionmode(transactionmode.transactional); builder.eviction().strategy(evictionstrategy.lirs).maxentries(10000l).expiration().maxidle(-1, timeunit.seconds); builder.clustering().cachemode(cachemode.dist_async).l1().enable(); } else { builder.jmxstatistics().enable().transaction().transactionmode(transactionmode.transactional); builder.clustering().cachemode(cachemode.dist_async).hash().numowners(2).numsegments(20).l1().enable().compatibility().enable().locking().lockacquisitiontimeout(30000).concurrencylevel(1000); } globalbuilder.transport().clustername("clustered").nodename( "embedednode" ) .addproperty( "configurationfile", "jgroups.xml").globaljmxstatistics().enable().allowduplicatedomains(true).jmxdomain("clearinsight").build(); cachemanager = new defaultcachemanager(globalbuilder.build(),builder.build()); org.infinispan.cache<string, object> cache = cachemanager.getcache( "default" ); and jgroups.xml -
<config xmlns="urn:org:jgroups" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="urn:org:jgroups file:schema/jgroups-3.2.xsd"> <udp mcast_addr="${jgroups.udp.mcast_addr:234.99.54.14}" mcast_port="${jgroups.udp.mcast_port:45688}" tos="8" ucast_recv_buf_size="20m" ucast_send_buf_size="640k" mcast_recv_buf_size="25m" mcast_send_buf_size="640k" max_bundle_size="31k" ip_ttl="${jgroups.udp.ip_ttl:2}" enable_diagnostics="false" bundler_type="sender-sends-with-timer" thread_naming_pattern="pl" thread_pool.enabled="true" thread_pool.min_threads="2" thread_pool.max_threads="30" thread_pool.keep_alive_time="60000" thread_pool.queue_enabled="true" 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" internal_thread_pool.enabled="true" internal_thread_pool.min_threads="2" internal_thread_pool.max_threads="10" internal_thread_pool.keep_alive_time="60000" internal_thread_pool.queue_enabled="true" internal_thread_pool.queue_max_size="100" internal_thread_pool.rejection_policy="discard" /> <ping timeout="3000" num_initial_members="2"/> <merge2 max_interval="30000" min_interval="10000"/> <fd_sock/> <fd_all timeout="15000" interval="3000"/> <verify_suspect timeout="1500"/> <pbcast.nakack2 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"/> <unicast3 xmit_interval="500" xmit_table_num_rows="20" xmit_table_msgs_per_row="10000" xmit_table_max_compaction_time="10000" max_msg_batch_size="100" conn_expiry_timeout="0"/> <pbcast.stable stability_delay="500" desired_avg_gossip="5000" max_bytes="1m"/> <pbcast.gms print_local_addr="false" join_timeout="3000" view_bundling="true"/> <tom.toa/> <!-- toa needed total order transactions--> <ufc max_credits="2m" min_threshold="0.40"/> <mfc max_credits="2m" min_threshold="0.40"/> <frag2 frag_size="30k" /> <rsvp timeout="60000" resend_interval="500" ack_on_delivery="false" /> </config> and cluster.xml -
<server xmlns="urn:jboss:domain:2.1"> <extensions> <extension module="org.infinispan.server.endpoint"/> <extension module="org.jboss.as.clustering.infinispan"/> <extension module="org.jboss.as.clustering.jgroups"/> <extension module="org.jboss.as.connector"/> <extension module="org.jboss.as.deployment-scanner"/> <extension module="org.jboss.as.jdr"/> <extension module="org.jboss.as.jmx"/> <extension module="org.jboss.as.logging"/> <extension module="org.jboss.as.modcluster"/> <extension module="org.jboss.as.naming"/> <extension module="org.jboss.as.remoting"/> <extension module="org.jboss.as.security"/> <extension module="org.jboss.as.threads"/> <extension module="org.jboss.as.transactions"/> <extension module="org.wildfly.extension.io"/> </extensions> <management> <security-realms> <security-realm name="managementrealm"> <authentication> <local default-user="$local" skip-group-loading="true"/> <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/> </authentication> <authorization map-groups-to-roles="false"> <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/> </authorization> </security-realm> <security-realm name="applicationrealm"> <authentication> <local default-user="$local" allowed-users="*" skip-group-loading="true"/> <properties path="application-users.properties" relative-to="jboss.server.config.dir"/> </authentication> <authorization> <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/> </authorization> </security-realm> </security-realms> <audit-log> <formatters> <json-formatter name="json-formatter"/> </formatters> <handlers> <file-handler name="file" formatter="json-formatter" relative-to="jboss.server.data.dir" path="audit-log.log"/> </handlers> <logger log-boot="true" log-read-only="false" enabled="false"> <handlers> <handler name="file"/> </handlers> </logger> </audit-log> <management-interfaces> <http-interface security-realm="managementrealm" http-upgrade-enabled="true"> <socket-binding http="management-http"/> </http-interface> </management-interfaces> <access-control provider="simple"> <role-mapping> <role name="superuser"> <include> <user name="$local"/> </include> </role> </role-mapping> </access-control> </management> <profile> <subsystem xmlns="urn:jboss:domain:logging:2.0"> <console-handler name="console"> <level name="info"/> <formatter> <named-formatter name="color-pattern"/> </formatter> </console-handler> <periodic-rotating-file-handler name="file" autoflush="true"> <formatter> <named-formatter name="pattern"/> </formatter> <file relative-to="jboss.server.log.dir" path="server.log"/> <suffix value=".yyyy-mm-dd"/> <append value="true"/> </periodic-rotating-file-handler> <logger category="com.arjuna"> <level name="warn"/> </logger> <logger category="org.apache.tomcat.util.modeler"> <level name="warn"/> </logger> <logger category="org.jboss.as.config"> <level name="debug"/> </logger> <logger category="sun.rmi"> <level name="warn"/> </logger> <logger category="jacorb"> <level name="warn"/> </logger> <logger category="jacorb.config"> <level name="error"/> </logger> <root-logger> <level name="info"/> <handlers> <handler name="console"/> <handler name="file"/> </handlers> </root-logger> <formatter name="pattern"> <pattern-formatter pattern="%d{yyyy-mm-dd hh:mm:ss,sss} %-5p [%c] (%t) %s%e%n"/> </formatter> <formatter name="color-pattern"> <pattern-formatter pattern="%k{level}%d{hh:mm:ss,sss} %-5p [%c] (%t) %s%e%n"/> </formatter> </subsystem> <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0"> <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/> </subsystem> <subsystem xmlns="urn:infinispan:server:endpoint:7.2"> <hotrod-connector socket-binding="hotrod" cache-container="clustered"> <topology-state-transfer lazy-retrieval="false" lock-timeout="1000" replication-timeout="5000"/> </hotrod-connector> <memcached-connector socket-binding="memcached" cache-container="clustered"/> <rest-connector socket-binding="rest" cache-container="clustered" security-domain="other" auth-method="basic"/> <websocket-connector socket-binding="websocket" cache-container="clustered"/> </subsystem> <subsystem xmlns="urn:jboss:domain:datasources:2.0"> <datasources/> </subsystem> <subsystem xmlns="urn:infinispan:server:core:7.2" default-cache-container="clustered"> <cache-container name="clustered" default-cache="default" statistics="true"> <transport executor="infinispan-transport" lock-timeout="60000"/> <distributed-cache name="default" mode="sync" segments="20" owners="2" remote-timeout="30000" start="eager"> <locking acquire-timeout="30000" concurrency-level="1000" striping="false"/> <transaction mode="none"/> </distributed-cache> <distributed-cache name="memcachedcache" mode="sync" segments="20" owners="2" remote-timeout="30000" start="eager"> <locking acquire-timeout="30000" concurrency-level="1000" striping="false"/> <transaction mode="none"/> </distributed-cache> <distributed-cache name="namedcache" mode="sync" start="eager"/> <distributed-cache name="transactionalcache" mode="sync" start="eager"> <transaction mode="non_xa" locking="pessimistic"/> </distributed-cache> </cache-container> <cache-container name="security"/> </subsystem> <subsystem xmlns="urn:jboss:domain:io:1.1"> <worker name="default"/> <buffer-pool name="default"/> </subsystem> <subsystem xmlns="urn:jboss:domain:jca:2.0"> <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/> <bean-validation enabled="true"/> <default-workmanager> <short-running-threads> <core-threads count="50"/> <queue-length count="50"/> <max-threads count="50"/> <keepalive-time time="10" unit="seconds"/> </short-running-threads> <long-running-threads> <core-threads count="50"/> <queue-length count="50"/> <max-threads count="50"/> <keepalive-time time="10" unit="seconds"/> </long-running-threads> </default-workmanager> <cached-connection-manager/> </subsystem> <subsystem xmlns="urn:jboss:domain:jdr:1.0"/> <subsystem xmlns="urn:infinispan:server:jgroups:7.0" default-stack="${jboss.default.jgroups.stack:udp}"> <stack name="udp"> <transport type="udp" socket-binding="jgroups-udp"/> <protocol type="ping"/> <protocol type="merge3"/> <protocol type="fd_sock" socket-binding="jgroups-udp-fd"/> <protocol type="fd_all"/> <protocol type="verify_suspect"/> <protocol type="pbcast.nakack2"/> <protocol type="unicast3"/> <protocol type="pbcast.stable"/> <protocol type="pbcast.gms"/> <protocol type="ufc"/> <protocol type="mfc"/> <protocol type="frag2"/> </stack> <stack name="tcp"> <transport type="tcp" socket-binding="jgroups-tcp"/> <protocol type="mping" socket-binding="jgroups-mping"/> <protocol type="merge3"/> <protocol type="fd_sock" socket-binding="jgroups-tcp-fd"/> <protocol type="fd_all"/> <protocol type="verify_suspect"/> <protocol type="pbcast.nakack2"> <property name="use_mcast_xmit">false</property> </protocol> <protocol type="unicast3"/> <protocol type="pbcast.stable"/> <protocol type="pbcast.gms"/> <protocol type="mfc"/> <protocol type="frag2"/> </stack> <stack name="s3"> <transport type="tcp" socket-binding="jgroups-tcp"/> <protocol type="s3_ping"> <property name="location">${jgroups.s3.bucket:}</property> <property name="access_key">${jgroups.s3.access_key:}</property> <property name="secret_access_key">${jgroups.s3.secret_access_key:}</property> <property name="pre_signed_delete_url">${jgroups.s3.pre_signed_delete_url:}</property> <property name="pre_signed_put_url">${jgroups.s3.pre_signed_put_url:}</property> <property name="prefix">${jgroups.s3.prefix:}</property> </protocol> <protocol type="merge3"/> <protocol type="fd_sock" socket-binding="jgroups-tcp-fd"/> <protocol type="fd_all"/> <protocol type="verify_suspect"/> <protocol type="pbcast.nakack2"> <property name="use_mcast_xmit">false</property> </protocol> <protocol type="unicast3"/> <protocol type="pbcast.stable"/> <protocol type="pbcast.gms"/> <protocol type="mfc"/> <protocol type="frag2"/> </stack> <stack name="google"> <transport type="tcp" socket-binding="jgroups-tcp"/> <protocol type="google_ping"> <property name="location">${jgroups.google.bucket:}</property> <property name="access_key">${jgroups.google.access_key:}</property> <property name="secret_access_key">${jgroups.google.secret_access_key:}</property> </protocol> <protocol type="merge3"/> <protocol type="fd_sock" socket-binding="jgroups-tcp-fd"/> <protocol type="fd_all"/> <protocol type="verify_suspect"/> <protocol type="pbcast.nakack2"> <property name="use_mcast_xmit">false</property> </protocol> <protocol type="unicast3"/> <protocol type="pbcast.stable"/> <protocol type="pbcast.gms"/> <protocol type="mfc"/> <protocol type="frag2"/> </stack> </subsystem> <subsystem xmlns="urn:jboss:domain:jmx:1.3"> <expose-resolved-model/> <expose-expression-model/> <remoting-connector/> </subsystem> <subsystem xmlns="urn:jboss:domain:modcluster:1.2"> <mod-cluster-config advertise-socket="modcluster" connector="ajp"> <dynamic-load-provider> <load-metric type="cpu"/> </dynamic-load-provider> </mod-cluster-config> </subsystem> <subsystem xmlns="urn:jboss:domain:naming:2.0"> <remote-naming/> </subsystem> <subsystem xmlns="urn:jboss:domain:remoting:2.0"> <endpoint worker="default"/> <http-connector name="http-remoting-connector" connector-ref="default" security-realm="applicationrealm"/> </subsystem> <subsystem xmlns="urn:jboss:domain:security:1.2"> <security-domains> <security-domain name="other" cache-type="default"> <authentication> <login-module code="remoting" flag="optional"> <module-option name="password-stacking" value="usefirstpass"/> </login-module> <login-module code="realmdirect" flag="required"> <module-option name="password-stacking" value="usefirstpass"/> </login-module> </authentication> </security-domain> <security-domain name="jboss-web-policy" cache-type="default"> <authorization> <policy-module code="delegating" flag="required"/> </authorization> </security-domain> </security-domains> </subsystem> <subsystem xmlns="urn:jboss:domain:threads:1.1"> <thread-factory name="infinispan-factory" group-name="infinispan" priority="5" thread-name-pattern="%g %f-%t"/> <unbounded-queue-thread-pool name="infinispan-transport"> <max-threads count="25"/> <keepalive-time time="0" unit="milliseconds"/> <thread-factory name="infinispan-factory"/> </unbounded-queue-thread-pool> </subsystem> <subsystem xmlns="urn:jboss:domain:transactions:2.0"> <core-environment> <process-id> <uuid/> </process-id> </core-environment> <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> </subsystem> </profile> <interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> </interfaces> <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/> <socket-binding name="hotrod" port="11222"/> <socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:234.99.54.14}" multicast-port="45700"/> <socket-binding name="jgroups-tcp" port="7600"/> <socket-binding name="jgroups-tcp-fd" port="57600"/> <socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:234.99.54.14}" multicast-port="45688"/> <socket-binding name="jgroups-udp-fd" port="54200"/> <socket-binding name="memcached" port="11211"/> <socket-binding name="modcluster" port="0" multicast-address="224.0.1.115" multicast-port="23364"/> <socket-binding name="rest" port="8080"/> <socket-binding name="txn-recovery-environment" port="4712"/> <socket-binding name="txn-status-manager" port="4713"/> <socket-binding name="websocket" port="8181"/> </socket-binding-group> i able connect both servers getting warning log stack trace -
2015-07-08 11:02:52,463 error [org.jgroups.blocks.requestcorrelator] (oob-4,shared=udp) failed unmarshalling buffer return value: java.io.streamcorruptedexception: unexpected byte found when reading object: 0 @ org.jboss.marshalling.river.riverunmarshaller.doreadobject(riverunmarshaller.java:754) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.river.riverunmarshaller.doreadobject(riverunmarshaller.java:209) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.abstractobjectinput.readobject(abstractobjectinput.java:41) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.modularclassresolver.resolveclass(modularclassresolver.java:95) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.river.riverunmarshaller.doreadclassdescriptor(riverunmarshaller.java:948) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.river.riverunmarshaller.doreadnewobject(riverunmarshaller.java:1255) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.river.riverunmarshaller.doreadobject(riverunmarshaller.java:276) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.river.riverunmarshaller.doreadobject(riverunmarshaller.java:209) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.abstractobjectinput.readobject(abstractobjectinput.java:41) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.infinispan.distribution.ch.impl.replicatedconsistenthash$externalizer.doreadobject(replicatedconsistenthash.java:327) [infinispan-core.jar:7.2.3.final] @ org.infinispan.distribution.ch.impl.replicatedconsistenthash$externalizer.doreadobject(replicatedconsistenthash.java:314) [infinispan-core.jar:7.2.3.final] @ org.infinispan.commons.marshall.instancereusingadvancedexternalizer.readobject(instancereusingadvancedexternalizer.java:102) [infinispan-commons.jar:7.2.3.final] @ org.infinispan.marshall.core.externalizertable$externalizeradapter.readobject(externalizertable.java:436) [infinispan-core.jar:7.2.3.final] @ org.infinispan.marshall.core.externalizertable.readobject(externalizertable.java:227) [infinispan-core.jar:7.2.3.final] @ org.infinispan.marshall.core.jbossmarshaller$externalizertableproxy.readobject(jbossmarshaller.java:153) [infinispan-core.jar:7.2.3.final] @ org.jboss.marshalling.river.riverunmarshaller.doreadobject(riverunmarshaller.java:354) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.river.riverunmarshaller.doreadobject(riverunmarshaller.java:209) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.jboss.marshalling.abstractobjectinput.readobject(abstractobjectinput.java:41) [jboss-marshalling-osgi-1.4.10.final.jar:1.4.10.final] @ org.infinispan.topology.cachetopology$externalizer.doreadobject(cachetopology.java:201) [infinispan-core.jar:7.2.3.final] @ org.infinispan.topology.cachetopology$externalizer.doreadobject(cachetopology.java:186) [infinispan-core.jar:7.2.3.final] @ org.infinispan.commons.marshall.instancereusingadvancedexternalizer.readobject(instancereusingadvancedexternalizer.java:102) [infinispan-commons.jar:7.2.3.final] @ org.infinispan.marshall.core.externalizertable$externalizeradapter.readobject(externalizertable.java:436) [infinispan-core.jar:7.2.3.final] @ org.infinispan.marshall.core.externalizertable.readobject(externalizertable.java:227) [infinispan-core.jar:7.2.3.final] @ org.infinispan.marshall.core.jbossmarshaller$externalizertableproxy.readobject(jbossmarshaller.java:153) [infinispan-core.jar:7.2.3.final]
Comments
Post a Comment