서비스 리졸버 구성 항목 참조
서비스 리졸버 구성 항목 참조 (Service resolver configuration entry reference)
서비스 리졸버 구성 항목에 대한 참조 정보를 제공해요. 서비스 리졸버를 구성하고 적용해 서비스 인스턴스의 명명된 하위 집합을 만들고 업스트림 요청을 처리할 때의 동작을 정의할 수 있어요.
출처: 문서
본문
이 페이지는 서비스 리졸버 구성 항목에 대한 참조 정보를 제공합니다. 서비스 리졸버를 구성하고 적용해 서비스 인스턴스의 명명된 하위 집합(subset)을 만들고 업스트림 요청을 처리할 때의 동작을 정의하세요.
추가 정보는 L7 트래픽 관리 개요(L7 traffic management overview)를 참조하세요.
구성 모델 (Configuration model)
다음 목록은 구성 항목의 필드 계층 구조, 언어별 데이터 유형, 요구 사항을 설명합니다. 속성 이름을 클릭하면 기본값을 포함한 추가 세부 정보를 볼 수 있습니다.
Kind: string | 필수 |service-resolver로 설정해야 함Name: string | 필수Namespace: string | 기본값 EnterprisePartition: string | 기본값 EnterpriseMeta: mapConnectTimeout: string |0sRequestTimeout: string |15sSubsets: mapFilter: stringOnlyPassing: boolean |false
DefaultSubset: stringRedirect: mapService: stringServiceSubset: stringNamespace: string EnterprisePartition: string |defaultEnterpriseSamenessGroup: string EnterpriseDatacenter: stringPeer: string
PrioritizeByLocality: map EnterpriseMode: string |failover
Failover: mapService: stringServiceSubset: stringNamespace: string EnterpriseSamenessGroup: string EnterpriseDatacenters: listTargets: listService: stringServiceSubset: stringNamespace: string EnterprisePartition: string |defaultEnterpriseDatacenter: stringPeer: string
LoadBalancer: mapPolicy: stringLeastRequestConfig: mapChoiceCount: integer |2
RingHashConfig: mapMinimumRingSize: integer |1024MaximumRingSize: integer |8192
HashPolicies: mapField: stringFieldValue: stringCookieConfig: mapSession: boolean |falseTTL: stringPath: string
SourceIP: boolean |falseTerminal: boolean |false
apiVersion: string | 필수 |consul.hashicorp.com/v1alpha1로 설정해야 함kind: string | 필수 |ServiceResolver로 설정해야 함metadata: map | 필수name: string | 필수namespace: string | 선택 Enterprise
spec: map | 필수connectTimeout: string |0srequestTimeout: string |15ssubsets: mapfilter: stringonlyPassing: boolean |false
defaultSubset: stringredirect: mapservice: stringserviceSubset: stringnamespace: string Enterprisepartition: string EnterprisesamenessGroup: string Enterprisedatacenter: stringpeer: string
prioritizeByLocality: map | Enterprisemode: string |failover
failover: mapservice: stringserviceSubset: stringnamespace: string EnterprisesamenessGroup: string Enterprisedatacenters: stringtargets: listservice: stringserviceSubset: stringnamespace: string |defaultEnterprisepartition: string |defaultEnterprisedatacenter: stringpeer: string
loadBalancer: mappolicy: stringleastRequestConfig: mapchoiceCount: integer |2
ringHashConfig: mapminimumRingSize: integer |1024maximumRingSize: integer |8192
hashPolicies: listfield: stringfieldValue: stringcookieConfig: mapsession: boolean |falsettl: string |0spath: string
sourceIP: boolean |falseterminal: boolean |false
완전한 구성 (Complete configuration)
모든 필드가 정의될 때 서비스 리졸버 구성 항목은 다음과 같은 형태를 가집니다.
Kind = "service-resolver" ## required
Name = "<name-of-service-configuration-applies-to>"
Namespace = "<namespace-configuration-applies-to>"
Partition = "<partition-configuration-applies-to>"
Meta = {
<key> = "<value>"
}
ConnectTimeout = "10s"
RequestTimeout = "15s"
Subsets = {
<subset01-name> = {
Filter = "<expression.to.match.on == value01>"
OnlyPassing = true
}
<subset02-name> = {
Filter = "<expression.to.match.on == value02>"
OnlyPassing = true
}
}
DefaultSubset = "<subset01-name>"
Redirect = {
Service = "<destination-service>"
ServiceSubset = "<destination-subset>"
Namespace = "<destination-namespace>"
Partition = "<destination-partition>"
SamenessGroup = "<destination-sameness-group>"
Datacenter = "<destination-datacenter>"
Peer = "<destination-peer>"
}
PrioritizeByLocality = {
Mode = "failover"
}
Failover = { ## requires at least one of the following: Service, ServiceSubset, Namespace, Targets, Datacenters, SamenessGroup
<local-subset-name> = {
Targets = [
{ Service = "<destination-service>" },
{ ServiceSubset = "<destination-service-subset>" },
{ Namespace = "<destination-namespace>" },
{ Partition = "<destination-partition>" },
{ Datacenter = "<destination-datacenter>" },
{ Peer = "<destination-peer>" }
]
}
"*" = {
Service = "<destination-service>"
ServiceSubset = "<destination-service-subset>"
Namespace = "<destination-namespace>"
Datacenters = ["<destination-datacenter-01>", "<destination-datacenter-02>"]
}
}
LoadBalancer = {
Policy = "random"
LeastRequestConfig = { ## requires Policy = "least_request"
ChoiceCount = 2
}
RingHashConfig = { ## requires Policy = "ring_hash"
MinimumRingSize = 1024
MaximumRingSize = 8192
}
HashPolicies = [
{
Field = "header" ## cannot specify with SourceIP
FieldValue = "<value-to-hash>" ## cannot specify with SourceIP
CookieConfig = {
Session = false
TTL = "0s"
Path = "<path/to/cookie>"
}
SourceIP = false ## cannot specify with Field or FieldValue
Terminal = false
}
]
}
{
"Kind":"service-resolver", // required
"Name":"<name-of-service-configuration-applies-to>",
"Namespace":"<namespace-configuration-applies-to>",
"Partition":"partition-configuration-applies-to>",
"Meta":{
"<key>":"<value>"
},
"ConnectTimeout":"10s",
"RequestTimeout":"15s",
"Subsets":{
"<subset01-name>":{
"Filter":"<expression.to.match.on == value01",
"OnlyPassing":true
},
"<subset02-name>":{
"Filter":"<expression.to.match.on == value02>",
"OnlyPassing":true
}
},
"DefaultSubset ":"<subset01-name>",
"Redirect":{
"Service":"<destination-service>",
"ServiceSubset":"<destination-subset>",
"Namespace":"<destination-namespace>",
"Partition":"<destination-partition>",
"SamenessGroup":"<destination-sameness-group>",
"Datacenter":"<destination-datacenter>",
"Peer":"<destination-peer>"
},
"PrioritizeByLocality" : {
"Mode": "failover"
},
"Failover":{ // requires at least one of the following": Service, ServiceSubset, Namespace, Targets, Datacenters, SamenessGroup
"<local=subset-name>":{
"Targets":[
{"Service":"<destination-service>"},
{"ServiceSubset":"<destination-service-subset>"},
{"Namespace":"<destination-namespace>"},
{"Partition":"<destination-partition>"},
{"Datacenter":"<destination-datacenter>"},
{"Peer":"<destination-peer>"}
]
},
"*":{
"Service ":"<destination-service>",
"ServiceSubset":"<destination-service-subset>",
"Namespace":"<destination-namespace>",
"Datacenters":["<destination-datacenter-01>", "<destination-datacenter-02>"]
}
},
"LoadBalancer":{
"Policy":"random",
"LeastRequestConfig":{ // requires Policy":"least_request"
"ChoiceCount":2
},
"RingHashConfig":{ // requires Policy":"ring_hash"
"MinimumRingSize":1024,
"MaximumRingSize":8192
},
"HashPolicies":[
{
"Field":"header", // cannot specify with SourceIP
"FieldValue":"<value-to-hash>", // cannot specify with SourceIP
"CookieConfig":{
"Session":false,
"TTL":"0s",
"Path":"<path/to/cookie>"
},
"SourceIP":false, // cannot specify with Field or FieldValue
"Terminal":false
}
]
}
}
apiVersion: consul.hashicorp.com/v1alpha1 # required
kind: ServiceResolver # required
metadata:
name: <serviceName>
namespace: <namespace>
spec:
connectTimeout: 10s
requestTimeout: 15s
subsets:
<subset01Name>:
filter: <expression.to.match.on == value01>
onlyPassing: false
<subset02Name>:
filter: <expression.to.match.on == value02>
onlyPassing: false
defaultSubset: <definedSubsetName>
redirect:
service: <serviceName>
servicesubset: <subsetName>
namespace: <namespaceName>
partition: <partitionName>
samenessGroup: <samenessGroupName>
peer: <peerName>
prioritizeByLocality:
mode: failover
failover: # requires at least one of the following: service, serviceSubset, namespace, targets, datacenters, samenessGroup
<localSubsetName>:
targets:
- service: <serviceName>
- serviceSubset: <serviceSubset>
- namespace: <namespaceName>
- partition: <partitionName>
- datacenter: <datacenterName>
- peer: <peerName>
`*`: <namespaceName>
service: <serviceName>
serviceSubset: <serviceSubset>
namespace: <namespaceName>
datacenters: ["<destinationDatacenter01>", "<destinationDatacenter02>"]
loadBalancer:
policy: random
leastRequestConfig: # requires policy: leastRequestConfig
choiceCount: 2
ringHashConfig: # requires policy: ringHashConfig
minimumRingSize: 1024
maximumRingSize: 8192
hashPolicies:
- field: header # cannot specify with SourceIP
- fieldValue: <valueToHashOn> # cannot specify with SourceIP
- cookieConfig:
session: false
ttl: 0s
path: <path/to/cookie>
- sourceIP: false # cannot specify with field or fieldValue
- terminal: false
사양 (Specification)
이 섹션은 구성 항목에서 구성할 수 있는 필드에 대한 세부 정보를 제공합니다.
Kind
구현할 구성 항목의 유형을 지정합니다. service-resolver로 설정해야 합니다.
값 (Values)
- 기본값: 없음
- 이 필드는 필수입니다.
- 데이터 유형:
service-resolver로 설정해야 하는 String 값입니다.
Name
구성 항목의 이름을 지정합니다. 이름은 특정 클러스터에 구성 항목을 적용하는 것과 같은 Consul 작업을 수행할 때 구성 항목을 참조하는 데 사용할 수 있는 메타데이터입니다.
값 (Values)
- 기본값: 없음
- 이 필드는 필수입니다.
- 데이터 유형: String
Namespace Enterprise
서비스 리졸버가 적용되는 네임스페이스를 지정합니다. 자세한 내용은 네임스페이스(namespaces)를 참조하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Partition Enterprise
서비스 리졸버가 적용되는 admin 파티션을 지정합니다. 자세한 내용은 admin 파티션을 참조하세요.
값 (Values)
- 기본값:
default - 데이터 유형: String
Meta
KV 저장소에 추가할 키-값 쌍을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: 하나 이상의 키-값 쌍의 맵
<KEY>: String,<VALUE>: String 또는 integer
ConnectTimeout
이 서비스에 새 네트워크 연결을 설정하는 시간 초과 기간을 지정합니다. 기본적으로 기간은 나노초(ns) 단위로 측정됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
RequestTimeout
이 서비스에서 HTTP 응답을 받는 시간 초과 기간을 지정합니다. 0s로 설정하면 기본값인 15s가 대신 사용됩니다. 기본적으로 기간은 나노초(ns) 단위로 측정됩니다.
값 (Values)
- 기본값:
15s - 데이터 유형: String
Subsets
사용자 정의 서비스 하위 집합의 이름과 각 하위 집합에 서비스 인스턴스가 속하는 조건을 지정합니다. 키가 하위 집합의 이름이고 값이 필터링 표현식을 포함하는 맵인 key-value 쌍을 지정해 하위 집합을 정의하세요. 이 매개변수가 지정되지 않으면 이름 없는 기본 하위 집합만 사용할 수 있습니다.
추가 지침은 서비스 버전별 필터 구성 예시를 참조하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: key-value 쌍을 포함하는 맵.
<KEY>: 하위 집합의 이름을 지정하는 String. 문자열은 DNS 하위 도메인 요소로 유효해야 합니다.<VALUE>: 다음 매개변수를 포함할 수 있는 맵. | 매개변수 | 설명 | 데이터 유형 | 기본값 | | --- | --- | --- | --- | | Filter | 하위 집합에 속하는 서비스 인스턴스의 DNS 요소를 필터링하는 표현식을 지정합니다. 비어 있으면 서비스의 모든 정상 인스턴스가 반환됩니다. 이 표현식은 Health API 엔드포인트와 동일한 DNS 선택자로 필터링할 수 있습니다. 표현식 생성 및 사용에 대한 자세한 내용은 필터링(filtering)을 참조하세요. | String | 없음 | | OnlyPassing | 건강 검사에서 경고(warning)를 반환하는 인스턴스가 요청을 해석할 수 있는지 결정합니다.false로 설정하면 passing과 warning 상태의 인스턴스가 모두 정상으로 간주됩니다.true로 설정하면 passing 건강 검사 상태의 인스턴스만 정상으로 간주됩니다. | Boolean |false|
DefaultSubset
명시적 하위 집합이 요청되지 않을 때 사용할 서비스 인스턴스의 정의된 하위 집합을 지정합니다. 이 매개변수가 지정되지 않으면 Consul은 이름 없는 기본 하위 집합을 사용합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Redirect
다른 네트워크 위치에 배포된 서비스가 대신 업스트림 요청을 해석하도록 로컬 서비스 트래픽에 대한 리디렉션 지침을 지정합니다. 이 필드가 정의되면 Consul은 서비스 리졸버 구성 항목에서 Kind, Name, Namespace를 제외한 모든 다른 필드를 무시합니다. 단일 서비스에 여러 리디렉션이 정의된 경우 Consul은 적용하는 첫 번째 리디렉션만 사용합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형:
Service,ServiceSubset,Namespace,Partition,SamenessGroup,Datacenter,Peer매개변수를 포함할 수 있는 맵.
Redirect{}.Service
로컬 업스트림 요청을 해석하는 리디렉션 대상의 서비스 이름을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Redirect{}.ServiceSubset
로컬 업스트림 요청을 해석하는 리디렉션 대상의 서비스 하위 집합 이름을 지정합니다. 비어 있으면 기본 하위 집합이 사용됩니다. 지정하면 동일한 Redirect 맵에서 Service, Namespace, Datacenter 중 적어도 하나를 지정해야 합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Redirect{}.Namespace Enterprise
로컬 업스트림 요청을 해석하는 리디렉션 대상의 네임스페이스를 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Redirect{}.Partition Enterprise
로컬 업스트림 요청을 해석하는 리디렉션 대상의 admin 파티션을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Redirect{}.SamenessGroup Enterprise
로컬 업스트림 요청을 해석하는 리디렉션 대상의 sameness group을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Redirect{}.Datacenter
로컬 업스트림 요청을 해석하는 리디렉션 대상의 데이터센터를 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Redirect{}.Peer
로컬 업스트림 요청을 해석하는 리디렉션 대상에서 활성 클러스터 피어링 연결이 있는 클러스터를 지정합니다. 피어에 대한 서비스를 승인하는 별도로 정의된 서비스 인텐션이 필요합니다. Consul이 피어의 요청을 해석하기 전에 건강 검사를 실행할 때, 피어에 정의되고 exported-services 구성 항목을 통해 로컬 클러스터로 내보낸 건강 검사는 적용하지 않습니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
PrioritizeByLocality
인스턴스가 같은 네트워크 리전과 존에 있는 업스트림 대상을 우선시할 수 있게 하는 서비스 모드를 설정합니다. mode 필드에 대해 다음 string 값을 지정할 수 있습니다.
failover: 서비스가 연결된 업스트림 대상에 도달할 수 없게 되면 서비스는 일치하는 locality 구성이 있는 정상 업스트림 인스턴스를 우선시합니다. 추가 정보는 로컬 업스트림으로 트래픽 라우팅을 참조하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: Map
Failover
대상 서비스가 실패할 경우 트래픽을 대체 서비스 인스턴스 풀로 재라우팅하는 제어를 지정합니다.
이 매개변수는 맵이며, 키는 실패 시 다른 위치로 해석하는 로컬 서비스 하위 집합의 이름입니다. "*" 와일드카드를 지정해 모든 하위 집합에 장애 조치를 적용할 수 있습니다.
Service, ServiceSubset, Namespace, Targets, SamenessGroup, Datacenters가 동시에 모두 비어 있을 수는 없습니다.
값 (Values)
- 기본값: 없음
- 데이터 유형:
Service,ServiceSubset,Namespace,SamenessGroup,Datacenters,Targets매개변수를 포함할 수 있는 맵.
Failover{}.Service
장애 조치 시나리오 중에 장애 조치 위치에서 해석할 서비스 이름을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.ServiceSubset
장애 조치 시나리오 중에 장애 조치 위치에서 해석할 서비스 인스턴스 하위 집합의 이름을 지정합니다. 비어 있으면 Consul은 서비스의 DefaultSubset을 사용합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.Namespace Enterprise
장애 조치 서비스가 배포되는 장애 조치 위치의 네임스페이스를 지정합니다. 비어 있으면 현재 네임스페이스가 사용됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.SamenessGroup Enterprise
장애 조치 서비스가 배포되는 장애 조치 위치의 sameness group을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.Datacenters
장애 조치 시나리오 중에 연결을 시도할 장애 조치 위치의 정렬된 데이터센터 목록을 지정합니다. Consul이 목록의 첫 번째 데이터센터와 연결을 설정할 수 없으면 다른 데이터센터와 연결을 설정할 때까지 순차적으로 진행합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.Targets
장애 조치 중에 시도할 고정된 장애 조치 대상 목록을 지정합니다. 이 목록은 복잡한 장애 조치 시나리오를 표현할 수 있습니다.
예시는 장애 조치 예시 구성을 참조하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형:
Service,ServiceSubset,Namespace,Partition,Datacenter,Peer매개변수를 포함할 수 있는 맵 목록.
Failover{}.Targets[].Service
장애 조치 대상에 사용할 서비스 이름을 지정합니다. 비어 있으면 현재 서비스 이름이 사용됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.Targets[].ServiceSubset
장애 조치 대상에 사용할 명명된 하위 집합을 지정합니다. 비어 있으면 요청된 서비스 이름의 기본 하위 집합이 사용됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.Targets[].Namespace Enterprise
장애 조치 대상에 사용할 네임스페이스를 지정합니다. 비어 있으면 기본 네임스페이스가 사용됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.Targets[].Partition Enterprise
장애 조치 대상에 사용할 같은 데이터센터 내의 admin 파티션을 지정합니다. 비어 있으면 기본 파티션이 사용됩니다. 다른 데이터센터의 admin 파티션을 장애 조치 대상으로 사용하려면 대신 Peer 필드를 사용하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.Targets[].Datacenter
장애 조치 대상에 사용할 WAN 페더레이션 데이터센터를 지정합니다. 비어 있으면 현재 데이터센터가 사용됩니다. WAN 페더레이션이 아닌 클러스터 피어링 관계로 연결된 데이터센터를 장애 조치 대상으로 사용하려면 대신 Peer 필드를 사용하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
Failover{}.Targets[].Peer
대상 서비스 이름을 해석할 대상 클러스터 피어를 지정합니다. 소스 서비스가 이 장애 조치 대상 서비스에 업스트림으로 접근할 수 있도록 피어드 클러스터에 인텐션이 정의되어야 합니다. 피어 이름이 지정되면 Consul은 Envoy의 이상 탐지(outlier detection)를 사용해 서비스가 장애 조치 대상과 통신할 수 있는지 여부에 기반해 장애 조치 대상의 상태를 결정합니다. Consul은 피어에서 가져온 서비스 건강 검사를 장애 조치 대상에 적용하지 않습니다. 검사가 대상 서비스에 대해 피어에 정의될 수 있는 서비스 라우터, 스플리터, 리졸버를 고려하지 않기 때문입니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
LoadBalancer
이 업스트림에 요청을 발행하는 서비스에 대한 로드 밸런싱 정책과 구성을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형:
Policy,RingHashConfig,LeastRequestConfig,HashPolicies매개변수를 포함할 수 있는 맵.
LoadBalancer{}.Policy
호스트를 선택하기 위한 로드 밸런싱 정책 유형을 지정합니다. 지원되는 로드 밸런싱 정책은 다음과 같습니다.
| 정책 | 설명 |
|---|---|
| Random | 로드 밸런서가 고정 목록에서 무작위로 선택한 사용 가능한 서버에 클라이언트 요청을 전달합니다. |
| Round robin | 로드 밸런서가 고정 서버 목록을 순서대로 진행하며 각 사용 가능한 서버에 클라이언트 요청을 전달합니다. |
| Least request | 로드 밸런서가 연결이 가장 적은 서버에 클라이언트 요청을 전달합니다. 이 정책을 사용할 때 LoadBalancer{}.LeastRequestConfig에서 추가 매개변수를 지정할 수 있습니다. |
| Ring hash | 로드 밸런서가 동일한 클라이언트의 요청을 동일한 서버 그룹에 전달합니다. 이 정책을 사용할 때 LoadBalancer{}.RingHashConfig에서 추가 매개변수를 지정할 수 있습니다. |
| Maglev | 로드 밸런서가 해싱 알고리즘을 사용해 요청을 서버 전체에 고르게 분산합니다. 이 정책을 사용할 때 LoadBalancer{}.HashPolicies에서 추가 매개변수를 지정할 수 있습니다. |
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 값 중 하나를 포함하는 String:
random,round_robin,least_request,ring_hash,maglev
LoadBalancer{}.LeastRequestConfig
least_request 정책 유형에 대한 구성을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 매개변수를 포함하는 맵.
| 매개변수 | 설명 | 데이터 유형 | 기본값 |
| --- | --- | --- | --- |
| ChoiceCount | 요청이 가장 적은 것을 선택할 무작위 정상 호스트 수를 지정합니다. | Integer |
2|
LoadBalancer{}.RingHashConfig
ring_hash 정책 유형에 대한 구성을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 매개변수를 포함할 수 있는 목록.
| 매개변수 | 설명 | 데이터 유형 | 기본값 |
| --- | --- | --- | --- |
| MinimumRingSize | 해시 링의 최소 항목 수를 결정합니다. | Integer |
1024| | MaximumRingSize | 해시 링의 최대 항목 수를 결정합니다. | Integer |8192|
LoadBalancer{}.HashPolicies
해싱 로드 밸런싱 알고리즘에 사용할 해시 정책 목록을 지정합니다. Consul은 해시 정책을 개별적으로 평가하고 결합하므로 동일한 목록은 동일한 해시를 생성합니다. 해시 정책이 없거나 성공적으로 평가되지 않으면 Consul은 임의의 백엔드 호스트를 선택합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형:
Field,FieldValue,CookieConfig,SourceIP,Terminal매개변수의 맵 목록.
LoadBalancer{}.HashPolicies[].Field
해시할 속성 유형을 지정합니다. SourceIP도 구성되어 있다면 Field 매개변수를 지정할 수 없습니다.
지원되는 속성 유형은 다음과 같습니다.
| 속성 | 설명 |
|---|---|
| Cookie | 로드 밸런서가 쿠키를 사용해 해시 키를 얻습니다. 자세한 내용은 Envoy 문서를 참조하세요. |
| Header | 로드 밸런서가 요청 헤더를 사용해 해시 키를 얻습니다. 자세한 내용은 Envoy 문서를 참조하세요. |
| Query Parameter | 로드 밸런서가 URL 쿼리 매개변수를 사용해 해시 키를 얻습니다. 자세한 내용은 Envoy 문서를 참조하세요. |
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 값 중 하나를 포함하는 String:
cookie,header,query_parameter
LoadBalancer{}.HashPolicies[].FieldValue
헤더 이름, 쿠키 이름 또는 URL 쿼리 매개변수 이름과 같은 해시할 값을 지정합니다. SourceIP도 구성되어 있다면 FieldValue 매개변수를 지정할 수 없습니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
LoadBalancer{}.HashPolicies[].CookieConfig
쿠키 해시 정책 유형에 대한 추가 구성 옵션을 지정합니다. 이 필드는 Envoy가 클라이언트의 첫 요청에 쿠키를 생성하게 합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 매개변수를 포함할 수 있는 맵.
| 매개변수 | 설명 | 데이터 유형 | 기본값 |
| --- | --- | --- | --- |
| Session | Consul이 만료가 없는 세션 쿠키를 생성하도록 지시합니다. | Boolean |
false| | TTL | 생성된 쿠키의 TTL을 지정합니다. 세션 쿠키에는 지정할 수 없습니다. | String |0s| | Path | 쿠키에 설정할 경로를 지정합니다. | String | 없음 |
LoadBalancer{}.HashPolicies[].SourceIP
해시 유형을 소스 IP 주소로 할지 결정합니다. Field 또는 FieldValue가 구성되어 있다면 SourceIP를 지정할 수 없습니다.
값 (Values)
- 기본값:
false - 데이터 유형: Boolean
LoadBalancer{}.HashPolicies[].Terminal
여러 해시 정책이 있을 때 Consul이 해시 계산을 중지해야 하는지 결정합니다. 터미널 정책이 평가될 때 해시가 계산되면 해당 해시가 사용되고 이후 해시 정책은 무시됩니다.
값 (Values)
- 기본값:
false - 데이터 유형: Boolean
apiVersion
Kubernetes와 통합하기 위한 Consul API의 버전을 지정합니다. 값은 consul.hashicorp.com/v1alpha1이어야 합니다.
값 (Values)
- 기본값: 없음
- 이 필드는 필수입니다.
consul.hashicorp.com/v1alpha1로 설정해야 하는 String 값.
kind
구현할 구성 항목의 유형을 지정합니다. ServiceResolver로 설정해야 합니다.
값 (Values)
- 기본값: 없음
- 이 필드는 필수입니다.
- 데이터 유형:
ServiceResolver로 설정해야 하는 String 값.
metadata
구성 항목의 임의 이름과 적용되는 네임스페이스를 포함하는 맵.
값 (Values)
- 기본값: 없음
- 데이터 유형: Map
metadata.name
구성 항목의 이름을 지정합니다. 이름은 특정 클러스터에 구성 항목을 적용하는 것과 같은 Consul 작업을 수행할 때 구성 항목을 참조하는 데 사용할 수 있는 메타데이터입니다.
값 (Values)
- 기본값: 없음
- 이 필드는 필수입니다.
- 데이터 유형: String
metadata.namespace Enterprise
서비스 리졸버가 적용되는 네임스페이스를 지정합니다. 자세한 내용은 네임스페이스를 참조하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec
ServiceResolver 구성 항목에 대한 세부 정보를 포함하는 맵. apiVersion, kind, metadata 필드는 spec 필드의 형제(sibling)입니다. 다른 모든 구성은 자식입니다.
값 (Values)
- 기본값: 없음
- 이 필드는 필수입니다.
- 데이터 유형: Map
spec.connectTimeout
이 서비스에 새 네트워크 연결을 설정하는 시간 초과 기간을 지정합니다. 기본적으로 기간은 나노초(ns) 단위로 측정됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.requestTimeout
이 서비스에서 HTTP 응답을 받는 시간 초과 기간을 지정합니다. 0s로 설정하면 기본값인 15s가 대신 사용됩니다. 기본적으로 기간은 나노초(ns) 단위로 측정됩니다.
값 (Values)
- 기본값:
15s - 데이터 유형: String
spec.subsets
사용자 정의 서비스 하위 집합의 이름과 각 하위 집합에 서비스 인스턴스가 속하는 조건을 지정합니다. 키가 하위 집합의 이름이고 값이 필터링 표현식을 포함하는 맵인 key-value 쌍을 지정해 하위 집합을 정의하세요. 이 매개변수가 지정되지 않으면 이름 없는 기본 하위 집합만 사용할 수 있습니다.
추가 지침은 서비스 버전별 필터 구성 예시를 참조하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: key-value 쌍을 포함하는 맵.
<KEY>: 하위 집합의 이름을 지정하는 String. 문자열은 DNS 하위 도메인 요소로 유효해야 합니다.<VALUE>: 다음 매개변수를 포함할 수 있는 맵. | 매개변수 | 설명 | 데이터 유형 | 기본값 | | --- | --- | --- | --- | | filter | 하위 집합에 속하는 서비스 인스턴스의 DNS 요소를 필터링하는 표현식을 지정합니다. 비어 있으면 서비스의 모든 정상 인스턴스가 반환됩니다. 이 표현식은 Health API 엔드포인트와 동일한 DNS 선택자로 필터링할 수 있습니다. 표현식 생성 및 사용에 대한 자세한 내용은 필터링을 참조하세요. | String | 없음 | | onlyPassing | 건강 검사에서 경고(warning)를 반환하는 인스턴스가 요청을 해석할 수 있는지 결정합니다.false로 설정하면 passing과 warning 상태의 인스턴스가 모두 정상으로 간주됩니다.true로 설정하면 passing 건강 검사 상태의 인스턴스만 정상으로 간주됩니다. | Boolean |false|
spec.defaultSubset
명시적 하위 집합이 요청되지 않을 때 사용할 서비스 인스턴스의 정의된 하위 집합을 지정합니다. 이 매개변수가 지정되지 않으면 Consul은 이름 없는 기본 하위 집합을 사용합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.redirect
다른 네트워크 위치에 배포된 서비스가 대신 업스트림 요청을 해석하도록 로컬 서비스 트래픽에 대한 리디렉션 지침을 지정합니다. 이 필드가 정의되면 Consul은 서비스 리졸버 구성 항목에서 kind, name, namespace를 제외한 모든 다른 필드를 무시합니다. 단일 서비스에 여러 리디렉션이 정의된 경우 Consul은 적용하는 첫 번째 리디렉션만 사용합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형:
service,serviceSubset,namespace,partition,samenessGroup,datacenter,peer매개변수를 포함할 수 있는 맵.
spec.redirect.service
로컬 업스트림 요청을 해석하는 리디렉션 대상의 서비스 이름을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.redirect.serviceSubset
로컬 업스트림 요청을 해석하는 리디렉션 대상의 서비스 하위 집합 이름을 지정합니다. 비어 있으면 기본 하위 집합이 사용됩니다. 지정하면 같은 redirect 맵에서 service, namespace, datacenter 중 적어도 하나를 지정해야 합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.redirect.namespace Enterprise
로컬 업스트림 요청을 해석하는 리디렉션 대상의 네임스페이스를 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.redirect.partition Enterprise
로컬 업스트림 요청을 해석하는 리디렉션 대상의 admin 파티션을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.redirect.samenessGroup Enterprise
로컬 업스트림 요청을 해석하는 리디렉션 대상의 sameness group을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.redirect.datacenter
로컬 업스트림 요청을 해석하는 리디렉션 대상의 데이터센터를 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.redirect.peer
로컬 업스트림 요청을 해석하는 리디렉션 대상에서 활성 클러스터 피어링 연결이 있는 클러스터를 지정합니다. 피어에 대한 서비스를 승인하는 별도로 정의된 서비스 인텐션이 필요합니다. Consul이 피어의 요청을 해석하기 전에 건강 검사를 실행할 때, 피어에 정의되고 exported-services 구성 항목을 통해 로컬 클러스터로 내보낸 건강 검사는 적용하지 않습니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.prioritizeByLocality
인스턴스가 같은 네트워크 리전과 존에 있는 업스트림 대상을 우선시할 수 있게 하는 서비스 모드를 설정합니다. mode 필드에 대해 다음 string 값을 지정할 수 있습니다.
failover: 서비스가 연결된 업스트림 대상에 도달할 수 없게 되면 서비스는 일치하는 locality 구성이 있는 정상 업스트림 인스턴스를 우선시합니다. 추가 정보는 로컬 업스트림으로 트래픽 라우팅을 참조하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: Map
spec.failover
대상 서비스가 실패할 경우 트래픽을 대체 서비스 인스턴스 풀로 재라우팅하는 제어를 지정합니다.
이 매개변수는 맵이며, 키는 실패 시 다른 위치로 해석하는 로컬 서비스 하위 집합의 이름입니다. "*" 와일드카드를 지정해 모든 하위 집합에 장애 조치를 적용할 수 있습니다.
service, serviceSubset, namespace, targets, samenessGroup, datacenters가 동시에 모두 비어 있을 수는 없습니다.
값 (Values)
- 기본값: 없음
- 데이터 유형:
service,serviceSubset,namespace,samenessGroup,datacenters,targets매개변수를 포함할 수 있는 맵.
spec.failover.service
장애 조치 시나리오 중에 장애 조치 위치에서 해석할 서비스 이름을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.serviceSubset
장애 조치 시나리오 중에 장애 조치 위치에서 해석할 서비스 인스턴스 하위 집합의 이름을 지정합니다. 비어 있으면 Consul은 서비스의 defaultSubset을 사용합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.namespace Enterprise
장애 조치 서비스가 배포되는 장애 조치 위치의 네임스페이스를 지정합니다. 비어 있으면 현재 네임스페이스가 사용됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.samenessGroup Enterprise
장애 조치 서비스가 배포되는 장애 조치 위치의 sameness group을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.datacenters
장애 조치 시나리오 중에 연결을 시도할 장애 조치 위치의 정렬된 데이터센터 목록을 지정합니다. Consul이 목록의 첫 번째 데이터센터와 연결을 설정할 수 없으면 다른 데이터센터와 연결을 설정할 때까지 순차적으로 진행합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.targets
장애 조치 중에 시도할 고정된 장애 조치 대상 목록을 지정합니다. 이 목록은 복잡한 장애 조치 시나리오를 표현할 수 있습니다.
예시는 장애 조치 예시 구성을 참조하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형:
service,serviceSubset,namespace,partition,datacenter,peer매개변수를 포함할 수 있는 맵 목록.
spec.failover.targets.service
장애 조치 대상에 사용할 서비스 이름을 지정합니다. 비어 있으면 현재 서비스 이름이 사용됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.targets.serviceSubset
장애 조치 대상에 사용할 명명된 하위 집합을 지정합니다. 비어 있으면 요청된 서비스 이름의 기본 하위 집합이 사용됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.targets.namespace Enterprise
장애 조치 대상에 사용할 네임스페이스를 지정합니다. 비어 있으면 기본 네임스페이스가 사용됩니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.targets.partition Enterprise
장애 조치 대상에 사용할 같은 데이터센터 내의 admin 파티션을 지정합니다. 비어 있으면 기본 파티션이 사용됩니다. 다른 데이터센터의 admin 파티션을 장애 조치 대상으로 사용하려면 대신 peer 필드를 사용하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.targets.datacenter
장애 조치 대상에 사용할 WAN 페더레이션 데이터센터를 지정합니다. 비어 있으면 현재 데이터센터가 사용됩니다. WAN 페더레이션이 아닌 클러스터 피어링 관계로 연결된 데이터센터를 장애 조치 대상으로 사용하려면 대신 peer 필드를 사용하세요.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.failover.targets.peer
대상 서비스 이름을 해석할 대상 클러스터 피어를 지정합니다. 소스 서비스가 이 장애 조치 대상 서비스에 업스트림으로 접근할 수 있도록 피어드 클러스터에 인텐션이 정의되어야 합니다. 피어 이름이 지정되면 Consul은 Envoy의 이상 탐지(outlier detection)를 사용해 서비스가 장애 조치 대상과 통신할 수 있는지 여부에 기반해 장애 조치 대상의 상태를 결정합니다. Consul은 피어에서 가져온 서비스 건강 검사를 장애 조치 대상에 적용하지 않습니다. 검사가 대상 서비스에 대해 피어에 정의될 수 있는 서비스 라우터, 스플리터, 리졸버를 고려하지 않기 때문입니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.loadBalancer
이 업스트림에 요청을 발행하는 서비스에 대한 로드 밸런싱 정책과 구성을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형:
policy,leastRequestConfig,ringHashConfig,hashPolicies매개변수를 포함할 수 있는 맵.
spec.loadBalancer.policy
호스트를 선택하기 위한 로드 밸런싱 정책 유형을 지정합니다. 지원되는 로드 밸런싱 정책은 다음과 같습니다.
| 정책 | 설명 |
|---|---|
| Random | 로드 밸런서가 고정 목록에서 무작위로 선택한 사용 가능한 서버에 클라이언트 요청을 전달합니다. |
| Round robin | 로드 밸런서가 고정 서버 목록을 순서대로 진행하며 각 사용 가능한 서버에 클라이언트 요청을 전달합니다. |
| Least request | 로드 밸런서가 연결이 가장 적은 서버에 클라이언트 요청을 전달합니다. 이 정책을 사용할 때 spec.loadBalancer.leastRequestConfig에서 추가 매개변수를 지정할 수 있습니다. |
| Ring hash | 로드 밸런서가 동일한 클라이언트의 요청을 동일한 서버 그룹에 전달합니다. 이 정책을 사용할 때 spec.loadBalancer.ringHashConfig에서 추가 매개변수를 지정할 수 있습니다. |
| Maglev | 로드 밸런서가 해싱 알고리즘을 사용해 요청을 서버 전체에 고르게 분산합니다. 이 정책을 사용할 때 spec.loadBalancer.hashPolicies에서 추가 매개변수를 지정할 수 있습니다. |
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 값 중 하나를 포함하는 String:
random,round_robin,least_request,ring_hash,maglev
spec.loadBalancer.leastRequestConfig
least_request 정책 유형에 대한 구성을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 매개변수를 포함하는 맵.
| 매개변수 | 설명 | 데이터 유형 | 기본값 |
| --- | --- | --- | --- |
| choiceCount | 요청이 가장 적은 것을 선택할 무작위 정상 호스트 수를 지정합니다. | Integer |
2|
spec.loadBalancer.ringHashConfig
ring_hash 정책 유형에 대한 구성을 지정합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 매개변수를 포함할 수 있는 목록.
| 매개변수 | 설명 | 데이터 유형 | 기본값 |
| --- | --- | --- | --- |
| minimumRingSize | 해시 링의 최소 항목 수를 결정합니다. | Integer |
1024| | maximumRingSize | 해시 링의 최대 항목 수를 결정합니다. | Integer |8192|
spec.loadBalancer.hashPolicies
해싱 로드 밸런싱 알고리즘에 사용할 해시 정책 목록을 지정합니다. Consul은 해시 정책을 개별적으로 평가하고 결합하므로 동일한 목록은 동일한 해시를 생성합니다. 해시 정책이 없거나 성공적으로 평가되지 않으면 Consul은 임의의 백엔드 호스트를 선택합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형:
field,fieldValue,cookieConfig,sourceIP,terminal매개변수를 포함할 수 있는 목록.
spec.loadBalancer.hashPolicies[].field
해시할 속성 유형을 지정합니다. sourceIP도 구성되어 있다면 field 매개변수를 지정할 수 없습니다.
지원되는 속성 유형은 다음과 같습니다.
| 속성 | 설명 |
|---|---|
| Cookie | 로드 밸런서가 쿠키를 사용해 해시 키를 얻습니다. 자세한 내용은 Envoy 문서를 참조하세요. |
| Header | 로드 밸런서가 요청 헤더를 사용해 해시 키를 얻습니다. 자세한 내용은 Envoy 문서를 참조하세요. |
| Query Parameter | 로드 밸런서가 URL 쿼리 매개변수를 사용해 해시 키를 얻습니다. 자세한 내용은 Envoy 문서를 참조하세요. |
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 값 중 하나를 포함하는 String:
cookie,header,query_parameter
spec.loadBalancer.hashPolicies[].fieldValue
헤더 이름, 쿠키 이름 또는 URL 쿼리 매개변수 이름과 같은 해시할 값을 지정합니다. sourceIP도 구성되어 있다면 fieldValue 매개변수를 지정할 수 없습니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: String
spec.loadBalancer.hashPolicies[].cookieConfig
쿠키 해시 정책 유형에 대한 추가 구성 옵션을 지정합니다. 이 필드는 Envoy가 클라이언트의 첫 요청에 쿠키를 생성하게 합니다.
값 (Values)
- 기본값: 없음
- 데이터 유형: 다음 매개변수를 포함할 수 있는 맵.
| 매개변수 | 설명 | 데이터 유형 | 기본값 |
| --- | --- | --- | --- |
| session | Consul이 만료가 없는 세션 쿠키를 생성하도록 지시합니다. | Boolean |
false| | ttl | 생성된 쿠키의 TTL을 지정합니다. 세션 쿠키에는 지정할 수 없습니다. | String |0s| | path | 쿠키에 설정할 경로를 지정합니다. | String | 없음 |
spec.loadBalancer.hashPolicies[].sourceIP
해시 유형을 소스 IP 주소로 할지 결정합니다. field 또는 fieldValue가 구성되어 있다면 sourceIP를 지정할 수 없습니다.
값 (Values)
- 기본값:
false - 데이터 유형: Boolean
spec.loadBalancer.hashPolicies[].terminal
여러 해시 정책이 있을 때 Consul이 해시 계산을 중지해야 하는지 결정합니다. 터미널 정책이 평가될 때 해시가 계산되면 해당 해시가 사용되고 이후 해시 정책은 무시됩니다.
값 (Values)
- 기본값:
false - 데이터 유형: Boolean
예시 (Examples)
다음 예시는 특정 사용 사례에 대한 일반적인 서비스 리졸버 구성 패턴을 보여줍니다.
서비스 버전별 필터 (Filter on service version)
다음 예시는 web 서비스의 두 하위 집합을 만들고 각 인스턴스의 버전 메타데이터를 기반으로 서비스 인스턴스를 하위 집합에 할당합니다. 또한 v1을 기본 하위 집합으로 정의합니다.
Kind = "service-resolver"
Name = "web"
DefaultSubset = "v1"
Subsets = {
v1 = {
Filter = "Service.Meta.version == v1"
}
v2 = {
Filter = "Service.Meta.version == v2"
}
}
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: web
spec:
defaultSubset: v1
subsets:
v1:
filter: 'Service.Meta.version == v1'
v2:
filter: 'Service.Meta.version == v2'
{
"Kind": "service-resolver",
"Name": "web",
"DefaultSubset": "v1",
"Subsets": {
"v1": {
"Filter": "Service.Meta.version == v1"
},
"v2": {
"Filter": "Service.Meta.version == v2"
}
}
}
가상 업스트림 해석 (Resolve virtual upstreams)
다음 예시는 Redirect 매개변수를 사용해 일련의 서비스를 가상 서비스로 다른 데이터센터에 노출합니다.
Kind = "service-resolver"
Name = "web-dc2"
Redirect {
Service = "web"
Datacenter = "dc2"
}
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: web-dc2
spec:
redirect:
service: web
datacenter: dc2
{
"Kind": "service-resolver",
"Name": "web-dc2",
"Redirect": {
"Service": "web",
"Datacenter": "dc2"
}
}
서비스 장애 조치 (Service failover)
다음 예시는 하위 집합 v2에 대해 dc2로의 장애 조치를 활성화합니다. 다른 모든 하위 집합은 dc3로 시도하고, 사용할 수 없으면 dc4로 시도합니다.
Kind = "service-resolver"
Name = "web"
ConnectTimeout = "15s"
Failover = {
v2 = {
Datacenters = ["dc2"]
}
"*" = {
Datacenters = ["dc3", "dc4"]
}
}
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: web
spec:
connectTimeout: 15s
failover:
v2:
datacenters: ['dc2']
'*':
datacenters: ['dc3', 'dc4']
{
"Kind": "service-resolver",
"Name": "web",
"ConnectTimeout": "15s",
"Failover": {
"v2": {
"Datacenters": ["dc2"]
},
"*": {
"Datacenters": ["dc3", "dc4"]
}
}
}
페더레이션과 클러스터 피어링을 위한 장애 조치 대상 (Failover targets for federation and cluster peering)
다음 예시는 모든 서비스 하위 집합에 대해 WAN 페더레이션 데이터센터를 대상으로 하는 장애 조치를 활성화합니다. dc3에 대한 연결이 15초 후 시간 초과되면 서비스 장애 조치는 대신 클러스터 피어링 연결이 설정된 피어를 대상으로 합니다.
Kind = "service-resolver"
Name = "web"
ConnectTimeout = "15s"
Failover = {
"*" = {
Targets = [
{Datacenter = "dc3"},
{Peer = "peer-01"}
]
}
}
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: web
spec:
connectTimeout: 15s
failover:
'*':
targets:
- datacenter: "dc3"
- peer: "peer-01"
{
"Kind": "service-resolver",
"Name": "web",
"ConnectTimeout": "15s",
"Failover": {
"*": {
"Targets": [
{"Datacenter": "dc3"},
{"Peer": "peer-01"}
]
}
}
}
모든 서비스 하위 집합에 대한 장애 조치 Enterprise
다음 예시는 모든 서비스 하위 집합에 대해 다른 데이터센터의 보조 네임스페이스로의 장애 조치를 활성화합니다.
Kind = "service-resolver"
Name = "product-api"
Namespace = "primary"
ConnectTimeout = "0s"
Failover = {
"*" = {
Datacenters = ["dc2"]
Namespace = "secondary"
}
}
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: product-api
namespace: primary
spec:
connectTimeout: 0s
failover:
namespace: 'secondary'
datacenters: ['dc2']
{
"Kind": "service-resolver",
"Name": "product-api",
"Namespace": "primary",
"ConnectTimeout": "0s",
"Failover": {
"*": {
"Datacenters": ["dc2"],
"Namespace": "secondary"
}
}
}
네임스페이스로의 장애 조치 Enterprise
다음 예시는 같은 데이터센터의 다른 네임스페이스로의 장애 조치를 활성화합니다.
Kind = "service-resolver"
Name = "product-api"
Namespace = "primary"
ConnectTimeout = "0s"
Failover = {
"*" = {
Service = "product-api-backup"
Namespace = "secondary"
}
}
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: product-api
namespace: primary
spec:
connectTimeout: 0s
failover:
service: 'product-api-backup'
namespace: 'secondary'
{
"Kind": "service-resolver",
"Name": "product-api",
"Namespace": "primary",
"ConnectTimeout": "0s",
"Failover": {
"*": {
"Service": "product-api-backup",
"Namespace": "secondary"
}
}
}
일관된 로드 밸런싱 (Consistent load balancing)
다음 예시는 x-user-id 헤더가 있는 요청에 Maglev 로드 밸런싱 정책을 적용합니다.
Kind = "service-resolver"
Name = "web"
LoadBalancer = {
Policy = "maglev"
HashPolicies = [
{
Field = "header"
FieldValue = "x-user-id"
}
]
}
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: web
spec:
loadBalancer:
policy: maglev
hashPolicies:
- field: header
fieldValue: x-user-id
{
"Kind": "service-resolver",
"Name": "web",
"LoadBalancer": {
"Policy": "maglev",
"HashPolicies": [
{
"Field": "header",
"FieldValue": "x-user-id"
}
]
}
}