3.3.5. 스틱 테이블 사용
다음 예제 사용자 지정은 고가용성 라우팅 설정에서 사용하여 피어 간에 동기화되는 고정 테이블을 사용할 수 있습니다.
피어 섹션 추가
피어 간에 고정 테이블을 동기화하려면 HAProxy 구성에 peers 섹션을 정의해야 합니다. 이 섹션에서는 HAProxy가 피어를 식별하고 연결하는 방법을 결정합니다. 플러그인은 .PeerEndpoints
변수 아래의 템플릿에 데이터를 제공하여 라우터 서비스의 멤버를 쉽게 식별할 수 있도록 합니다. 다음을 추가하여 라우터 이미지 내의 haproxy-config.template 파일에 peer 섹션을 추가할 수 있습니다.
{{ if (len .PeerEndpoints) gt 0 }} peers openshift_peers {{ range $endpointID, $endpoint := .PeerEndpoints }} peer {{$endpoint.TargetName}} {{$endpoint.IP}}:1937 {{ end }} {{ end }}
다시 로드 스크립트 변경
stick-tables를 사용하는 경우 HAProxy에 peer 섹션의 로컬 호스트 이름을 고려해야 하는 사항을 지시하는 옵션이 있습니다. 엔드포인트를 만들 때 플러그인은 TargetName
을 엔드포인트의 TargetRef.Name
값으로 설정합니다. TargetRef
를 설정하지 않으면 TargetName
을 IP 주소로 설정합니다. TargetRef.Name
은 Kubernetes 호스트 이름에 해당하므로, -L
옵션을 reload-haproxy
스크립트에 추가하여 피어 섹션에서 로컬 호스트를 식별할 수 있습니다.
peer_name=$HOSTNAME 1
if [ -n "$old_pid" ]; then
/usr/sbin/haproxy -f $config_file -p $pid_file -L $peer_name -sf $old_pid
else
/usr/sbin/haproxy -f $config_file -p $pid_file -L $peer_name
fi
- 1
- 피어 섹션에서 사용되는 엔드포인트 대상 이름과 일치해야 합니다.
백엔드 수정
마지막으로 백엔드 내에서 고정 테이블을 사용하려면 HAProxy 구성을 수정하여 stick-tables 및 peer 세트를 사용할 수 있습니다. 다음은 고정 테이블을 사용하도록 TCP 연결의 기존 백엔드를 변경하는 예입니다.
{{ if eq $cfg.TLSTermination "passthrough" }} backend be_tcp_{{$cfgIdx}} balance leastconn timeout check 5000ms stick-table type ip size 1m expire 5m{{ if (len $.PeerEndpoints) gt 0 }} peers openshift_peers {{ end }} stick on src {{ range $endpointID, $endpoint := $serviceUnit.EndpointTable }} server {{$endpointID}} {{$endpoint.IP}}:{{$endpoint.Port}} check inter 5000ms {{ end }} {{ end }}
이 수정 후 라우터를 다시 빌드할 수 있습니다.