Премиальное программное обеспечение и практические уроки
Использование Cloudflare Workers для разгрузки сайта
Как использовать Cloudflare Workers 进行Балансировка нагрузки, Работники Cloudflare Конфигурация перенаправления трафика на сайт, Примеры кода балансировки нагрузки Cloudflare Workers, Реализовать распределение трафика на основе веса, Мониторинг и оптимизация производительности Cloudflare Workers!
Cloudflare Workers — это мощная серверная среда выполнения JavaScript, позволяющая запускать собственный код в периферийной сети Cloudflare. С помощью Cloudflare Workers вы можете гибко управлять трафиком веб-сайта, перенаправлять трафик и балансировать нагрузку. В этой статье рассказывается, как использовать Cloudflare Workers дляВеб-сайт перенаправлениязагрузку, улучшение стабильности и производительности сайта.
1. Создание воркера Cloudflare
- Зарегистрируйтесь и войдите в систему: Сначала вам необходимо зарегистрироваться и войти в свою учетную запись на официальном сайте Cloudflare.
- Создание работника: На панели управления Cloudflare выберите раздел «Воркеры» и нажмите кнопку «Создать сервис». Дайте имя вашему воркеру и создайте сервис.
- Написание кода: Вы можете написать свой код Worker в онлайн-редакторе Cloudflare или разработать его с использованием локальной среды разработки и развернуть в Cloudflare.
2. Реализация базовой балансировки нагрузки
Написание кода балансировки нагрузкиВ коде Worker вы можете использовать JavaScript для реализации базовой балансировки нагрузки. Вот простой пример, распределяющий трафик между несколькими серверами:
const BACKENDS = [ 'https://backend1.example.com', 'https://backend2.example.com', 'https://backend3.example.com' ]; addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { const url = new URL(request.url); const backend = BACKENDS[Math.floor(Math.random() * BACKENDS.length)]; url.hostname = new URL(backend).hostname; return fetch(url.toString(), request); }
Этот фрагмент кода будет случайным образом распределять запросы
Бэкэнды
Различные внутренние серверы в массиве.Настройка правил маршрутизацииНа странице конфигурации Cloudflare Workers настройте правила маршрутизации, чтобы указать, какие запросы должны использовать созданный вами Worker. Вы можете настроить эти правила на основе пути, имени хоста или других атрибутов запроса.
3. Реализация балансировки нагрузки на основе веса
Установка весовЕсли вы хотите распределить трафик в соответствии с определёнными весами, вы можете изменить приведённый выше код, чтобы использовать веса для определения распределения запросов. Ниже приведён пример:
const BACKENDS = [ { url: 'https://backend1.example.com', вес: 1 }, { url: 'https://backend2.example.com', вес: 3 }, { url: 'https://backend3.example.com', вес: 1 } ]; addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); }); асинхронная функция handleRequest(request) { const url = new URL(request.url); const backend = getWeightedBackend(); url.hostname = new URL(backend.url).hostname; return fetch(url.toString(), request); } function getWeightedBackend() { let totalWeight = BACKENDS.reduce((sum, backend) => sum + backend.weight, 0); let random = Math.random() * totalWeight; for (let backend of BACKENDS) { if (random < backend.weight) { return backend; } random -= backend.weight; } }
Этот код выбирает внутренний сервер в соответствии с указанным весом, тем самым достигая взвешенного распределения трафика.
4. Мониторинг и оптимизация
- Мониторинг производительности труда работников: используйте аналитические инструменты Cloudflare для мониторинга производительности Worker, включая время ответа на запрос, частоту ошибок и т. д. Эти данные помогут вам скорректировать стратегию балансировки нагрузки для оптимизации производительности.
- Оптимизировать код: Оптимизируйте код Worker на основе результатов мониторинга, чтобы обеспечить эффективную и стабильную балансировку нагрузки.
5. Тестирование и развертывание
- Тестирование работников: Перед развертыванием проверьте функциональность Worker с помощью инструментов тестирования Cloudflare, чтобы убедиться, что все работает так, как и ожидалось.
- Развертывание в производство: После успешного прохождения теста разверните Worker в производственной среде и настройте его в соответствии с дорожной ситуацией.
Практическое руководство по Cloudflare Workers
После размещения доменного имени на платформе Cloudflare Cloudflare Workers используется для балансировки нагрузки доменного имени веб-сайта.
Вот несколько стратегий перенаправления ресурсов:
- DNS-циклический перебор
- Платформы с открытым исходным кодом, такие как Nginx и Apache
- Услуги загрузчика, предоставляемые крупнейшими облачными провайдерами и т. д.
- КНД
Сначала я хотел попробовать услугу Smart DNS от Cloudflare, но она была платной ($5/мес), поэтому я решил попробовать ее с Cloudflare Workers.
Зарегистрируйте учетную запись Cloudflare
- Идти Cloudflare Зарегистрируйтесь и откройте учетную запись, а также разместите доменное имя на CF.
- Добавление записи CNAME позволит
a.aaa.com
Преобразовать в IP-адрес сервера A - Добавление записи A позволит
b.aaa.com
Преобразовать в IP-адрес сервера B - SSL/TLS включает полный строгий режим
- (должен) Включить прокси (Xiaoju Cloud) в записях DNS
Создание рабочих
- Перейти к разделу «Работники и страницы»
- выбирать
Создать заявку
- Вставьте следующий код
addEventListener('fetch', event => {event.respondWith(handleRequest(event.request)) }) // Опрос целевой службы const TARGETS = [ 'a.aaa.com', 'b.aaa.com' ] async function handleRequest(request) {const url = new URL(request.url) url.hostname = getRandomServer() return await fetch(url, request) } // Переключение разных целей каждый час function getServerEveryHour() {const d = new Date() const h = d.getHours() return TARGETS[h%TARGETS.length] } // Случайная цель каждый раз (обратите внимание на наличие кросс-доменных целей) function getRandomServer() {return TARGETS[Math.floor(Math.random() * TARGETS.length)] }
- Сохранить и развернуть
Использование Workers
- Просмотрите недавно созданный Worker и выберите триггер на странице сведений.
- В маршрутизацииЩелчок по интерфейсуДобавление маршрутов
- Маршрут: по желанию
aaa.com
, можно использовать подстановочные знаки.Конкретные видимые - Выберите область, которую вы только что создали.
aaa.com
- Маршрут: по желанию
проверять
Щелкните в правом верхнем углу страницы конфигурации Workers, которую вы только что создали, чтобы редактировать, отлаживать и просматривать код JavaScript.
Измените этот код, чтобы проверить эффективность переадресации:
// Опрос целевой службы const TARGETS = [ 'a.aaa.com', 'b.aaa.com' ]
Обновите страницу, и иногда вы обнаружите, что она загружается на a.aaa.com, что означает, что конфигурация эффективна!