> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Настройка частной сети для BYOC на Azure

> Настройка пиринга VNet или Private Link для BYOC на Azure

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

ClickHouse BYOC on Azure поддерживает два варианта частного подключения: [пиринг виртуальных сетей Azure](https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview) и [Azure Private Link](https://learn.microsoft.com/azure/private-link/private-link-overview). Оба варианта обеспечивают передачу трафика по магистральной сети Azure без выхода в публичный интернет.

<div id="common-prerequisites">
  ## Предварительные требования
</div>

Общие шаги, необходимые как для пиринга VNet, так и для Private Link.

<div id="step-enable-private-load-balancer-for-clickhouse-byoc">
  ### Включите частный балансировщик нагрузки для ClickHouse BYOC
</div>

В консоли ClickHouse Cloud включите **Частный балансировщик нагрузки** для инфраструктуры BYOC. Оба варианта подключения проходят через этот внутренний load balancer, поэтому ни один из них не будет работать, пока он не включен.

<Image img="https://mintcdn.com/private-7c7dfe99/opz1Ra3A0XYGQQzH/images/cloud/reference/byoc-private-load-balancer-azure.webp?fit=max&auto=format&n=opz1Ra3A0XYGQQzH&q=85&s=c04fb293d7b6d74dec045371674c30a3" size="md" alt="BYOC: включение Частного балансировщика нагрузки" border width="1435" height="1096" data-path="images/cloud/reference/byoc-private-load-balancer-azure.webp" />

Запишите **Spoken name** инфраструктуры. ClickHouse развертывает инфраструктуру BYOC в вашей собственной подписке Azure, в управляемой группе ресурсов с именем `clickhouse-cloud-<spoken-name>-default`. В этой группе ресурсов вы найдете VNet BYOC на следующих шагах.

<div id="azure-vnet-peering">
  ## Настройка пиринга VNet
</div>

Перед началом ознакомьтесь с [пирингом виртуальных сетей Azure](https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview) и его [требованиями и ограничениями](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering#requirements-and-constraints). ClickHouse BYOC использует частный балансировщик нагрузки для обеспечения сетевого подключения к сервисам ClickHouse через пиринг.

<Note>
  Приведённые шаги подходят для простого сценария: одна из ваших VNet напрямую связана пирингом с VNet BYOC. Для расширенных сценариев, таких как топологии «хаб и лучи» или подключение из собственной инфраструктуры, требуются дополнительные изменения — см. раздел [Ограничения](#vnet-peering-limitations).
</Note>

<div id="vnet-peering-prerequisites">
  ### Дополнительные требования для настройки пиринга
</div>

**Неперекрывающиеся адресные пространства.** Виртуальные сети, объединяемые пирингом, не могут иметь перекрывающиеся диапазоны IP-адресов. Сравните адресное пространство вашей VNet с адресным пространством VNet BYOC, указанным на странице **Overview** VNet BYOC на портале Azure. Если они перекрываются, используйте Private Link.

**Разрешения.** Для создания пиринга необходимы разрешения `Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write` и `Microsoft.Network/virtualNetworks/peer/action` для *обеих* виртуальных сетей. Встроенная роль **Network Contributor** включает эти разрешения. См. [разрешения для пиринга виртуальных сетей](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering#permissions).

<Steps>
  <Step title="Создайте пиринг из виртуальной сети BYOC" id="step-1-create-peering-from-byoc-vnet">
    1. Войдите на [портал Azure](https://portal.azure.com) и переключитесь на **подписку BYOC**.
    2. Найдите **Virtual networks** и выберите VNet BYOC в группе ресурсов `clickhouse-cloud-<spoken-name>-default`.
    3. В разделе **Settings** выберите **Peerings**, затем **+ Add**.

    <Image img="https://mintcdn.com/private-7c7dfe99/q1j8AEITpaXZR_oV/images/cloud/reference/byoc-vnetpeering-azure-1.webp?fit=max&auto=format&n=q1j8AEITpaXZR_oV&q=85&s=9f60b83a7702af6f2e978eac6caf729e" size="lg" alt="BYOC Создание пиринга VNet" border width="3126" height="1556" data-path="images/cloud/reference/byoc-vnetpeering-azure-1.webp" />

    4. Заполните обе части настройки пиринга:

    <Image img="https://mintcdn.com/private-7c7dfe99/q1j8AEITpaXZR_oV/images/cloud/reference/byoc-vnetpeering-azure-2.webp?fit=max&auto=format&n=q1j8AEITpaXZR_oV&q=85&s=bfa7f148087df37b85d30a53896b7984" size="md" alt="BYOC Настройка пиринга VNet" border width="1326" height="1965" data-path="images/cloud/reference/byoc-vnetpeering-azure-2.webp" />

    5. Нажмите **Add**.
  </Step>

  <Step title="Создайте обратный пиринг, если он не был создан автоматически" id="step-2-create-reverse-peering">
    Пиринг Azure состоит из двух частей — по одной в каждом направлении, — и трафик не передаётся, пока не созданы обе. Если на предыдущем шаге портал создал обе части, пропустите этот шаг.

    Если была создана только часть со стороны BYOC — поскольку ваша VNet находится в другой подписке или тенанте, — её состояние будет **Initiated**. Создайте соответствующую часть из своей VNet:

    1. Переключитесь на подписку, которой принадлежит ваша VNet, и войдите под аккаунтом с ролью **Network Contributor** для этой VNet.
    2. Выберите свою VNet, затем **Peerings** → **+ Add**.
    3. Выберите **I know my resource ID**, вставьте **Resource ID VNet BYOC** и выберите **Directory**, которому принадлежит подписка BYOC. При появлении запроса выберите **Authenticate**.
    4. Выберите **Add**.
  </Step>

  <Step title="Убедитесь, что обе части подключены" id="step-3-verify-peering">
    Откройте **Peerings** в любой из виртуальных сетей. В поле **Peering status** с обеих сторон должно отображаться **Connected**. Если часть остаётся в состоянии **Initiated**, значит соответствующая ей часть отсутствует; если отображается **Disconnected**, значит соответствующая часть была удалена.

    Изменять таблицы маршрутизации не требуется. Azure автоматически устанавливает системные маршруты для адресного пространства пиринговых сетей с обеих сторон. Это можно проверить на любом сетевом интерфейсе в вашей VNet в разделе **Effective routes**: адресное пространство BYOC отображается с типом следующего перехода **VNet peering**.

    <Image img="https://mintcdn.com/private-7c7dfe99/q1j8AEITpaXZR_oV/images/cloud/reference/byoc-vnetpeering-azure-3.webp?fit=max&auto=format&n=q1j8AEITpaXZR_oV&q=85&s=2c88e1adaa1a9f5edcfa345da952a467" size="lg" alt="BYOC Проверка пиринга VNet" border width="2165" height="1505" data-path="images/cloud/reference/byoc-vnetpeering-azure-3.webp" />
  </Step>

  <Step title="Разрешите доступ из пиринговой VNet через группу безопасности сети" id="step-4-allow-address-space-through-nsg">
    Подсети BYOC защищены управляемой ClickHouse [группой безопасности сети](https://learn.microsoft.com/azure/virtual-network/network-security-groups-overview), которая по умолчанию запрещает внутренний трафик VNet. Поскольку [тег службы `VirtualNetwork`](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) охватывает адресное пространство пиринговых VNet, трафик, поступающий через пиринг, отбрасывается, пока не будет добавлено входящее разрешающее правило.

    Обратитесь в ClickHouse Support, чтобы запросить добавление входящих правил для диапазонов CIDR вашей пиринговой VNet. Без этого шага пиринг будет отображаться как **Connected**, но при подключении будет возникать тайм-аут.
  </Step>

  <Step title="Получите доступ к сервису ClickHouse через пиринг" id="step-5-access-ch-service-via-peering">
    Для частного доступа к ClickHouse предоставляются частный балансировщик нагрузки и конечная точка, обеспечивающие защищённое подключение из вашей пиринговой VNet. Формат частной конечной точки соответствует формату публичной конечной точки с суффиксом `-private`. Например:

    * **Публичная конечная точка**: `h5ju65kv87.mhp0y4dmph.westus3.azure.clickhouse-byoc.com`
    * **Частная конечная точка**: `h5ju65kv87-private.mhp0y4dmph.westus3.azure.clickhouse-byoc.com`
  </Step>
</Steps>

<div id="vnet-peering-limitations">
  ### Ограничения
</div>

**Пиринг не транзитивен.** Доступ к вашим сервисам имеет только VNet, напрямую связанная пирингом с VNet BYOC. Клиенты в VNet-спице за хабом, а также клиенты в собственной инфраструктуре, подключающиеся через ExpressRoute или VPN-шлюз, не получают доступ через один пиринг. Для таких топологий требуется дополнительная настройка, например **Разрешить перенаправленный трафик** и транзит через шлюз — см. [шлюзы и подключение к локальной инфраструктуре](https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview#gateways-and-on-premises-connectivity) — либо используйте Private Link.

**Межрегиональный пиринг работает, но стоит дороже.** Пиринг между VNet в разных регионах является глобальным пирингом. Доступ к ClickHouse через него работает как обычно: частный балансировщик нагрузки BYOC — это внутренний балансировщик нагрузки Standard SKU, а ограничение Azure на доступ к внешним интерфейсам балансировщика нагрузки через глобальный пиринг распространяется только на балансировщики нагрузки Basic SKU. Однако при этом увеличиваются задержка кругового пути и [расходы на межрегиональную передачу данных](https://azure.microsoft.com/pricing/details/virtual-network). Для рабочих нагрузок, чувствительных к задержкам, предпочтителен пиринг в одном регионе. Если межрегиональный пиринг отображается как **Connected**, но подключения по-прежнему не устанавливаются, причина не в регионе — чаще всего отсутствует правило входящей группы безопасности сети для вашего адресного пространства. В этом случае обратитесь в ClickHouse Support.

**Изменения адресного пространства требуют повторной синхронизации.** Если после создания пиринга вы изменили размер адресного пространства VNet, [синхронизируйте пиринг](https://learn.microsoft.com/azure/virtual-network/update-virtual-network-peering-address-space), чтобы объявить новые диапазоны, и обратитесь в ClickHouse Support, чтобы расширить правило входящей группы безопасности сети и включить их.

**Трафик через пиринг тарифицируется.** Azure взимает плату за входящий и исходящий трафик через пиринг. См. [цены на виртуальные сети](https://azure.microsoft.com/pricing/details/virtual-network).

<div id="delete-vnet-peering">
  ### Удаление пиринга
</div>

Удалите пиринг с любой стороны. Удаление одной из его частей разрывает соединение, а другая остаётся в состоянии **Disconnected**, поэтому для полной очистки удалите обе части. См. [удаление пиринга](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering#delete-a-peering).

<div id="setup-privatelink">
  ## Настройка Azure Private Link
</div>

Azure Private Link обеспечивает безопасное частное подключение к вашим сервисам ClickHouse BYOC. Весь трафик передаётся внутри сети Azure и не проходит через публичный интернет.

<Steps>
  <Step title="Включите Private Link в консоли ClickHouse" id="step-1-enable-private-link">
    <Note>
      В качестве предварительного условия убедитесь, что **приватный балансировщик нагрузки** включён.
    </Note>

    <Image img="https://mintcdn.com/private-7c7dfe99/_Wm1iA2BOg7clsCl/images/cloud/reference/byoc-privatelink.webp?fit=max&auto=format&n=_Wm1iA2BOg7clsCl&q=85&s=d3a063f250ac548a25ab7e323ea24cd9" size="md" alt="Включение BYOC PrivateLink" border width="2800" height="1848" data-path="images/cloud/reference/byoc-privatelink.webp" />
  </Step>

  <Step title={<>Получите <code>Service name</code> конечной точки</>} id="step-2-obtain-endpoint-service-name">
    1. В консоли ClickHouse Cloud перейдите на страницу Settings сервиса, к которому вы хотите подключиться через Private Link.
    2. Нажмите «Set up private endpoint».
    3. В открывшейся выдвижной панели скопируйте значения `Service name` (псевдоним сервиса Private Link) и `DNS-имя` — они понадобятся на следующих шагах. (После включения Private Link генерация этих значений может занять некоторое время.)
           <Image img="https://mintcdn.com/private-7c7dfe99/5su3gw1SIJE0qay9/images/cloud/security/azure-privatelink-pe-create.webp?fit=max&auto=format&n=5su3gw1SIJE0qay9&q=85&s=f650cb45d35bda7e72386027c94a2133" size="md" alt="Частные конечные точки" border width="1898" height="918" data-path="images/cloud/security/azure-privatelink-pe-create.webp" />
  </Step>

  <Step title="Создайте частную конечную точку в вашей сети" id="step-3-create-endpoint">
    1. Откройте свой **Azure Portal** (то есть подписку Azure, в которой размещено ваше клиентское приложение) → **Network Foundation** → **Private endpoints** → **Create**.
    2. На вкладке **Basics** выберите подписку, группу ресурсов, имя и регион для частной конечной точки. Регион должен совпадать с регионом VNet, из которой подключается ваше клиентское приложение.
           <Image img="https://mintcdn.com/private-7c7dfe99/5su3gw1SIJE0qay9/images/cloud/security/azure-pe-create-basic.webp?fit=max&auto=format&n=5su3gw1SIJE0qay9&q=85&s=fab48a5216c31538c13758e70fb669b4" size="md" alt="Создание частной конечной точки: основные параметры" border width="784" height="923" data-path="images/cloud/security/azure-pe-create-basic.webp" />
    3. На вкладке **Resource** выберите **Connect to an Azure resource by resource ID or alias** и введите `Service name`, полученное на предыдущем шаге.
           <Image img="https://mintcdn.com/private-7c7dfe99/5su3gw1SIJE0qay9/images/cloud/security/azure-pe-resource.webp?fit=max&auto=format&n=5su3gw1SIJE0qay9&q=85&s=910da72d9890bb9e6acf0d318951444c" size="md" alt="Выбор ресурса частной конечной точки" border width="1122" height="911" data-path="images/cloud/security/azure-pe-resource.webp" />
    4. На вкладке **Virtual Network** выберите виртуальную сеть и подсеть, в которых будет создана частная конечная точка. При необходимости добавьте группу безопасности приложений, чтобы фильтровать трафик к частной конечной точке.
           <Image img="https://mintcdn.com/private-7c7dfe99/5su3gw1SIJE0qay9/images/cloud/security/azure-pe-create-vnet.webp?fit=max&auto=format&n=5su3gw1SIJE0qay9&q=85&s=2a27bbea4d16466ae9e946863ceca6bc" size="md" alt="Выбор виртуальной сети для частной конечной точки" border width="1056" height="917" data-path="images/cloud/security/azure-pe-create-vnet.webp" />
    5. Перейдите по оставшимся вкладкам и нажмите **Create**. **Connection status** созданной частной конечной точки будет иметь значение **Pending**, пока на следующих шагах вы не добавите её `Resource ID` в список разрешённых для сервиса ClickHouse.
    6. Откройте сетевой интерфейс, связанный с частной конечной точкой, и скопируйте **Private IPv4 address** — он понадобится на этапе настройки DNS.
           <Image img="https://mintcdn.com/private-7c7dfe99/5su3gw1SIJE0qay9/images/cloud/security/azure-pe-ip.webp?fit=max&auto=format&n=5su3gw1SIJE0qay9&q=85&s=e5ee6a31ba1f1f43cbe12b16377ea35a" size="lg" alt="IP-адрес частной конечной точки" border width="1155" height="621" data-path="images/cloud/security/azure-pe-ip.webp" />
  </Step>

  <Step title={<>Добавьте <code>Resource ID</code> частной конечной точки в список разрешённых для сервиса ClickHouse</>} id="step-4-add-endpoint-id-to-services-allow-list">
    Чтобы получить Resource ID частной конечной точки, откройте созданную ранее частную конечную точку в Azure Portal, нажмите **JSON View** и скопируйте поле `id` верхнего уровня (**Resource ID**, отображаемый в верхней части представления, в формате `/subscriptions/.../providers/Microsoft.Network/privateEndpoints/<name>`). Не используйте вложенные поля `id` внутри объекта `properties`:

    <Image img="https://mintcdn.com/private-7c7dfe99/5su3gw1SIJE0qay9/images/cloud/security/azure-pe-resource-id.webp?fit=max&auto=format&n=5su3gw1SIJE0qay9&q=85&s=e90839650dd0f482b0f92c44f982e968" size="lg" alt="Resource ID частной конечной точки" border width="1704" height="1824" data-path="images/cloud/security/azure-pe-resource-id.webp" />

    1. В консоли ClickHouse Cloud перейдите на страницу Settings сервиса, к которому требуется подключиться через Private Link.
    2. Нажмите "Set up private endpoint".
    3. В открывшейся выдвижной панели укажите полученный выше `Resource ID` в поле `Endpoint ID` и при необходимости добавьте описание.
    4. Нажмите "Create endpoint".

    <Note>
      Чтобы разрешить доступ через существующее подключение Private Link, воспользуйтесь выпадающим списком существующих конечных точек.
      В нём отображаются существующие подключения Private Link к сервисам в той же инфраструктуре.
    </Note>

    <Image img="https://mintcdn.com/private-7c7dfe99/5su3gw1SIJE0qay9/images/cloud/security/azure-privatelink-pe-filter.webp?fit=max&auto=format&n=5su3gw1SIJE0qay9&q=85&s=6d63219782a1c14f2196d4fdaeebad56" size="md" alt="Фильтр частных конечных точек" border width="1898" height="918" data-path="images/cloud/security/azure-privatelink-pe-filter.webp" />

    <Note>
      Ручное подтверждение в Azure Portal не требуется: после добавления `Resource ID` в список разрешённых подключение к конечной точке подтверждается автоматически, а его `LinkID` автоматически добавляется в Istio `AuthorizationPolicy` для сервиса ClickHouse. **Статус подключения** частной конечной точки в вашей подписке изменится на **Approved**.
    </Note>
  </Step>

  <Step title="Задайте частное DNS-имя для конечной точки" id="step-5-set-private-dns-name-for-endpoint">
    <Note>
      DNS можно настроить разными способами. Настройте его в соответствии с вашим сценарием использования.
    </Note>

    Необходимо направить все поддомены (wildcard) "DNS-имени" (всё, что следует после ID сервиса, например `privatelink.mhp0y4dmph.westus3.azure.clickhouse-byoc.com`) на IP-адрес частной конечной точки. Это гарантирует, что сервисы и компоненты в вашей VNet смогут корректно разрешать это имя. Типичная настройка с использованием Azure Private DNS:

    1. [Создайте зону Private DNS](https://learn.microsoft.com/en-us/azure/dns/private-dns-getstarted-portal) с именем, соответствующим "DNS-имени" без начального ID сервиса, например `privatelink.mhp0y4dmph.westus3.azure.clickhouse-byoc.com`.
    2. В зоне создайте набор записей с wildcard: для **Name** укажите `*`, а в поле **IP Address** введите ранее скопированный IP-адрес частной конечной точки.
    3. [Свяжите зону Private DNS с вашей виртуальной сетью](https://learn.microsoft.com/en-us/azure/dns/private-dns-getstarted-portal#link-the-virtual-network), чтобы клиенты в VNet могли разрешать имена в этой зоне.

    Проверьте настройку DNS с хоста в вашей VNet: "DNS-имя" должно разрешаться в IP-адрес частной конечной точки:

    ```bash theme={null}
    nslookup h5ju65kv87.privatelink.mhp0y4dmph.westus3.azure.clickhouse-byoc.com
    ```
  </Step>

  <Step title="Доступ к экземпляру через Private Link" id="step-6-connect-via-privatelink">
    1. В консоли ClickHouse Cloud перейдите на страницу Settings сервиса.
    2. Нажмите "Set up private endpoint".
    3. В открывшейся выдвижной панели скопируйте `DNS-имя`.
           <Image img="https://mintcdn.com/private-7c7dfe99/5su3gw1SIJE0qay9/images/cloud/security/azure-privatelink-pe-dns.webp?fit=max&auto=format&n=5su3gw1SIJE0qay9&q=85&s=119bbe26574ec0e4561292ab179ff327" size="md" alt="DNS-имя частной конечной точки" border width="1898" height="918" data-path="images/cloud/security/azure-privatelink-pe-dns.webp" />
           <Note>
             Доступ к сервисам ClickHouse через Private Link регулируется политикой **Istio Authorization Policy** на уровне сервиса, которой ClickHouse управляет в вашей инфраструктуре BYOC.
           </Note>
  </Step>
</Steps>
