doc-exports/docs/dws/umn/dws_01_0169.html
Lu, Huayi 95132e24fc DWS UMN 830.201_new version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Reviewed-by: Rechenburg, Matthias <matthias.rechenburg@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2024-05-27 11:54:34 +00:00

115 lines
14 KiB
HTML

<a name="EN-US_TOPIC_0000001707254545"></a><a name="EN-US_TOPIC_0000001707254545"></a>
<h1 class="topictitle1">Configuring JDBC to Connect to a Cluster (Load Balancing Mode)</h1>
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_section136169187243"><h4 class="sectiontitle">Context</h4><p id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_p15940825142012">If you use JDBC to connect to only one CN in the cluster, this CN may be overloaded and other CN resources wasted. It also incurs single-node failure risks.</p>
<p id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_p165981027161910">To avoid these problems, you can use JDBC to connect to multiple CNs. Two modes are available:</p>
<ul id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_ul12996113082313"><li id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_li135553458342">Connection using ELB: An ELB distributes access traffic to multiple ECSs for traffic control based on forwarding policies. It improves the fault tolerance capability of application programs.</li><li id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_li199773018230">Connection in multi-host mode: Use JDBC to configure multiple nodes, which is similar to ELB.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_section11870118125313"><h4 class="sectiontitle">Method 1: Using ELB to Connect to a Cluster</h4><ol id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_ol8322185119500"><li id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_li15322145195015"><span>Obtain the Elastic Load Balance address. On the console, go to the details page of a cluster and obtain the ELB IP address.</span><p><p id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_p17850183914113"><span><img id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_image199854561002" src="figure/en-us_image_0000001711432848.png" title="Click to enlarge" class="imgResize"></span></p>
</p></li><li id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_li932212515505"><span>Configure the driver. For details, see <a href="dws_01_0032.html">Downloading the JDBC or ODBC Driver</a>.</span></li><li id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_li1066184441316"><span>Obtain the database connection.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_screen315968104018"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">private</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">USER_NAME</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">&quot;dbadmin&quot;</span><span class="p">;</span>
<span class="n">private</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">&quot;password&quot;</span><span class="p">;</span>
<span class="o">//</span><span class="w"> </span><span class="n">jdbc</span><span class="p">:</span><span class="n">postgresql</span><span class="p">:</span><span class="o">//</span><span class="n">ELB_IP</span><span class="p">:</span><span class="n">PORT</span><span class="o">/</span><span class="n">dbName</span><span class="ss">&quot;</span>
<span class="ss">private static final String URL = &quot;</span><span class="n">jdbc</span><span class="p">:</span><span class="n">postgresql</span><span class="p">:</span><span class="o">//</span><span class="mi">100</span><span class="p">.</span><span class="mi">95</span><span class="p">.</span><span class="mi">153</span><span class="p">.</span><span class="mi">169</span><span class="p">:</span><span class="mi">8000</span><span class="o">/</span><span class="n">gaussdb</span><span class="ss">&quot;;</span>
<span class="ss">private static Properties properties = new Properties();</span>
<span class="ss">static {</span>
<span class="ss"> properties.setProperty(&quot;</span><span class="k">user</span><span class="ss">&quot;, USER_NAME);</span>
<span class="ss"> properties.setProperty(&quot;</span><span class="n">password</span><span class="err">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">PASSWORD</span><span class="p">);</span>
<span class="err">}</span>
<span class="cm">/**</span>
<span class="cm"> * Obtain the database connection.</span>
<span class="cm"> */</span>
<span class="k">public</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">Connection</span><span class="w"> </span><span class="n">getConnection</span><span class="p">()</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="k">Connection</span><span class="w"> </span><span class="k">connection</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">null</span><span class="p">;</span>
<span class="w"> </span><span class="n">try</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="k">connection</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DriverManager</span><span class="p">.</span><span class="n">getConnection</span><span class="p">(</span><span class="n">URL</span><span class="p">,</span><span class="w"> </span><span class="n">properties</span><span class="p">);</span>
<span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="n">catch</span><span class="w"> </span><span class="p">(</span><span class="k">SQLException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">connection</span><span class="p">;</span>
<span class="err">}</span>
</pre></div></td></tr></table></div>
</div>
</p></li></ol>
</div>
<div class="section" id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_section2087414885314"><h4 class="sectiontitle">Method 2: Connecting to the Cluster in Multi-host Mode</h4><ol id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_ol199451754141413"><li id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_li1594511547145"><span>Obtain the EIP. Go to the details page of a cluster on the console and obtain the EIP.</span><p><p id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_p188112115153"><span><img id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_image114331726511" src="figure/en-us_image_0000001759351901.png" title="Click to enlarge" class="imgResize"></span></p>
</p></li><li id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_li159451054121414"><span>Configure the driver. For details, see <a href="dws_01_0032.html">Downloading the JDBC or ODBC Driver</a>.</span></li><li id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_li1494517541140"><span>Obtain the database connection.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001707254545__en-us_topic_0000001502484720_screen161391817733"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">private</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">USER_NAME</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">&quot;dbadmin&quot;</span><span class="p">;</span>
<span class="n">private</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">&quot;password&quot;</span><span class="p">;</span>
<span class="o">//</span><span class="w"> </span><span class="n">jdbc</span><span class="p">:</span><span class="n">postgresql</span><span class="p">:</span><span class="o">//</span><span class="n">host1</span><span class="p">:</span><span class="n">port1</span><span class="p">,</span><span class="n">host2</span><span class="p">:</span><span class="n">port2</span><span class="o">/</span><span class="n">dbName</span><span class="ss">&quot;</span>
<span class="ss">private static final String URL = &quot;</span><span class="n">jdbc</span><span class="p">:</span><span class="n">postgresql</span><span class="p">:</span><span class="o">//</span><span class="mi">100</span><span class="p">.</span><span class="mi">95</span><span class="p">.</span><span class="mi">146</span><span class="p">.</span><span class="mi">194</span><span class="p">:</span><span class="mi">8000</span><span class="p">,</span><span class="mi">100</span><span class="p">.</span><span class="mi">95</span><span class="p">.</span><span class="mi">148</span><span class="p">.</span><span class="mi">220</span><span class="p">:</span><span class="mi">8000</span><span class="p">,</span><span class="mi">100</span><span class="p">.</span><span class="mi">93</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">221</span><span class="p">:</span><span class="mi">8000</span><span class="o">/</span><span class="n">gaussdb</span><span class="o">?</span><span class="n">loadBalanceHosts</span><span class="o">=</span><span class="k">true</span><span class="ss">&quot;;</span>
<span class="ss">private static Properties properties = new Properties();</span>
<span class="ss">static {</span>
<span class="ss"> properties.setProperty(&quot;</span><span class="k">user</span><span class="ss">&quot;, USER_NAME);</span>
<span class="ss"> properties.setProperty(&quot;</span><span class="n">password</span><span class="err">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">PASSWORD</span><span class="p">);</span>
<span class="err">}</span>
<span class="cm">/**</span>
<span class="cm"> * Obtain the database connection.</span>
<span class="cm"> */</span>
<span class="k">public</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">Connection</span><span class="w"> </span><span class="n">getConnection</span><span class="p">()</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="k">Connection</span><span class="w"> </span><span class="k">connection</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">null</span><span class="p">;</span>
<span class="w"> </span><span class="n">try</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="k">connection</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DriverManager</span><span class="p">.</span><span class="n">getConnection</span><span class="p">(</span><span class="n">URL</span><span class="p">,</span><span class="w"> </span><span class="n">properties</span><span class="p">);</span>
<span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="n">catch</span><span class="w"> </span><span class="p">(</span><span class="k">SQLException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">connection</span><span class="p">;</span>
<span class="err">}</span>
</pre></div></td></tr></table></div>
</div>
</p></li></ol>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_01_0081.html">Using the JDBC and ODBC Drivers to Connect to a Cluster</a></div>
</div>
</div>
<script language="JavaScript">
<!--
image_size('.imgResize');
var msg_imageMax = "view original image";
var msg_imageClose = "close";
//--></script>