---
title: 'Подключиться к кластеру OpenSearch'
sidebar_label: 'Подключиться к кластеру'
description: 'Как подключиться к кластеру OpenSearch с SSL-сертификатом'
sidebar_position: 6
---

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import Formbricks from '@theme/MDXComponents/Formbricks'

# Подключиться к кластеру OpenSearch

Чтобы подключиться к кластеру OpenSearch, подключитесь к нодам группы с ролью Manager, Data или Dashboard.
Выбор ноды для подключения зависит от цели подключения — например, если необходим доступ к дашборду кластера, то подключаться нужно к ноде из группы с ролью Dashboard.
Подробнее о группах нод и их ролях в инструкции [Группы нод](/managed-databases/opensearch/about-node-groups.mdx).

Вы можете:

* [подключиться к нодам группы с ролью Manager и Data](#connect-to-data-and-manager) — через программный код с SSL;
* [подключиться к ноде группы с ролью Dashboard](#connect-to-dashboard) — через веб-интерфейс OpenSearch Dashboards или OpenSearch API.

TLS(SSL)-шифрование поддерживается только при подключении по приватному IP-адресу.

При подключении укажите [порт](#connection-ports) и [адрес](#connection-addresses).

## Порты для подключения \{#connection-ports}

Для подключения к нодам кластера используйте порт 9200.

## Адреса для подключения \{#connection-addresses}

Вы можете выбрать адрес для подключения в зависимости от одного из сценариев:

* [подключение к кластеру из приватной подсети](#connecting-to-cluster-from-private-subnet);
* [подключение к кластеру из интернета](#connecting-to-cluster-from-internet).

Вы можете [посмотреть адрес для подключения](#view-connection-address) в панели управления.

![](https://423.selcdn.ru/kb/dbaas-opensearch-connect-to-cluster-connecting-LANG-THEME.png)

### Подключение к кластеру из приватной подсети \{#connecting-to-cluster-from-private-subnet}

Если вы подключаетесь к кластеру из приватной подсети, используйте приватный IP-адрес.

Чтобы подключиться из другой приватной подсети, сначала [подключите обе приватные подсети к облачному роутеру](/cloud-servers/cloud-networks/cloud-routers.mdx#connect-private-subnet-to-cloud-router).

### Подключение к кластеру из интернета \{#connecting-to-cluster-from-internet}

Если вы подключаетесь к кластеру из интернета, используйте [публичный IP-адрес](/managed-databases/opensearch/public-ip.mdx).
Приватная подсеть должна соответствовать [требованиям](/managed-databases/opensearch/public-ip.mdx#requirements).
Если подсеть не соответствует требованиям, [подготовьте ее для подключения публичного IP-адреса](/managed-databases/opensearch/public-ip.mdx#configure-subnet).

### Посмотреть адрес для подключения \{#view-connection-address}

1. В [панели управления](https://my.selectel.ru/vpc/default/dbaas/) в верхнем меню нажмите **Продукты** и выберите **Облачные базы данных**.
2. Откройте вкладку **Активные**.
3. Откройте страницу кластера баз данных → вкладка **Подключение**.
4. В блоке **Адреса для подключения** откройте вкладку группы нод, адреса которой хотите посмотреть.

## Подключиться к нодам группы с ролью Manager и Data \{#connect-to-data-and-manager}

К нодам группы с ролью Manager и Data можно подключиться с SSL только по приватному IP-адресу.
Подключение с использованием TLS(SSL)-шифрования обеспечивает безопасное соединение между вашим сервером и кластером баз данных.

<Tabs queryString="connect-to-data-and-manager">
  <TabItem value="bash" default>
    <TabItemLabel>
      Bash
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.opensearch/`:

       ```bash
       mkdir -p ~/.opensearch/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.opensearch/root.crt
       chmod 0600 ~/.opensearch/root.crt
       ```

    2. Подключитесь к ноде:

       ```bash
       curl -XGET -u 'admin:<password>' --cacert ~/.opensearch/root.crt 'https://<ip_address>:<port>/'
       ```

       Укажите:

       * `<password>` — пароль пользователя-администратора;
       * `<ip_address>` — IP-адрес ноды;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="python">
    <TabItemLabel>
      Python
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.opensearch/`:

       ```bash
       mkdir -p ~/.opensearch/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.opensearch/root.crt
       chmod 0600 ~/.opensearch/root.crt
       ```

    2. Установите библиотеку opensearch-py:

       ```bash
       pip3 install opensearch-py
       ```

    3. Подключитесь к ноде:

       ```python
       from opensearchpy import OpenSearch

       hosts = ['<host_1>',
               '<host_2>']
       auth = ('admin', '<password>')
       ca_certs_path = '~/.opensearch/root.crt'

       client = OpenSearch(
           hosts,
           http_auth = auth,
           use_ssl = True,
           verify_certs = True,
           ssl_assert_hostname = False,
           ssl_show_warn = False,
           ca_certs = ca_certs_path
       )

       print(client.info())
       ```

       Укажите:

       * `<host_1>` и `<host_2>` — IP-адреса нод;
       * `<password>` — пароль пользователя-администратора.
  </TabItem>

  <TabItem value="go">
    <TabItemLabel>
      Go
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.opensearch/`:

       ```bash
       mkdir -p ~/.opensearch/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.opensearch/root.crt
       chmod 0600 ~/.opensearch/root.crt
       ```

    2. Используйте пример подключения:

       ```go
       package main

       import (
           "crypto/tls"
           "crypto/x509"
           "fmt"
           "io/ioutil"
           "github.com/opensearch-project/opensearch-go"
           "net/http"
           "os"
       )

       func main() {
           caCert, err := ioutil.ReadFile("<path>")
           if err != nil {
               fmt.Println("failed to read CA certificate: %w", err)
               os.Exit(1)
           }

           caCertPool := x509.NewCertPool()
           if ok := caCertPool.AppendCertsFromPEM(caCert); !ok {
               fmt.Println("failed to append CA certificate")
           }

           client, err := opensearch.NewClient(opensearch.Config{
               Transport: &http.Transport{
               TLSClientConfig: &tls.Config{RootCAs: caCertPool},
               },
               Addresses: []string{
                                   "https://<host_1>:<port>",
                                   "https://<host_2>:<port>"
                               },
               Username:  "admin",
               Password:  "<password>",
           })
           if err != nil {
               fmt.Println("cannot initialize", err)
               os.Exit(1)
           } else {
               fmt.Println(client.Info())
           }
       }
       ```

       Укажите:

       * `<path>` — полный путь до корневого сертификата;
       * `<host_1>` и `<host_2>` — IP-адреса нод;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<password>` — пароль пользователя.
  </TabItem>

  <TabItem value="nodejs">
    <TabItemLabel>
      Node.js
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.opensearch/`:

       ```bash
       mkdir -p ~/.opensearch/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.opensearch/root.crt
       chmod 0600 ~/.opensearch/root.crt
       ```

    2. Установите зависимости:

       ```bash
       npm install @opensearch-project/opensearch
       ```

    3. Используйте пример подключения:

       ```js
       import { readFileSync } from 'fs';
       import { Client } from '@opensearch-project/opensearch';

       const hosts = [
       "https://<host_1>:<port>",
       "https://<host_2>:<port>"
       ];

       const username = "admin";
       const password = "<password>";
       const caCertsPath = "<path>";

       const client = new Client({
       nodes: hosts,
       ssl: {
           ca: readFileSync(caCertsPath),
       },
       auth: {
           username,
           password
       }
       });

       const getClusterInfo = async () => {
       try {
           const response = await client.cluster.health();
           console.log('Cluster Info:', response.body);
       } catch (error) {
           console.error('Error fetching cluster info:', error);
       }
       };

       getClusterInfo();
       ```

       Укажите:

       * `<host_1>` и `<host_2>` — IP-адреса нод;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<password>` — пароль пользователя-администратора;
       * `<path>` — полный путь до корневого сертификата.
  </TabItem>
</Tabs>

## Подключиться к ноде группы с ролью Dashboard \{#connect-to-dashboard}

<Tabs queryString="connect-to-opensearch-dashboard">
  <TabItem value="web-interface" default>
    <TabItemLabel>
      OpenSearch Dashboards
    </TabItemLabel>

    К ноде группы с ролью Dashboard можно подключиться через веб-интерфейс OpenSearch Dashboards.

    1. Откройте в браузере страницу:

       ```
       https://<ip_address>
       ```

       Укажите `<ip_address>` — IP-адрес ноды группы с ролью Dashboard.

    2. Введите логин — `admin`.

    3. Введите пароль — задается при создании кластера. После создания пароль нельзя посмотреть в панели управления, но можно [изменить](/managed-databases/opensearch/manage-users.mdx#change-administrators-password).

    4. Чтобы проверить подключение, в консоли [Dev Tools](https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/) выполните тестовый запрос — например, посмотрите статус кластера:

       ```graphql
       GET _cluster/health
       ```

       В ответе появится информация о статусе кластера.
  </TabItem>

  <TabItem value="api">
    <TabItemLabel>
      OpenSearch API
    </TabItemLabel>

    Подключитесь к ноде группы с ролью Dashboard и проверьте подключение, выполните тестовый запрос — например, посмотрите статус кластера:

    ```curl
    curl -u 'admin:<password>' -X GET "https://<ip_address>/api/status"
    ```

    Укажите:

    * `<password>` — задается при создании кластера. После создания пароль нельзя посмотреть в панели управления, но можно [изменить](/managed-databases/opensearch/manage-users.mdx#change-administrators-password);
    * `<ip_address>` — IP-адрес ноды группы с ролью Dashboard.

    В ответе появится информация о статусе кластера.
  </TabItem>
</Tabs>

<Formbricks />
