Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / consul / consulcluster

.docx
Скачиваний:
4
Добавлен:
29.11.2024
Размер:
93.61 Кб
Скачать

Доклад на тему

«Consul cluster»

Введение.

В современных приложениях часто используется микросервисная архитектура, где каждый компонент работает независимо, но все они должны взаимодействовать друг с другом. Чтобы гарантировать, что все сервисы могут найти друг друга, правильно работать и автоматически обновляться, нужна система для управления этими сервисами. Проблемы, с которыми сталкиваются без такой системы:

  • Трудности с масштабированием — когда появляется новый сервис, нужно вручную обновлять конфигурации и настройки.

  • Ошибки и сбои — без автоматического мониторинга сервисы могут выйти из строя, и система не заметит это вовремя.

  • Устаревшие конфигурации — без централизованного хранилища настроек сервисы могут работать с неверными данными.

  • Медленное реагирование на изменения — в больших системах обновления вручную занимают много времени.

Consul — это инструмент с открытым исходным кодом от HashiCorp, предназначенный для решения этих задач. Он предоставляет способы для обнаружения сервисов, управления конфигурациями, а также для обеспечения высокой доступности и надежности через использование кластеров.

Что было до Consul Cluster?

До появления таких инструментов как Consul Cluster задачи решались менее эффективно и с большим количеством ручных операций. Ранее для этого часто использовались такие инструменты, как:

  • DNS-системы — для поиска сервисов, но они не подходят для динамично изменяющейся инфраструктуры.

  • Apachi Zookeeper — для координации сервисов, но с ним сложно работать.

  • Etcd — для хранения конфигураций, но он тоже не так удобен для всей инфраструктуры.

Consul был создан, чтобы решить эти проблемы более гибко и масштабируемо. Он предоставляет все необходимые функции: сервисную регистрацию, обнаружение, мониторинг и управление конфигурациями.

Consul cluster.

Consul Cluster — это многофункциональная система для управления конфигурациями и сервисами, используемая в современных микросервисных архитектурах и контейнеризованных приложениях. Она решает несколько важных задач:

  • Обнаружение сервисов (Service Discovery): позволяет приложениям находить друг друга через централизованный каталог сервисов. Это особенно важно в средах с динамическим масштабированием (например, в облаке или при использовании Kubernetes).

  • Управление конфигурациями (Configuration Management): хранение и распределение конфигураций для различных компонентов системы, что позволяет менять параметры конфигурации без перезагрузки сервисов.

  • Здоровье сервисов (Health Checking): мониторинг состояния сервисов и компонентов, что помогает автоматически исключать из работы неработающие сервисы.

  • Межсервисная связь (Service Mesh): предоставление механизмов для связи между сервисами, включая шифрование трафика и управление доступом.

Consul Cluster — это группа серверов, которая работает совместно для обеспечения надежности и масштабируемости системы. Кластер обеспечивает хранение данных (например, конфигурации или состояния сервисов) с репликацией и синхронизацией между несколькими серверами.

Концептуально кластер Consul состоит из двух типов узлов:

  • Consul серверы - это специальные компьютеры, которые работают с программой Consul, которая обеспечивает сетевое взаимодействие между сервисами.

  • Агенты - это программы, которые работают на тех же компьютерах, что и сервисы, и регистрируют их в кластере Consul.

Серверы в кластере используют алгоритм Raft для синхронизации данных и обеспечения консенсуса. Это позволяет системе оставаться согласованной, даже если один или несколько серверов выйдут из строя. Серверы и агенты обмениваются информацией о состоянии сервисов с помощью протокола gossip, который гарантирует быструю и надежную синхронизацию данных.

Практическая часть:

Работа через Docker-образ

Образ docker использую потому что Сonsul под санкциями и нашел способ запустить через контейнеры (т.е временный Consul)

1.интерфейс

Обзор

Панель управления Consul предоставляет пользователю обзор состояния кластера, включая информацию о серверах, узлах и сервисах, работающих в системе. В данный момент он не доступен т.к я работаю через Docker-образ

Сервисы

Раздел отображает все сервисы, доступные в кластере. Пользователь может просматривать список активных и неактивых сервисов, их статус и метаданные, а также управлять их конфигурацией.

Узлы

Здесь отображается информация о всех узлах (нодах) в кластере и их состояние

Ключи/Значения

Consul поддерживает систему хранения ключей и значений. Этот раздел позволяет просматривать и управлять хранимыми данными, которые могут быть использованы для конфигурации сервисов или хранения метаданных.

Намерения

Намерения — это правила, которые определяют, как сервисы могут взаимодействовать друг с другом. (не работает)

Управление доступом

В этом разделе настроек можно управлять правами доступа в Consul:

Токены

Токены используются для аутентификации и авторизации в Consul. С помощью токенов можно ограничить доступ к ресурсам и операциям на основе ролей и политик.

Политики

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

Роли

Роли в Consul позволяют группировать пользователей и сервисы, определяя, какие действия они могут выполнять в рамках определенных политик.

Методы аутентификации

