ApsaraDB for ClickHouse admite conexiones HTTPS que cifran el tráfico entre su aplicación y el clúster. Este tema explica cómo establecer la conexión mediante Java JDBC y curl.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un clúster de ApsaraDB for ClickHouse que ejecute la versión 20.8 o posterior
HTTPS habilitado en el clúster y el certificado SSL CA descargado; consulte Enable HTTPS
La dirección IP del cliente agregada a la lista de permitidos del clúster; consulte Configure a whitelist
Un endpoint público configurado para el clúster, si el cliente y el clúster se encuentran en diferentes virtual private clouds (VPC)
Notas de uso
Las conexiones HTTPS incrementan tanto el tiempo de respuesta de la red como la utilización de la CPU en el clúster.
Conexiones por Internet: Utilice HTTPS cuando sea obligatorio cifrar los datos.
Conexiones VPC: Las redes VPC son privadas y están aisladas. Por lo general, no es necesario usar HTTPS para conexiones dentro de la misma VPC.
Conexión mediante Java JDBC
Paso 1: Agregar la dependencia JDBC
Agregue la siguiente dependencia a su proyecto Maven:
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.1</version>
</dependency>
Paso 2: Recopilar la información de conexión
Reúna los siguientes valores antes de escribir el código de conexión:
|
Variable |
Descripción |
Valor de ejemplo |
|
Endpoint |
Endpoint público o endpoint VPC del clúster. Utilice el endpoint público si el cliente y el clúster se encuentran en diferentes VPC. |
|
|
Puerto HTTPS |
Valor fijo para las conexiones HTTPS. |
|
|
Nombre de la base de datos |
Nombre de la base de datos destino. |
|
|
Cuenta de la base de datos |
Nombre de usuario de la base de datos. |
|
|
Contraseña |
Contraseña de la cuenta de la base de datos. |
|
|
Ruta del certificado |
Ruta local del archivo donde se descargó el certificado SSL CA. |
|
|
Modo SSL |
|
|
|
Tiempo de espera del socket |
Tiempo de espera de la conexión en milisegundos. |
|
Paso 3: Conectarse al clúster
Toda la configuración de SSL se establece mediante ClickHouseProperties. La URL JDBC utiliza el puerto 8443 y el parámetro ssl=true.
import ru.yandex.clickhouse.ClickHouseConnection;
import ru.yandex.clickhouse.ClickHouseDataSource;
import ru.yandex.clickhouse.settings.ClickHouseProperties;
public void run() throws InterruptedException {
ClickHouseProperties props = new ClickHouseProperties();
props.setSslRootCertificate("<certificate-path>"); // path to the SSL CA certificate
props.setSsl(true);
props.setSslMode("<ssl-mode>"); // strict: verify cert against CA; none: skip verification (IP + same VPC only)
props.setUser("<database-account>");
props.setPassword("<password>");
props.setSocketTimeout(<timeout-ms>); // timeout in milliseconds
String url = "jdbc:clickhouse://<endpoint>:<HTTPS port number>/<database-name>?ssl=true";
ClickHouseDataSource dataSource = new ClickHouseDataSource(url, props);
try {
final ClickHouseConnection conn = dataSource.getConnection();
conn.createStatement().executeQuery("select now()");
} catch (Throwable e) {
e.printStackTrace();
}
}
Reemplace los marcadores de posición con los valores recopilados en el Paso 2:
|
Marcador de posición |
Valor de ejemplo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Al conectarse mediante una dirección IP, el cliente y el clúster deben estar en la misma VPC, y ssl-mode debe establecerse en none.
Conexión mediante curl
Utilice curl para comprobar la conectividad HTTPS mediante una solicitud /ping.
Sintaxis:
curl --cacert <certificate-path> https://<endpoint>:<HTTPS port number>/ping
Ejemplo:
curl --cacert ./ck-root-ClickHouse-CA-Chain.pem https://cc-bp163l724nkf****.clickhouse.ads.aliyuncs.com:8443/ping