O ApsaraDB for ClickHouse oferece suporte a conexões HTTPS para criptografar o tráfego entre sua aplicação e o cluster. Este tópico demonstra como estabelecer essa conexão usando Java JDBC e curl.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster do ApsaraDB for ClickHouse na versão 20.8 ou posterior
HTTPS ativado no cluster e certificado SSL CA baixado — consulte Ativar HTTPS
Endereço IP do cliente adicionado à lista de permissões do cluster — consulte Configurar uma lista de permissões
Endpoint público configurado para o cluster, caso o cliente e o cluster estejam em virtual private clouds (VPCs) diferentes
Observações de uso
As conexões HTTPS aumentam o tempo de resposta da rede e a utilização da CPU no cluster.
Conexões pela internet: Use HTTPS quando a criptografia de dados for obrigatória.
Conexões VPC: Como as redes VPC são privadas e isoladas, geralmente não é necessário usar HTTPS para conexões dentro da mesma VPC.
Conexão via Java JDBC
Etapa 1: Adicionar a dependência JDBC
Adicione a seguinte dependência ao seu projeto Maven:
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.1</version>
</dependency>
Etapa 2: Reunir informações de conexão
Reúna os seguintes valores antes de escrever o código de conexão:
|
Variável |
Descrição |
Valor de exemplo |
|
Endpoint |
Endpoint público ou endpoint VPC do cluster. Use o endpoint público se o cliente e o cluster estiverem em VPCs diferentes. |
|
|
Porta HTTPS |
Valor fixo para conexões HTTPS. |
|
|
Nome do banco de dados |
Nome do banco de dados de destino. |
|
|
Conta do banco de dados |
Nome de usuário do banco de dados. |
|
|
Senha |
Senha da conta do banco de dados. |
|
|
Caminho do certificado |
Caminho local do arquivo do certificado SSL CA baixado. |
|
|
Modo SSL |
|
|
|
Timeout do socket |
Tempo limite de conexão em milissegundos. |
|
Etapa 3: Conectar-se ao cluster
Defina todas as configurações SSL por meio de ClickHouseProperties. A URL JDBC usa a porta 8443 e o 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();
}
}
Substitua os espaços reservados pelos valores reunidos na Etapa 2:
|
Espaço reservado |
Valor de exemplo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ao conectar por endereço IP, o cliente e o cluster devem estar na mesma VPC, e ssl-mode deve ser definido como none.
Conexão via curl
Use curl para verificar a conectividade HTTPS com uma requisição /ping.
Sintaxe:
curl --cacert <certificate-path> https://<endpoint>:<HTTPS port number>/ping
Exemplo:
curl --cacert ./ck-root-ClickHouse-CA-Chain.pem https://cc-bp163l724nkf****.clickhouse.ads.aliyuncs.com:8443/ping