Linkerd обеспечивает современную сетку серверов в Kubernetes

Опубликовано: 4 Марта, 2023
Linkerd обеспечивает современную сетку серверов в Kubernetes

Микросервисные приложения быстро становятся строительными блоками современной системной архитектуры. Там, где был один, теперь тысячи, и важно знать, как они общаются друг с другом. Это хуже, чем смотреть мыльную оперу и выяснять, кто с кем идет, потому что микросервисы взаимодействуют на уровне сетки. Ячеистая сеть — это топология сети, в которой каждый узел передает данные для сети, и все узлы ячеистой сети сотрудничают в распределении данных в сети. Это похоже на классную комнату, полную шумных детей, и по мере того, как их число растет, внезапно появляются новые проблемы, такие как балансировка нагрузки, восстановление после сбоев, обнаружение служб и мониторинг. Не так давно CNI от CoreOS был «в теме» в отношении сетей, но все, о чем сейчас говорят, это Istio и Linkerd. Это потому, что мы продвигаемся вверх по стеку, где CNI — это API-интерфейс контейнерной сети, поверх которого у нас есть инструменты контейнерной сети, такие как Weave, Calico и Flannel. Поднявшись на следующий уровень, мы находим сетку маршрутизации Linkerd, Istio и Docker, которая соединяет микросервисы.

Linkerd: смешивание беспорядка

Изображение 545 Причина, по которой микросервисы настолько динамичны и гибки, заключается в том, что они отделяются друг от друга по сети и повторно интегрируются с API в виде удаленных вызовов процедур. Без хорошей связи службы будут обречены на провал, поскольку каждый запрос требует ввода от нескольких служб, поскольку он совершает сложное путешествие по сети.

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

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

Новые члены CNCF

Если вы создаете облачное приложение или хотите разбить свой монолит на микросервисы, вам нужна сервисная сетка. По мере того, как мы продвигаемся в этой саге о контейнерах и микросервисной архитектуре, мы поднимаемся все выше и выше по стеку и сталкиваемся с новыми препятствиями. Сначала это была оркестровка, затем мониторинг, затем хранилище и теперь сеть. Если вы хотите знать, в чем заключается последняя проблема, просто следите за тем, что делает CNCF. В последнее время они активно внедряют проекты, связанные с сетью Kubernetes.

Линкер-DEE

Одна особенность микросервисной архитектуры заключается в том, что вы больше не ищете проблемы или не пытаетесь просто заставить что-то работать. В отличие от TCP, явной целью сервисной сетки является сделать связь службы видимой, чтобы ее можно было отслеживать, управлять и контролировать. Установить Linkerd в кластере Kubernetes так же просто, как установить приложение и использовать Linkerd для получения информации о работоспособности служб этого приложения. Linkerd обеспечивает гораздо больше, чем видимость, он обеспечивает балансировку нагрузки с учетом задержек, автоматические повторные попытки и разрыв цепи, распределенную трассировку и многое другое.

Linkerd — это масштабируемая сервисная сетка с открытым исходным кодом для облачных приложений, которая должна предоставить микросервисам «оперативность в стиле Twitter». Linkerd, произносится как Linker-dee, был разработан инженерами инфраструктуры Twitter Уильямом Морганом и Оливером Гулдом для решения проблем, с которыми они столкнулись при эксплуатации больших производственных систем в таких компаниях, как Twitter, Yahoo, Google и Microsoft. По их словам, самые сложные проблемы не связаны с самими сервисами, а скорее с общением между этими сервисами. Linkerd решает эти проблемы, не только контролируя механику этого взаимодействия, но и отделяя механику связи от кода приложения. Таким образом, Linkerd дает вам представление и контроль над коммуникационным механизмом без внесения каких-либо изменений в само приложение.

Преимущество использования Linkerd заключается в том, что вы можете свободно выбирать язык, наиболее подходящий для вашего сервиса. Сегодня компании по всему миру используют Linker в производстве для связи между службами. Linkerd позаботится о запутанных частях, таких как балансировка нагрузки, пул соединений, TLS, инструменты и многое другое. Недавно Buoyant, компания, стоящая за Linkerd, объявила о выделении 10,5 млн долларов в раунде серии A. Инвесторы включают Benchmark Capital и возглавляемую женщинами группу нынешних и бывших руководителей Twitter под названием #Angels! Кроме того, Питер Фентон из Benchmark, который недавно ушел из правления Twitter, войдет в совет директоров Buoyant.

К тому, что

Istio, с другой стороны, является результатом совместного сотрудничества между IBM, Google и Lyft в качестве средства поддержки управления потоками трафика, применения политик доступа и агрегации данных телеметрии между микросервисами. Это длинное определение, но похоже, что оно делает то же самое, что и Linkerd, тем более, что оно также работает без внесения каких-либо изменений в код приложения.

Istio — это инструмент управления сервисами, который перехватывает все сетевые коммуникации, добавляя к каждому сервису специальный прокси-сервер. Это одна из сильных сторон Istio, поскольку ее очень легко настроить. Дополнительные прокси-серверы Istio подключаются автоматически, что делает их очень удобными для пользователя. После подключения они следят за системой, обеспечивают ее безопасность, контролируют трафик и обеспечивают соблюдение закона. Очень похоже на полицию.

Istio можно разделить на четыре функции: Envoy, Mixer, Pilot и Istio-Auth. Каждый из них выполняет разную функцию. Envoy — это вспомогательный прокси-сервер, Mixer обеспечивает соблюдение политик и контроль доступа, а Pilot обрабатывает трафик между службами. Большим преимуществом Istio является то, что он легко обнаруживает новые сервисы и включает их в процесс.

Как арахисовое масло и желе

Изображение 546
Викимедиа

Итак, если вы все еще ищете сравнение Istio и Linkerd, подумайте еще раз. В недавнем сообщении в блоге Buoyant назвал их арахисовым маслом и желе и объявил о выпуске Linkerd 1.1.1, который включает интеграцию с проектом Istio! Они также отмечают преимущества использования Istio с Linkerd, поскольку эти два проекта не только разделяют многие общие цели, но и дополняют друг друга. Преимущество заключается в том, что в то время как Linkerd предлагает широко развернутую, протестированную в производственной среде сервисную сетку, которая чрезвычайно ориентирована на кросс-платформенную совместимость и согласованную связь между сервисами, Istio добавляет к этому сочетанию отличные API, хорошо разработанные модели и обширную, перспективную. набор функций мышления. Вероятно, поэтому CNCF пришлось использовать их оба, и это хороший признак того, что в будущем мы увидим гораздо больше инструментов в этом секторе.