3.2.12. 라우터 공유 공간 사용


라우터 분할 에서는 NAMESPACE_LABELSROUTE_LABELS 를 사용하여 라우터 네임스페이스와 경로를 필터링합니다. 이를 통해 경로의 하위 집합을 여러 라우터 배포에 배포할 수 있습니다. 오버레이되지 않은 하위 집합을 사용하면 경로 집합을 효과적으로 분할할 수 있습니다. 또는 겹치는 경로 하위 집합으로 구성된 shard를 정의할 수 있습니다.

기본적으로 라우터는 모든 프로젝트(네임스페이스) 에서 모든 경로를 선택합니다. 분할에는 경로 또는 네임스페이스에 레이블을 추가하고 라우터에 라벨 선택기를 추가합니다. 각 라우터 shard는 특정 레이블 선택기 집합에서 선택한 경로로 구성되거나 특정 레이블 선택기 세트에서 선택한 네임스페이스에 속합니다.

참고

라우터 서비스 계정에는 다른 네임스페이스의 라벨에 액세스할 수 있도록 [클러스터 리더] 권한이 설정되어 있어야 합니다.

라우터 공유 및 DNS

요청을 원하는 shard로 라우팅하려면 외부 DNS 서버가 필요하므로 관리자는 프로젝트의 각 라우터에 대해 별도의 DNS 항목을 만들어야 합니다. 라우터는 알 수 없는 경로를 다른 라우터로 전달하지 않습니다.

다음 예제를 고려하십시오.

  • 라우터 A는 호스트 192.168.0.5에 있으며 *.foo.com 이 있는 경로가 있습니다.
  • 라우터 B는 호스트 192.168.1.9에 있으며 *.example.com 이 있는 경로가 있습니다.

별도의 DNS 항목은 *.foo.com을 라우터 A를 호스팅하는 노드로 확인하고 *.example.com을 라우터 B를 호스팅하는 노드로 확인해야 합니다.

  • *.foo.com A IN 192.168.0.5
  • *.example.com A IN 192.168.1.9

라우터 공유 예

이 섹션에서는 네임스페이스 및 경로 레이블을 사용하여 라우터 분할에 대해 설명합니다.

그림 3.1. 네임 스페이스 레이블 기반 라우터 공유

네임 스페이스 레이블 기반 라우터 공유
  1. 네임스페이스 라벨 선택기를 사용하여 라우터를 구성합니다.

    $ oc set env dc/router NAMESPACE_LABELS="router=r1"
  2. 라우터에는 네임스페이스에 선택기가 있으므로 라우터는 일치하는 네임스페이스에 대해서만 경로를 처리합니다. 이 선택기가 네임스페이스와 일치하도록 하려면 그에 따라 네임스페이스에 라벨을 지정합니다.

    $ oc label namespace default "router=r1"
  3. 이제 default 네임스페이스에 경로를 생성하는 경우 기본 라우터에서 경로를 사용할 수 있습니다.

    $ oc create -f route1.yaml
  4. 새 프로젝트(namespace)를 생성하고 경로를 만듭니다. route2:

    $ oc new-project p1
    $ oc create -f route2.yaml

    라우터에서 경로를 사용할 수 없습니다.

  5. router=r 1을 사용하여 네임스페이스 p1 에 레이블을 지정합니다.

    $ oc label namespace p1 "router=r1"

이 레이블을 추가하면 라우터에서 경로를 사용할 수 있습니다.

예제

라우터 배포 pin ops-router 는 레이블 선택기 NAMESPACE_LABELS="name in (finance, ops)"으로 구성되고 라우터 배포 dev-router 는 레이블 선택기 NAMESPACE_LABELS="name=dev" 로 구성됩니다.

모든 경로가 name=finance, name= ops, name= dev 라는 레이블이 지정된 네임스페이스에 있는 경우 이 구성은 두 라우터 배포 간에 경로를 효과적으로 배포합니다.

위의 시나리오에서 분할은 중복되는 하위 집합이 없는 파티션의 특별한 사례가 됩니다. 경로는 라우터 shard 간에 나뉩니다.

