HTTPS経由でApsaraDB for ClickHouseクラスターに接続できます。 このトピックでは、HTTPS経由でApsaraDB for ClickHouseクラスターに接続する方法について説明します。
前提条件
HTTPS経由で接続できるのは、バージョン20.8以降のApsaraDB for ClickHouseクラスターのみです。
HTTPSが有効になり、必要なSSL認証局 (CA) 証明書がダウンロードされます。 詳細については、「HTTPSの有効化」をご参照ください。
接続元のIPアドレスがApsaraDB for ClickHouseクラスターのホワイトリストに追加されます。 詳細については、「ホワイトリストの設定」をご参照ください。
接続元とApsaraDB for ClickHouseクラスターが異なる仮想プライベートクラウド (VPC) にデプロイされている場合、パブリックエンドポイントはApsaraDB for ClickHouseクラスターで使用できます。
注意事項
ApsaraDB for ClickHouseクラスターをHTTPSで接続すると、ネットワーク接続の応答時間が長くなります。
ApsaraDB for ClickHouseクラスターがHTTPS経由で接続されると、CPU使用率が増加します。 インターネットを使用し、ビジネスでデータの暗号化が必要な場合は、HTTPSを使用してApsaraDB for ClickHouseに接続することを推奨します。 VPCは安全です。 ほとんどの場合、VPCを使用している場合、ApsaraDB for ClickHouseに接続するためにHTTPSを使用する必要はありません。
接続にJava JDBCを使用する
Eclipseなどの統合開発環境 (IDE) ツールを使用してMavenプロジェクトを作成し、ApsaraDB for ClickHouse for JDBCドライバーが提供する依存関係をインストールします。
<dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.3.1</version> </dependency>
アプリケーションのコードを記述します。 ApsaraDB for ClickHouseの接続オブジェクトを取得します。
構文:
public void run() throws InterruptedException { final ClickHouseProperties clickHouseProperties = new ClickHouseProperties(); clickHouseProperties.setSslRootCertificate("<Path of the certificate>"); clickHouseProperties.setSsl(true); clickHouseProperties.setSslMode("<SSL Mode. Valid values: strict and none>"); clickHouseProperties.setUser("<Database account>"); clickHouseProperties.setPassword("<Password of the database account>"); clickHouseProperties.setSocketTimeout(<Timeout period. Unit: milliseconds>); ClickHouseDataSource dataSource = new ClickHouseDataSource("jdbc:clickhouse://<Public endpoint, VPC endpoint, or IP address>:<HTTPS port number>/<Name of the database>?ssl=true", clickHouseProperties); try { final ClickHouseConnection conn = dataSource.getConnection(); conn.createStatement().executeQuery("select now()"); } catch (Throwable e) { e.printStackTrace(); } }
説明IPアドレスを使用してApsaraDB for ClickHouseクラスターに接続する場合、接続元とApsaraDB for 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 --cacert <Path of the certificate> https://<Public endpoint or VPC endpoint>:<HTTPS port number>/ping
例:
curl --cacert ./ck-root-ClickHouse-CA-Chain.pem https://cc-bp163l724nkf****.clickhouse.ads.aliyuncs.com:8443/ping