Search

Chapter 29. Using Red Hat JBoss Data Grid with Microsoft Azure

download PDF
While JBoss Data Grid is fully supported on Microsoft Azure, the default discovery mechanism, UDP multicasting, is not supported in this environment. If the cluster needs to dynamically add or remove members one of the following protocols should be used:
  • JDBC_PING - Discovery protocol that utilizes a shared database.
  • TCPGOSSIP - Discovery protocol that utilizes shared GossipRouter processes.
Alternatively, if there is a fixed set of nodes in the cluster then TCPPING may be used instead. An example configuration using TCPPING is found in Section 26.1.3, “Configure JGroups Socket Binding”.

29.1. The JDBC_PING JGroups Protocol

The JDBC_PING discovery protocol uses a shared database to store information about the nodes in the cluster. With Microsoft Azure this should be a SQL database, and once the database has been created the JDBC connection URL may be performing the following steps:
  1. Select the properties of the SQL Database to be used.
  2. Navigate to the Connection Propertiessection and click the Show database connection strings link
  3. Click JDBC Connection URL. This value will be used for the connection_url property when configuring JDBC_PING.
Once the connection_url has been retrieved, the SQL Driver may be obtained from Microsoft JDBC Drivers for SQL Server. This driver will be used in the following steps.
JDBC_PING Parameters

The following parameters must be defined, and are used to connect to the SQL database:

  • connection_url - the JDBC Connection URL obtained in the above steps.
  • connection_username - The database username, obtained from the connection_url.
  • connection_password - The database password, obtained from the connection_url.
  • connection_driver - The driver used to connect to the database. The application or server must include the JDBC driver JAR file on the classpath.

Configuring JBoss Data Grid to use JDBC_PING (Library Mode)

In Library Mode the JGroups xml file should be used to configure JDBC_PING; however, there is no JDBC_PING configuration included by default. It is recommended to use one of the preexisting files specified in Section 26.2.2, “Pre-Configured JGroups Files” and then adjust the configuration to include JDBC_PING. For instance, default-configs/default-jgroups-ec2.xml could be selected and the S3_PING protocol removed, and then the following block added in its place:

<JDBC_PING connection_url="${jboss.jgroups.jdbc_ping.connection_url:}"  
   connection_username="${jboss.jgroups.jdbc_ping.connection_username:}"  
   connection_password="${jboss.jgroups.jdbc_ping.connection_password:}"  
   connection_driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"  
/>

Configuring JBoss Data Grid to use JDBC_PING (Remote Client-Server Mode)

In Remote Client-Server Mode a stack may be defined for JDBC_PING in the jgroups subsystem of the server's configuration file. The following configuration snippet contains an example of this:

<subsystem xmlns="urn:infinispan:server:jgroups:6.1" default-stack="${jboss.default.jgroups.stack:jdbc_ping}">
[...]
    <stack name="jdbc_ping">
        <transport type="TCP" socket-binding="jgroups-tcp"/>
        <protocol type="JDBC_PING">
            <property name="connection_url">
                ${jboss.jgroups.jdbc_ping.connection_url:}
            </property>
            <property name="connection_username">${jboss.jgroups.jdbc_ping.connection_username:}</property>
            <property name="connection_password">${jboss.jgroups.jdbc_ping.connection_password:}</property>
            <property name="connection_driver">com.microsoft.sqlserver.jdbc.SQLServerDriver</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>

Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.