본문 바로가기
728x90
반응형

Service Mesh16

Consul 가용 영역 우선순위 라우팅(locality-aware routing) 일반적으로 Consul은 서비스 간 통신할 때 아래와 같이 동작한다.위 방식은 사용 가능한 모든 서비스에 트래픽을 분산시킬 수 있기 때문에 대부분의 환경에서는 문제가 되지 않는다.그러나 어떤 상황에서는 서비스 간 호출 대기 시간을 줄이거나, 가용 영역 간 데이터 전송 비용을 줄이기 위해 트래픽이 동일한 가용 영역 내에 유지되도록 하고 싶을 수 있다.  이 문제를 해결하기 위해 Consul 1.17 버전에서는 locality-aware routing에 대한 기능을 도입했다.  locality-aware routing 기능을 적용하면 아래와 같이 동작하게 된다.서비스 호출 시 트래픽을 같은 영역 내에 유지함으로써 서비스 간 대시 시간을 줄여 서비스 성능을 향상하고, 트래픽 비용을 절감할 수 있다.  같은 영.. 2024. 2. 7.
Consul Peering 환경에서 데이터 센터 간 Failover 구성 본 글은 이전에 작성된 [Consul Cluster Peering을 통한 데이터 센터 간 통신] 글에서 구성한 환경 기반으로 작성하는 글로 본 글의 실습을 진행하려면 이전 글의 환경 구성을 완료해야 한다. Failover란?Failover는 주요 서비스의 장애 발생 시, 자동으로 대체 서비스로 전환하는 과정을 의미한다. 이는 예기치 못한 데이터 센터 장애에 서비스의 중단 시간을 최소화하고, 서비스의 지속 가능성을 보장하기 위해 중요한 기능이다. 본 글에서 진행할 Failover 실습 시나리오는 아래와 같다. 위 시나리오를 구성하기 위한 Failover 방법으로는 두 가지가 있는데, ServiceResolver와 SamenessGroup방식이 있다. ServiceResolver: 서비스에서 upstream.. 2024. 2. 7.
Consul Cluster Peering을 통한 데이터 센터 간 통신 Cluster Peering이란?Consul에서 Cluster Peering은 독립적인 Consul 서버들을 서로 연결하여, 다양한 파티션과 데이터 센터에 배포된 서비스들이 통신할 수 있게 해주는 기능이다. 아래 그림은 HashiCorp Consul 문서에서 제공하는 Peering 아키텍처이다.그림 참조: https://developer.hashicorp.com/consul/docs/connect/cluster-peering위 그림에서는 Consul DC1과 Consul DC2가 Peering 연결 되어있고, 각 DC에 존재하는 Mesh Gateway를 통해 "Service A"에서 "Service D"로 통신할 수 있다는 걸 보여준다. Cluster Peering의 동작을 보면 Consul의 또 다른 .. 2024. 2. 7.
Linkerd 자동 Canary 배포 (with Flagger, Prometheus) Canary 배포는 새로운 버전의 애플리케이션을 일부 사용자에게 먼저 배포하고, 이후에 전체 사용자에게 배포하는 전략이다. 이를 통해 새로운 버전에 대한 안정성과 성능을 검증할 수 있다. Flagger는 Kubernetes에서 Canary 배포를 자동화하는 툴 중 하나이다. 서비스에 대한 트래픽을 모니터링하고, Canary 배포를 위한 새로운 버전의 Pod를 배포한다. 그 후, 일부 사용자의 트래픽을 새로운 버전의 Pod로 전환하고, 이후 일정 시간 동안 이를 모니터링한다. 만약 새로운 버전의 Pod에서 에러나 불안정한 동작이 발생하면, 자동으로 롤백을 수행한다.또한 Prometheus를 사용하여 서비스의 지표(metric)를 수집하고, 이를 기반으로 Canary 배포를 수행한다. 실제 트래픽 분할은 L.. 2023. 4. 29.
Linkerd + Prometheus 통합 구성 Linkerd-viz는 기본적으로 Prometheus와 함께 설치된다. 하지만 이미 기존에 운영 중인 Prometheus가 있다면, 이를 통합하여 Linkerd-viz 대시보드에 표시되는 메트릭 데이터를 수집할 수 있다. 본 글에서는 외부 Prometheus와 Linkerd 대시보드를 통합하는 실습을 다룬다. 전제 조건- [Prometheus + Grafana 설치]- [Linkerd 설치]- [Linkerd 대시보드 구성]- 쿠버네티스 클러스터 실습 절차 1. Likerd 메트릭 수집을 위한 Prometheus 설정 2. Linkerd-viz 설정 3. 문제 해결 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스  실습" data-ke-ty.. 2023. 4. 29.
Linkerd 멀티클러스터 통신 구성 Linkerd MultiCluster는 여러 Kubernetes 클러스터를 하나의 서비스 메시로 연결하여, 클러스터 간 안전하고 신뢰성 높은 통신을 가능하게 한다. 이를 통해 서로 다른 클러스터에 있는 Pod 간의 통신이 가능해지며, 고가용성, 확장성, 격리 등 다양한 이점을 제공한다.  멀티클러스터 통신 흐름은 아래와 같다. 본 글에서는 멀티클러스터 간 통신 및 트래픽 흐름을 실습을 통해 확인해 보려 한다. 실습 절차 1. 공유 Trust anchor를 위한 인증서 업데이트 2. 멀티클러스터 통신을 위한 linkerd gateway 구성 3. 서비스 내보내기 4. 멀티클러스터 통신 5. 구간별 패킷 흐름 검증 " data-ke-type="html">HTML 삽입미리보기할.. 2023. 4. 28.
Linkerd 서킷 브레이킹 (Circuit Breaking) 서킷 브레이킹이란?서킷 브레이킹은 분산 시스템에서 서비스 간의 의존성과 가용성을 보장하기 위한 중요한 패턴 중 하나이다. 일반적으로 분산 시스템에서는 다양한 서비스들이 서로에게 의존하면서 동작한다. 이때, 하나의 서비스의 장애가 전체 시스템에 영향을 미칠 수 있기 때문에 각 서비스의 상태를 모니터링하고, 장애가 발생한 서비스에 대해서는 다른 대체 서비스를 호출하도록 구성하게 된다. 서킷 브레이커는 이러한 대체 서비스 호출을 처리하는 데에 있어, 서비스 간 연결을 관리하는 역할을 담당한다. 서비스 장애 상황 시 호출이 지연 또는 실패할 경우 서킷 브레이커는 장애 서비스를 일정 기간 동안 엔드포인트에서 제거하고 서비스의 상태가 정상으로 회복되기를 기다린다. 이때, 장애 서비스에 대한 호출은 다른 서비스로 라.. 2023. 4. 19.
728x90
반응형