INTEGRITY Документация

Быстрый старт

Быстро начните работу с Load Balancing. Более подробные объяснения приведены в Учебный курс.

В этом руководстве предполагается, что вы знакомы с Cloudflare Компоненты балансировки нагрузки.



Перед началом работы

Убедитесь, что вы:

Создайте монитор

Монитор с определённым интервалом отправляет запросы проверки состояния, чтобы оценить работоспособность каждой конечной точки в пул.

Когда пул становится недоступным, ваш балансировщик нагрузки исключает этот пул из ротации конечных точек.

Настройка монитора

Вы можете создать монитор в процесс работы с балансировщиком нагрузки или в Мониторы на вкладке:

  1. Перейдите в Load Balancing.

  2. Выберите Мониторы на вкладке.

  3. Выберите Создание монитора.

  4. Добавьте следующие сведения:

    • Тип: протокол, используемый для мониторов
      • Клиенты без плана Enterprise: Выберите HTTP, HTTPS, или TCP.
      • Клиенты Enterprise: Выберите HTTP, HTTPS, TCP, UDP ICMP, ICMP Ping, или SMTP.
    • Путь: путь конечной точки, на который отправляются запросы монитора
    • Порт: порт назначения для мониторов

  5. Для дополнительных настроек выберите Дополнительные настройки монитора работоспособности:

    • Интервал:
      • Увеличивая значение по умолчанию, можно улучшить время переключения при отказе, но это также может увеличить нагрузку на конечные точки.
      • Минимальное время в секундах составляет 60 (Pro), 15 (Business) и 10 (Enterprise).
    • Тайм-аут и Повторы:
      • Запрос монитора состояния вернёт статус «неисправен», если превышена длительность, указанная в Тайм-аут (и превышает эту длительность большее число раз, чем указано в параметре Повторы).
    • Ожидаемый код(-ы): ожидаемые коды ответов HTTP, перечисленные по отдельности (200, 302) или в виде диапазона (например, указав 2xx охватывал бы все коды ответов в 200 диапазон).
    • Response Body:
      • Ищет подстроку без учета регистра в теле ответа.
      • Убедитесь, что значение достаточно статично и находится в первых 10 KB HTML-страницы.
    • Simulate Zone:
    • Follow Redirects:
      • Вместо того чтобы сообщать 301 или 302 код как признак неработоспособности, запрос монитора работоспособности переходит по перенаправлениям к конечному эндпоинту.
    • Настройте заголовки запроса:
      • Полезно, если ваши конечные точки ожидают определённые входящие заголовки.
    • Header:
      • Заголовки HTTP-запроса, отправляемого монитором состояния. По умолчанию рекомендуется задавать заголовок Host. Заголовок User-Agent переопределить нельзя. Этот параметр применим только к мониторам HTTP и HTTPS.

  6. Выберите Save.

Подготовьте серверы

Убедитесь, что ваш файрвол или веб-сервер не блокирует и не ограничивает частоту запросов от настроенных мониторов состояния или запросов, связанных с IP-адреса Cloudflare ↗.

Каждый монитор работоспособности использует HTTP user-agent "Mozilla/5.0 (compatible; Cloudflare-Traffic-Manager/1.0; +https://www.cloudflare.com/traffic-manager/; pool-id: $poolid)", где $poolid представляет собой первые 16 символов связанный пул.

Настройка монитора

Полный список свойств монитора приведён в Создание монитора. Если вам нужна помощь с аутентификацией через API, см. Документация по API Cloudflare.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • Load Balancing: Monitors and Pools Write
Создание монитора
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/load_balancers/monitors" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"type": "https",
		"description": "Login page monitor",
		"method": "GET",
		"path": "/health",
		"header": {
				"Host": [
						"example.com"
				],
				"X-App-ID": [
						"abc123"
				]
		},
		"port": 8080,
		"timeout": 3,
		"retries": 0,
		"interval": 90,
		"expected_body": "alive",
		"expected_codes": "2xx",
		"follow_redirects": true,
		"allow_insecure": true,
		"consecutive_up": 3,
		"consecutive_down": 2,
		"probe_zone": "example.com"
	}'