Здесь настраиваются различные способы аутентификации для пользователей и сервисов, включая использование токенов и других

Организация

Этот раздел посвящен управлению взаимодействием между различными кластерами и узлами.

Пиры

Список всех пиров (других экземпляров Consul), с которыми соединен ваш кластер. Это позволяет видеть, как каждый узел взаимодействует с другими, а также выполнять операции синхронизации и репликации данных.

2.Установка и настройка контейнеров

Установка Consul Cluster с помощью Docker (т.к программа заблокирована на территории РФ)

sudo apt update

sudo apt install docker.io

добавлю узел в контейнер

sudo docker run -d --name=consul-server-33 -e CONSUL_BIND_INTERFACE=eth0 -e CONSUL_CLIENT_INTERFACE=eth0 -p 8533:8500 -p 8633:8600/udp hashicorp/consul:1.15.0 consul agent -data-dir=/consul/data -node=agent -join=172.17.0.2 -client=0.0.0.0

пояснение:

-d: Запуск в фоне.

--name=consul-server-33: Присваивает имя контейнеру.

Команда -e CONSUL_BIND_INTERFACE=eth0 Использует интерфейс eth0 для подключения к другим сервисам

команда -e CONSUL_CLIENT_INTERFACE=eth0 Устанавливает интерфейс для обработки запросов от клиентов.

команда -p 8533:8500 Открывает порт 8533 на хосте для доступа к интерфейсу и API Consul

Команда -p 8633:8600/udp: Прокси-порт для DNS-сервиса Consul через порт 8633

команда -data-dir=/consul/data Указывает директорию для хранения данных

Команда -node=agent Устанавливает имя узла (агента)

Команда -join=172.17.0.2 Подключается к кластеру по адресу 172.17.0.2

Команда -client=0.0.0.0 Разрешает подключение от любых клиентов

Освободить память (если вдруг есть контейнер с таким же названием)

sudo docker rm -f consul-server-33

Запустим первый сервер в кластере. Это будет основой для всех других узлов.

sudo docker run -d \

--name=consul-server-1 \

-e CONSUL_BIND_INTERFACE=eth0 \

-p 8500:8500 \

-p 8600:8600/udp \

hashicorp/consul:1.15.0 \

consul agent -server -data-dir=/consul/data -bind=0.0.0.0 -client=0.0.0.0 -bootstrap-expect=3

-ui=true

команда -server указывает, что этот контейнер будет сервером в кластере

команда -bootstrap-expect=3 указывает, что кластер ожидает 3 сервера

команда -bind=0.0.0.0 позволяет привязать Consul к любому IP

команда -client=0.0.0.0 позволяет доступ к Consul API с любого устройства

Теперь запускаем еще два сервера, которые будут частью кластера:

sudo docker run -d \

--name=consul-server-33 \

-e CONSUL_BIND_INTERFACE=eth0 \

-p 8533:8500 \

-p 8633:8600/udp \

hashicorp/consul:1.15.0 \

consul agent -server -data-dir=/consul/data -bind=0.0.0.0 -client=0.0.0.0 -join=172.17.0.1

sudo docker run -d \

--name=consul-server-3 \

-e CONSUL_BIND_INTERFACE=eth0 \

-p 8502:8500 \

-p 8602:8600/udp \

hashicorp/consul:1.15.0 \

consul agent -server -data-dir=/consul/data -bind=0.0.0.0 -client=0.0.0.0 -join=172.17.0.1

проверяем наличие узлов в контейнерах в консоли

sudo docker ps (если контейнер есть в списке то ок)

команда которая выводит лидера кластера

curl http://localhost:8500/v1/status/leader

3.настройка ключей

работа с ключами доступа

curl --request PUT --data 'my_value' http://localhost:8500/v1/kv/my_key2

получим ключ

curl http://localhost:8500/v1/kv/my_key2

или можно создать в графическом интерфейсе

Откройте вкладку Key/Value и создайте пару ключ-значение на сервере.

На клиенте выполните запрос к серверу через консоль:

curl http://localhost:8500/v1/kv/hello (можно посмотреть ключ)

4.Проверка подключений

Тут видно все узлы и их состояние

5. Проверки

Логи: sudo docker logs consul-server-1

Обзор узлов: consul agent -server -data-dir=/consul/data -join=172.17.0.2 (недоступна т.к у меня образ)

Вывод

В результате работы мы рассмотрели историю создания Consul claster, а также разобрались с функционалом и назначением этой программы. Наглядно изучили механизмы работы программы в графическом интерфейсе

Список литературы

1)документация Consul - https://developer.hashicorp.com/consul/docs

2)Туториалы Consul - https://developer.hashicorp.com/consul/tutorials

3)git (работа с Raft) - https://raft.github.io/

4) git (Consul) - https://github.com/hashicorp/consul

5)habr (Consul) - https://habr.com/ru/articles/278085/

6) установка и настройка - https://luxmsbi.com/docs/guides/sysadm-guide/appendix/dbcluster/

Соседние файлы в папке consul