경로 선택 기준은 경로 배포 방법을 결정합니다. 라우터 배포에서 경로의 중복된 하위 집합을 가질 수 있습니다.

예제

위의 예에 있는 pinops -router 및 dev-router 외에도 라벨 선택기 NAMESPACE_LABELS="name (dev, ops)" 으로 구성된 devops-router 도 있습니다.

name=dev 또는 name= ops 레이블이 지정된 네임스페이스의 경로는 이제 두 개의 서로 다른 라우터 배포에서 서비스를 제공합니다. 이 경우에는 네임스페이스 레이블을 기반으로 라우터 공유를 기반으로 하는 절차에 설명된 대로 경로의 중복된 하위 집합을 정의한 사례가 됩니다.

또한 더 복잡한 라우팅 규칙을 만들 수 있으므로 우선 순위가 더 높은 트래픽이 전용 conf ops-router 로 전환할 수 있으며 우선 순위가 낮은 트래픽을 devops-router 로 보낼 수 있습니다.

경로 레이블을 기반으로 하는 라우터 공유

NAMESPACE_LABELS 를 사용하면 프로젝트를 서비스하고 해당 프로젝트에서 모든 경로를 선택할 수 있지만 경로 자체와 연결된 다른 기준에 따라 경로를 분할할 수 있습니다. ROUTE_LABELS 선택기를 사용하면 경로 자체를 슬라이스 앤 드롭할 수 있습니다.

예제

라우터 배포 prod-router 는 레이블 선택기 ROUTE_LABELS="mydeployment=prod" 로 구성되고 라우터 배포 devtest-router 는 레이블 선택기 ROUTE_LABELS="mydeployment in (dev, test)" 로 구성됩니다.

이 구성 파티션은 네임스페이스와 관계없이 경로의 레이블에 따라 두 라우터 배포 간에 라우팅됩니다.

이 예제에서는 서비스할 모든 경로에 "mydeployment=<tag>" 라는 레이블이 지정되어 있다고 가정합니다.

3.2.12.1. 라우터 공유 파일 생성

이 섹션에서는 라우터 분할의 고급 예를 설명합니다. 다양한 라벨이 있는 26개의 경로(이름: ) 가 있다고 가정합니다.

경로에 가능한 레이블

sla=high       geo=east     hw=modest     dept=finance
sla=medium     geo=west     hw=strong     dept=dev
sla=low                                   dept=ops

이러한 레이블은 서비스 수준 계약, 지리적 위치, 하드웨어 요구 사항, 부서 등의 개념을 나타냅니다. 경로에는 각 열에서 최대 하나의 레이블이 있을 수 있습니다. 일부 경로에는 다른 레이블이 있거나 레이블이 전혀 없을 수 있습니다.

이름SLAgeoHWDept기타 레이블

a

높음

동부

Modet

금융

type=static

b

 

west

strong

 

type=dynamic

c, d, e

low

 

Modet

 

type=static

g — k

중간

 

strong

dev

 

l — s

높음

 

Modet

ops

 

t — z

 

west

  

type=dynamic

다음은 oc adm router, ocset envoc scale 을 함께 사용하여 라우터 shard를 만드는 방법을 보여주는 모바일 스크립트 mkshard 입니다.

#!/bin/bash
# Usage: mkshard ID SELECTION-EXPRESSION
id=$1
sel="$2"
router=router-shard-$id           1
oc adm router $router --replicas=0  2
dc=dc/router-shard-$id            3
oc set env   $dc ROUTE_LABELS="$sel"  4
oc scale $dc --replicas=3         5
1
생성된 라우터의 이름은 router-shard-<id> 입니다.
2
현재 스케일링하지 않음을 지정합니다.
3
라우터의 배포 구성입니다.
4
oc set env를 사용하여 선택 표현식을 설정합니다. 선택 표현식은 ROUTE_LABELS 환경 변수의 값입니다.
5
확장해 보십시오.

mkshard 를 여러 번 실행하면 여러 라우터가 생성됩니다.

라우터선택 표현식라우트

router-shard-1

sla=high

a, l — s

router-shard-2

geo=west

b, t — z

router-shard-3

dept=dev

g — k

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.