Ответ содержит полное описание нового монитора.

Ответ
{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "id": ":monitor-id",
    "created_on": "2021-01-01T05:20:00.12345Z",
    "modified_on": "2021-01-01T05:20:00.12345Z",
    "type": "https",
    "description": "Login page monitor",
    "method": "GET",
    "path": "/health",
    "header": {
      "Host": [
        "example.com"
      ],
      "X-App-ID": [
        "abc123"
      ]
    },
    "port": 8080,
    "timeout": 3,
    "retries": 0,
    "interval": 90,
    "expected_body": "alive",
    "expected_codes": "2xx",
    "follow_redirects": true,
    "allow_insecure": true,
    "consecutive_up": 3,
    "consecutive_down": 2,
    "probe_zone": "example.com"
  }
}
Подготовьте серверы

Убедитесь, что ваш файрвол или веб-сервер не блокирует и не ограничивает частоту запросов от настроенных мониторов состояния или запросов, связанных с IP-адреса Cloudflare ↗.

Каждый монитор работоспособности использует HTTP user-agent "Mozilla/5.0 (compatible; Cloudflare-Traffic-Manager/1.0; +https://www.cloudflare.com/traffic-manager/; pool-id: $poolid)", где $poolid представляет собой первые 16 символов связанный пул.

Пример настройки монитора

Поле Значение
Тип HTTP
Путь /
Порт 80
Интервал 60
Метод GET
Тайм-аут 5 секунд
Повторы 2
Ожидаемый код(-ы) 200

Создание пулов

В Cloudflare пулы представляют собой ваши конечные точки и то, как они организованы. Так, пул может объединять несколько конечных точек, а может содержать только одну, например один исходный сервер.

Если вы знакомы с терминологией DNS, воспринимайте пул как «набор записей», с той разницей, что Cloudflare возвращает только адреса, которые считаются исправными. К отдельным пулам можно подключать мониторы для индивидуальной настройки проверки. К пулу можно подключить либо один монитор, либо группу мониторов, но не то и другое одновременно.

Вы можете создать пул в процесс работы с балансировщиком нагрузки или в Пулы на вкладке:

  1. Перейдите в Load Balancing.

  2. Выберите Пулы вкладку, а затем Создание пула.

  3. Для своего пула укажите следующие сведения:

  4. Для каждой конечной точки укажите следующие сведения:

    • Имя (должно быть уникальным)
    • Адрес конечной точки или связанное с ней имя хоста
    • (Необязательно) Виртуальная сеть. Обязательно, если у конечной точки приватный IP-адрес.
    • A Вес
    • (Необязательно) имя хоста нажав Добавьте заголовок Host
    • (Необязательно) Порт назначения, на который будет направляться трафик.
  1. Повторите этот процесс для остальных конечных точек в пуле.

  2. (Необязательно) Настройте координаты для Proximity Steering на пуле.

  3. В пуле обновите следующие сведения:

    • Порог работоспособности:

      Health Threshold обозначает количество работоспособных конечных точек, при котором пул в целом считается Исправно и получать трафик в соответствии с порядком пулов в балансировщике нагрузки. Увеличение этого числа делает пул более надёжным, но также повышает вероятность того, что он станет неработоспособным.

    • Мониторинг: подключите монитор
    • Регионы монитора работоспособности: выберите, следует ли проверять состояние пула из нескольких локациях, что повышает точность, но может привести к появлению проверочного трафика к вашей конечной точке
    • Уведомления о пуле: вы можете настроить новые оповещения (и просматривать уже существующие), чтобы получать уведомления о включении и отключении пулов, а также об изменениях в статус работоспособности.
  4. Когда завершите, выберите Save.

