-
Notifications
You must be signed in to change notification settings - Fork 233
Using multiple node support and load balancing policy in Kundera
Multiple node support and configuring load balancing policies are now supported within Kundera(Cassandra only). Please refer here for more details.Multiple node support can be used as:
In case all Cassandra nodes are running on same port(say 9160). So minimal required configuration is:
<property name="kundera.nodes" value="192.168.120.134,192.168.120.111,192.168.120.121,192.168.120.141" />
<property name="kundera.port" value="9160" />
in persistence.xml.
To configure load balancer for available set of properties(see Load balancing specific properties section), you need to create an external file say(KunderaNodeConfig.xml) as:
<?xml version="1.0" encoding="UTF-8"?>
<clientProperties>
<datastores>
<dataStore>
<name>cassandra</name>
<connection>
<servers>
</servers>
<!-- Load balancing specific configuration -->
<properties>
<property name="loadbalancing.policy" value="roundrobin"></property>
<property name="retry" value="true"></property>
<property name="retry.delay" value="1"></property>
<property name="max.wait" value="3000"></property>
</properties>
</connection>
</dataStore>
</datastores>
</clientProperties>
In case different Cassandra nodes are running on different ports, it is required to map such configurations in form of "external file" configuration as(say KunderaNodeConfig.xml):
<?xml version="1.0" encoding="UTF-8"?>
<clientProperties>
<datastores>
<dataStore>
<name>cassandra</name>
<connection>
<servers>
<server>
<host>192.168.120.134</host>
<port>9160</port>
<properties>
<property name="testonborrow" value="true"></property>
<property name="testwhileidle" value="true"></property>
<property name="testonconnect" value="true"></property>
<property name="testonreturn" value="true"></property>
<property name="socket.timeout" value="120000"></property>
<property name="failover.policy" value="on.fail.try.one.next.available"></property>
<property name="retry" value="true"></property>
<property name="kundera.pool.size.max.active" value="31"></property>
</properties>
</server>
<server>
<host>192.168.120.111</host>
<port>9161</port>
<properties>
<property name="testonborrow" value="true"></property>
<property name="testwhileidle" value="true"></property>
<property name="testonconnect" value="true"></property>
<property name="testonreturn" value="true"></property>
<property name="socket.timeout" value="120000"></property>
<property name="failover.policy" value="on.fail.try.one.next.available"></property>
<property name="retry" value="true"></property>
<property name="kundera.pool.size.max.active" value="33"></property>
</properties>
</server>
</servers>
<!-- Load balancing specific configuration -->
<properties>
<property name="loadbalancing.policy" value="roundrobin"></property>
<property name="retry" value="true"></property>
<property name="retry.delay" value="1"></property>
<property name="max.wait" value="3000"></property>
</properties>
</connection>
</dataStore>
</datastores>
</clientProperties>
Next step is to map such external configuration file(KunderaLoadConfig.xml) within persistence.xml as:
<property name="kundera.client.property" value="KunderaLoadConfig.xml" />
Load balancing specific configuration can be defined within external configuration file as:
<properties>
<property name="loadbalancing.policy" value="roundrobin"></property>
<property name="retry.delay" value="1"></property>
</properties>
Available set of properties for load balancing are:
Property | Value |
failover.policy | on.fail.try.all.available,on.fail.try.one.next.available,fail.fast |
retry | true/false |
loadbalancing.policy | roundrobin,leastactive |
testonborrow | true/false |
testonreturn | true/false |
testonconnect | true/false |
testwhileidle | true/false |
socket.timeout | Socket time out(in seconds) |
kundera.pool.size.max.active | Maximum active number of connection in pool. |
retry.delay | retry delay(in seconds) |
max.wait | wait time in case all active connections are busy(in mili seconds) |
-
Datastores Supported
- Releases
-
Architecture
-
Concepts
-
Getting Started in 5 minutes
-
Features
- Object Mapper
- Polyglot Persistence
- Queries Support
- JPQL (JPA Query Language)
- Native Queries
- Batch insert update
- Schema Generation
- Primary Key Auto generation
- Transaction Management
- REST Based Access
- Geospatial Persistence and Queries
- Graph Database Support
-
Composite Keys
-
No hard annotation for schema
-
Support for Mapped superclass
-
Object to NoSQL Data Mapping
-
Cassandra's User Defined Types and Indexes on Collections
-
Support for aggregation
- Scalar Queries over Cassandra
- Connection pooling using Kundera Cassandra
- Configuration
-
Kundera with Couchdb
-
Kundera with Elasticsearch
-
Kundera with HBase
-
Kundera with Kudu
-
Kundera with RethinkDB
-
Kundera with MongoDB
-
Kundera with OracleNoSQL
-
Kundera with Redis
-
Kundera with Spark
-
Extend Kundera
- Sample Codes and Examples
-
Blogs and Articles
-
Tutorials
* Kundera with Openshift
* Kundera with Play Framework
* Kundera with GWT
* Kundera with JBoss
* Kundera with Spring
-
Performance
-
Troubleshooting
-
FAQ
- Production deployments
- Feedback