全部產品
Search
文件中心

ApsaraDB for ClickHouse:通過HTTPS協議串連ClickHouse

更新時間:Jun 30, 2024

您可以通過HTTPS協議訪問雲資料庫ClickHouse。本文介紹如何通過HTTPS協議串連雲資料庫ClickHouse叢集。

前提條件

  • 雲資料庫ClickHouse叢集的20.8及以上版本支援通過HTTPS協議串連。

  • 已開通HTTPS協議並下載SSL CA認證。如何開通和下載,請參見開通HTTPS協議

  • 已將串連源的IP地址添加到雲資料庫ClickHouse叢集的白名單中。如何添加,請參見設定白名單

  • 如果串連源和雲資料庫ClickHouse叢集不屬於同一個VPC,請先為雲資料庫ClickHouse叢集申請外網地址。

注意事項

  • 通過HTTPS協議串連雲資料庫ClickHouse叢集會增加網路連接回應時間。

  • 通過HTTPS協議串連雲資料庫ClickHouse叢集會顯著增加CPU使用率,建議您在使用外網且有加密需求時,使用HTTPS協議訪問雲資料庫ClickHouse。使用VPC網路相對安全,一般無需使用HTTPS協議訪問雲資料庫ClickHouse

Java JDBC方式串連

  1. 使用Eclipse或其他IDE工具建立Maven專案並引入ClickHouse驅動依賴包。

    <dependency>
      <groupId>ru.yandex.clickhouse</groupId>
      <artifactId>clickhouse-jdbc</artifactId>
      <version>0.3.1</version>
    </dependency>
  2. 編寫應用程式代碼。擷取Clickhouse連線物件。

    文法如下。

    public void run()
            throws InterruptedException {
    
        final ClickHouseProperties clickHouseProperties = new ClickHouseProperties();
        clickHouseProperties.setSslRootCertificate("<憑證路徑>");
        clickHouseProperties.setSsl(true);
        clickHouseProperties.setSslMode("<SSL Mode,取值:strict、none>");
        clickHouseProperties.setUser("<資料庫帳號>");
        clickHouseProperties.setPassword("<資料庫帳號的密碼>");
        clickHouseProperties.setSocketTimeout(<逾時時間,單位:毫秒>);
      	ClickHouseDataSource dataSource = new ClickHouseDataSource("jdbc:clickhouse://<外網地址、VPC地址或IP地址>:<HTTPS連接埠號碼>/<資料庫名稱>?ssl=true", clickHouseProperties);
        try {
            final ClickHouseConnection conn = dataSource.getConnection();
            conn.createStatement().executeQuery("select now()");
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
    說明

    如果通過IP地址串連,串連源和雲資料庫ClickHouse叢集需屬於同一個VPC且SSL Mode取值為none

    樣本如下。

    public void run()
            throws InterruptedException {
    
        final ClickHouseProperties clickHouseProperties = new ClickHouseProperties();
        clickHouseProperties.setSslRootCertificate("/user/ck-root-ClickHouse-CA-Chain.pem");
        clickHouseProperties.setSsl(true);
        clickHouseProperties.setSslMode("strict");
        clickHouseProperties.setUser("test");
        clickHouseProperties.setPassword("123456Aa");
        clickHouseProperties.setSocketTimeout(2 * 3600 * 1000);
       	ClickHouseDataSource dataSource = new ClickHouseDataSource("jdbc:clickhouse://cc-****.public.clickhouse.ads.aliyuncs.com:8443/test01?ssl=true", clickHouseProperties);
        try {
            final ClickHouseConnection conn = dataSource.getConnection();
            conn.createStatement().executeQuery("select now()");
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

curl命令列方式串連

文法如下。

curl --cacert <憑證路徑> https://<外網地址或VPC地址>:<HTTPS連接埠號碼>/ping

樣本如下。

curl --cacert ./ck-root-ClickHouse-CA-Chain.pem https://cc-bp163l724nkf****.clickhouse.ads.aliyuncs.com:8443/ping