Полный список свойств приведён в Создание пула. Если вам нужна помощь с аутентификацией через API, см. Документация по API Cloudflare.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • Load Balancing: Monitors and Pools Write
Создание пула
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/load_balancers/pools" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "Primary data center - Provider XYZ",
		"name": "primary-dc-1",
		"enabled": false,
		"load_shedding": {
				"default_percent": 0,
				"default_policy": "random",
				"session_percent": 0,
				"session_policy": "hash"
		},
		"minimum_origins": 2,
		"monitor": "f1aba936b94213e5b8dca0c0dbf1f9cc",
		"check_regions": [
				"WEU",
				"ENAM"
		],
		"origins": [
				{
						"name": "app-server-1",
						"address": "0.0.0.0",
						"enabled": true,
						"weight": 0.56,
						"header": {
								"Host": [
										"example.com"
								]
						}
				}
		],
		"origin_steering": {
				"policy": "random"
		},
		"notification_filter": {
				"origin": {
						"disable": false,
						"healthy": null
				},
				"pool": {
						"disable": false,
						"healthy": null
				}
		}
	}'

Ответ содержит полное описание нового пула.

Ответ
{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "id": "17b5962d775c646f3f9725cbc7a53df4",
    "created_on": "2021-01-01T05:20:00.12345Z",
    "modified_on": "2021-01-01T05:20:00.12345Z",
    "description": "Primary data center - Provider XYZ",
    "name": "primary-dc-1",
    "enabled": false,
    "load_shedding": {
      "default_percent": 0,
      "default_policy": "random",
      "session_percent": 0,
      "session_policy": "hash"
    },
    "minimum_origins": 2,
    "monitor": "f1aba936b94213e5b8dca0c0dbf1f9cc",
    "check_regions": [
      "WEU",
      "ENAM"
    ],
    "origins": [
      {
        "name": "app-server-1",
        "address": "0.0.0.0",
        "enabled": true,
        "weight": 0.56,
        "header": {
          "Host": [
            "example.com"
          ]
        }
      }
    ],
    "origin_steering": {
      "policy": "random"
    },
    "notification_filter": {
      "origin": {
        "disable": false,
        "healthy": null
      },
      "pool": {
        "disable": false,
        "healthy": null
      }
    }
  }
}

После создания пула вы также захотите создать новое уведомление со следующими указанными параметрами:

"alert_type": "load_balancing_health_alert",
"filters": {
  "pool_id": <<ARRAY_OF_INCLUDED_POOL_IDS>>,
  "new_health": <<ARRAY_OF_STATUS_TRIGGERS>> ["Unhealthy", "Healthy"],
  "event_source": <<ARRAY_OF_OBJECTS_WATCHED>> ["pool", "origin"]
}

Проверьте работоспособность пула

Перед тем как направлять трафик на свои пулы, убедитесь, что пулы и мониторы настроены правильно. Статус проверки работоспособности будет unknown пока не станут доступны результаты первой проверки.

Чтобы проверить состояние пула на панели управления:

  1. Перейдите в Load Balancing.
  2. Выберите Пулы на вкладке.
  3. Для пулов и отдельных конечных точек проверьте значения в Работоспособность и Работоспособность эндпоинтов столбцы.

Подробнее о статусах состояния пулов и конечных точек см. в Как пул становится нерабочим.

Чтобы получить актуальный статус исправности всех пулов, используйте List Pools команду, обращая внимание на healthy значение для пулов и источников (эндпоинтов).

Для диагностики состояния конкретного пула используйте Сведения о состоянии пула команда.

Неожиданный статус работоспособности

Если вы замечаете, что работоспособные пулы помечаются как нерабочие:

Создание балансировщика нагрузки на тестовом поддомене

Вместо того чтобы сразу настраивать балансировщик нагрузки на рабочем домене, лучше создать его на тестовом или промежуточном домене. В зависимости от вашей инфраструктуры это может потребовать временных изменений в мониторах и пулах.

Начав с тестового домена, вы сможете убедиться, что все работает правильно, прежде чем перенаправлять на него рабочий трафик.

Чтобы создать публичный или приватный балансировщик нагрузки на панели управления:

Создание публичного балансировщика нагрузки

  1. Перейдите в Load Balancing и выберите Создать балансировщик нагрузки.

  2. На Load Balancer Setup, выберите Общедоступный балансировщик нагрузки

  3. Выберите веб-сайт, к которому нужно добавить этот балансировщик нагрузки.

  4. На Имя хоста страница:

    • Введите Имя хоста, это DNS-имя, по которому доступен балансировщик нагрузки. Подробнее о приоритете записей см. DNS-записи для балансировки нагрузки.
    • Из раздела Data Localization выберите регион который вы хотите использовать в своём домене.
    • Переключите иконку оранжевого облака, чтобы обновить режим прокси, что влияет на маршрутизацию трафика и на то, какие IP-адреса анонсируются.
    • Добавьте описание для вашего балансировщика нагрузки.
    • Если вы хотите балансировка нагрузки на основе сеансов, переключите Session Affinity переключатель.
    • Если вы хотите Adaptive Routing, переключите Adaptive Routing переключатель.
  5. Выберите Далее.

  6. На Add a Pool страница:

    • Выберите один или несколько существующих пулов или создать новый пул.
    • Если вы собираетесь установить управление трафиком к Off, измените порядок пулов в балансировщике нагрузки, чтобы настроить порядок резервного переключения.
    • При необходимости обновите Резервный пул.
    • Если вы решите установить для маршрутизации трафика значение Random, можно задать Веса (через API) вашим пулам, чтобы определить долю трафика, отправляемую на каждый пул.
  7. Выберите Далее.

  8. На Мониторы страница:

    • Просмотрите мониторы, привязанные к вашим пулам.
    • При необходимости вы можете подключить существующий монитор или создать новый монитор.
  9. Выберите Далее.

  10. На Балансировка трафика странице выберите вариант для Управление трафиком и выберите Далее.

  11. На Custom Rules странице выберите существующее правило или создать новое правило.

  12. Выберите Далее.

  13. На Проверить страница:

    • Просмотрите конфигурацию и внесите необходимые изменения.
    • Выберите, следует ли Save as Draft или Save and Deploy.

Создание приватного балансировщика нагрузки

  1. Перейдите в Load Balancing и выберите Создать балансировщик нагрузки.

  2. На Load Balancer Setup, выберите Приватный балансировщик нагрузки

  3. Свяжите балансировщик нагрузки с приватным IP-адресом Cloudflare либо с указанным IP-адресом и добавьте описание для своего балансировщика нагрузки.

  4. На Add a Pool страница:

    • Выберите один или несколько существующих пулов или создать новый пул.
    • Если вы собираетесь установить управление трафиком к Off, измените порядок пулов в балансировщике нагрузки, чтобы настроить порядок резервного переключения.
    • При необходимости обновите Резервный пул.
    • Если вы решите установить для маршрутизации трафика значение Random, можно задать Веса (через API) вашим пулам, чтобы определить долю трафика, отправляемую на каждый пул.
  5. Выберите Далее.

  6. На Мониторы страница:

    • Просмотрите мониторы, привязанные к вашим пулам.
    • При необходимости вы можете подключить существующий монитор или создать новый монитор.
  7. Выберите Далее.

  8. На Балансировка трафика странице выберите вариант для Управление трафиком и выберите Далее.

  9. Выберите Далее.

  10. На Проверить страница:

    • Просмотрите конфигурацию и внесите необходимые изменения.
    • Выберите, следует ли Save as Draft или Save and Deploy.

Полный список свойств приведён в Create Load Balancer. Если вам нужна помощь с аутентификацией через API, см. Документация по API Cloudflare.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • Load Balancers Write
Create Load Balancer
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/load_balancers" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "Load Balancer for lb.example.com",
		"name": "lb.example.com",
		"enabled": true,
		"ttl": 30,
		"fallback_pool": "17b5962d775c646f3f9725cbc7a53df4",
		"default_pools": [
				"17b5962d775c646f3f9725cbc7a53df4",
				"9290f38c5d07c2e2f4df57b1f61d4196",
				"00920f38ce07c2e2f4df50b1f61d4194"
		],
		"proxied": true,
		"steering_policy": "random_steering",
		"session_affinity": "cookie",
		"session_affinity_attributes": {
				"samesite": "Auto",
				"secure": "Auto",
				"drain_duration": 100,
				"zero_downtime_failover": "sticky"
		},
		"session_affinity_ttl": 5000,
		"adaptive_routing": {
				"failover_across_pools": true
		},
		"location_strategy": {
				"prefer_ecs": "always",
				"mode": "resolver_ip"
		},
		"random_steering": {
				"pool_weights": {
						"de90f38ced07c2e2f4df50b1f61d4194": 0.3,
						"9290f38c5d07c2e2f4df57b1f61d4196": 0.5
				},
				"default_weight": 0.2
		}
	}'

