목차
- Istio - Locality Load Balancing (지역 로드 밸런싱)
- Istio - Sidecar Injection
- Post not found: k8s/istio/istio-install
- Istio 란?
참고
- https://istio.io/latest/docs/ops/deployment/architecture/
- https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/
- https://happycloud-lee.tistory.com/104
- http://itnp.kr/post/istio-circuit-break
- https://istiobyexample.dev/locality-load-balancing/
Istio - Locality Load Balancing
Istio 의 Locality Load Balance 는 서비스 요청을 지역적으로 분산시키는 기능을 제공합니다.
Locality Load Balance는 서비스 요청이 클러스터 내에서 발생할 때 해당 요청이 가장 가까운 지역의 서비스 인스턴스에 배정되도록 보장합니다. 이를 통해 클라이언트와 서비스 인스턴스 사이의 대기 시간을 줄이고, 네트워크 대역폭을 절약하며, 네트워크 병목 현상을 방지할 수 있습니다.
Locality Load Balance는 Istio의 Envoy 프록시에서 구현됩니다. Envoy는 클러스터 내의 모든 서비스 인스턴스에 대한 위치 정보를 유지 관리하며, 클러스터의 지리적 분포를 파악하여 요청을 지역적으로 분산시킵니다.
Locality Load Balance는 또한 Istio의 트래픽 관리 기능과 통합됩니다. Istio는 트래픽 관리 규칙을 정의하여 특정 서비스 인스턴스가 특정 지역에서만 처리되도록 할 수 있습니다. 이를 통해 서비스의 가용성을 높이고, 서비스 인스턴스 간의 부하를 균형있게 분산시킬 수 있습니다.
모든 AZ 로 istiod 확장
apiVersion: apps/v1 |
trafficPolicy 설정
Envoy Proxy에서 Locality Load Balancing을 사용하도록 설정합니다. 이를 위해서는 Istio의 서비스 메쉬 구성에서 trafficPolicy
를 설정합니다. 예를 들어, 다음과 같이 trafficPolicy 를 설정할 수 있습니다:
my-service는 사용자가 지역별로 분류하려는 대상 서비스 이름입니다.
apiVersion: networking.istio.io/v1alpha3 |
필요한 경우 Envoy Proxy에서 사용할 지역 정보를 정의합니다. 이를 위해 Istio에서는 ServiceEntry를 사용할 수 있습니다. 예를 들어, 다음과 같이 ServiceEntry를 정의할 수 있습니다:
apiVersion: networking.istio.io/v1alpha3 |
Istio를 사용하여 EKS 클러스터에서 AZ 간 데이터 전송 비용 해결
- https://aws.amazon.com/ko/blogs/containers/addressing-latency-and-data-transfer-costs-on-eks-using-istio/
- https://istio.io/latest/docs/reference/config/networking/destination-rule/
토폴로지 인식 라우팅이 기본적으로 지원되므로 Istio를 사용하여 동일한 가용 영역 내에서 포드 또는 서비스로 트래픽을 라우팅할 수 있습니다.
cat <<EOF>> destinationrule.yaml |
skcc-dev-mbc-cms-aurora : 1 인스턴스 - db.t3.medium(2 vCPUs 4GB, Storage불명)
skcc-uat-vitality-cms-aurora : 2 인스턴스 - db.t3.medium(2 vCPUs 4GB, Storage불명)
skcc-prd-vitality-cms-aurora : 2 인스턴스 - db.r5.xlarge(2vCPU, 32GB, Storage불명)
DB에서 다음과 같이 암호화/복호화 하고 있습니다.
AES-128 비트 인코딩/디코딩 이용하는거 같네요.
복호화 AES_DECRYPT(unhex(암호화된값),‘암호화 키값’)
암호화 hex(AES_ENCRYPT(암호화할값,‘암호화 키값’)
CMS DEV/UAT RDS: db.t3.medium –> 2vCPU, 4GB, Storage불명, AWS Aurora MySQL(5.7.mysql_aurora.2.07.7)
CMS PRD RDS: db.r5.xlarge –> 2vCPU, 32GB, Storage불명, AWS Aurora MySQL(5.7.mysql_aurora.2.07.7)
암호화: AES-256