Ответ содержит полное описание нового балансировщика нагрузки.

Ответ
{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "id": "699d98642c564d2e855e9661899b7252",
    "created_on": "2021-01-01T05:20:00.12345Z",
    "modified_on": "2021-01-01T05:20:00.12345Z",
    "description": "Load Balancer for lb.example.com",
    "name": "lb.example.com",
    "enabled": true,
    "ttl": 30,
    "fallback_pool": "17b5962d775c646f3f9725cbc7a53df4",
    "default_pools": [
      "17b5962d775c646f3f9725cbc7a53df4",
      "9290f38c5d07c2e2f4df57b1f61d4196",
      "00920f38ce07c2e2f4df50b1f61d4194"
    ],
    "proxied": true,
    "steering_policy": "random_steering",
    "session_affinity": "cookie",
    "session_affinity_attributes": {
      "samesite": "Auto",
      "secure": "Auto",
      "drain_duration": 100,
      "zero_downtime_failover": "sticky"
    },
    "session_affinity_ttl": 5000,
    "random_steering": {
      "pool_weights": {
        "de90f38ced07c2e2f4df50b1f61d4194": 0.3,
        "9290f38c5d07c2e2f4df57b1f61d4196": 0.5
      },
      "default_weight": 0.2
    }
  }
}

Необязательно: просмотр аналитики балансировки нагрузки

Отправляя тестовые запросы на свой тестовый домен, проверьте аналитика балансировки нагрузки страницу, чтобы убедиться, что балансировщик нагрузки распределяет запросы так, как вы ожидали.

Маршрутизация производственного трафика

После того как балансировщик нагрузки настроен и вы убедились, что всё работает корректно, его можно подключить к реальному домену или поддомену:

  1. Если вы обновили пулы и мониторы, ещё раз проверьте работоспособность пула и убедитесь, что всё работает как ожидается.
  2. Убедитесь, что у вашего рабочего имени хоста указан правильный порядок приоритета DNS-записей и покрывается SSL/TLS-сертификат.
  3. Настройте балансировщик нагрузки на приём рабочего трафика, что можно сделать одним из следующих способов:
    • Редактирование Имя хоста вашего существующего балансировщика нагрузки.
    • Обновление CNAME запись, направляющая трафик на ваш балансировщик нагрузки.

Необязательно: дальнейшие шаги

К этому моменту ваш балансировщик нагрузки должен уже получать production-трафик (в этом можно убедиться, просмотрев аналитика).

Хотя продукт уже официально настроен, вы можете учесть следующие рекомендации.

Уведомления на основе использования

Поскольку это служба с оплата по факту использования, Cloudflare рекомендует настроить уведомления о выставлении счетов на основе использования, чтобы избежать неожиданных счетов.

Чтобы настроить эти уведомления:

  1. На панели управления Cloudflare перейдите к разделу Уведомления страницу.

    Перейдите в Уведомления ↗
  2. На Тип оповещения Оплата по фактическому использованию, нажмите Выбрать.

  3. Заполните следующую информацию:

    • Название
    • Продукт
    • Лимит уведомлений (точная метрика зависит от продукта)
    • Электронная почта для уведомлений
  4. Выберите Save.

Дополнительные параметры настройки

Возможно, вы захотите дополнительно настроить маршрутизацию трафика в балансировщике нагрузки или интегрировать его с другими продуктами Cloudflare: