함수 워커 별도 실행하기
함수 워커 별도 실행하기
함수 워커(function worker)를 별도의 머신에서 별도 프로세스로 실행하는 배포 방식이에요. 아래 다이어그램은 함수 워커가 별도 머신에서 독립 프로세스로 실행되는 모습을 보여줘요.
함수와 브로커를 분리하고 싶을 때 이 방식을 사용해요. 설정 순서는 함수 워커 구성 → 시작 → 프록시 구성 순으로 진행되고, 특히 보안 설정이 많으니 하나씩 차근차근 따라가면 돼요.
출처: 문서
본문
아래 다이어그램은 함수 워커가 별도 머신에서 별도 프로세스로 실행되는 방식을 보여줘요.
알아두기: 다이어그램의 Service URL은 Pulsar 클라이언트와 Pulsar admin이 Pulsar 클러스터에 연결할 때 사용하는 Pulsar 서비스 URL을 나타내요.
별도로 실행되는 함수 워커를 설정하려면 다음 단계를 완료해요.
1단계: 별도 실행하도록 함수 워커 구성 (Configure function workers to run separately)
알아두기: 함수 워커를 별도로 실행하려면
conf/broker.conf파일에서functionsWorkerEnabled를 기본값(false)으로 유지해야 해요.
워커 매개변수 구성 (Configure worker parameters)
conf/functions_worker.yml 파일에서 워커에 필요한 매개변수를 구성해요.
workerId— 워커 노드의 식별자예요. 클러스터 전체에서 고유하며 타입은 문자열이에요.workerHostname— 워커 노드의 호스트 이름이에요.workerPort— 워커 서버가 수신 대기하는 포트예요. 커스터마이즈하지 않으려면 기본값을 유지해요. 평문(plaintext) 포트를 비활성화하려면null로 설정해요.workerPortTls— 워커 서버가 수신 대기하는 TLS 포트예요. 커스터마이즈하지 않으려면 기본값을 유지해요. TLS 암호화 설정에 대한 자세한 내용은 설정 문서를 참고해요.
알아두기: 함수 워커에 접근해 함수를 관리할 때,
pulsar-adminCLI나 클라이언트는 구성된workerHostname과workerPort를 사용해--admin-url을 생성해야 해요.
함수 패키지 매개변수 구성 (Configure function package parameters)
conf/functions_worker.yml 파일에서 numFunctionPackageReplicas 매개변수를 구성해요. 이 값은 함수 패키지를 저장할 복제본 수를 나타내요.
알아두기: 프로덕션 배포에서 고가용성을 보장하려면
numFunctionPackageReplicas를 bookie 수와 같게 설정해요. 기본값1은 단일 노드 클러스터 배포용이에요.
함수 메타데이터 매개변수 구성 (Configure function metadata parameters)
conf/functions_worker.yml 파일에서 함수 메타데이터에 필요한 매개변수를 구성해요.
pulsarServiceUrl— 브로커 클러스터의 Pulsar 서비스 URL.pulsarWebServiceUrl— 브로커 클러스터의 Pulsar 웹 서비스 URL.pulsarFunctionsCluster— Pulsar 클러스터 이름으로 설정해요 (conf/broker.conf파일의clusterName설정과 동일).
브로커 클러스터에 인증이 활성화되어 있으면, 함수 워커가 브로커와 통신하도록 다음 인증 설정을 구성해야 해요.
brokerClientAuthenticationEnabled— 함수 워커가 브로커와 통신할 때 사용하는 브로커 클라이언트 인증을 활성화할지 여부.clientAuthenticationPlugin— 워커 서비스에서 사용하는 Pulsar 클라이언트가 사용할 인증 플러그인.clientAuthenticationParameters— 워커 서비스에서 사용하는 Pulsar 클라이언트가 사용할 인증 매개변수.
보안 설정 활성화 (Enable security settings)
인증이 구성된 클러스터에서 함수 워커를 별도로 실행하면, 함수 워커는 브로커와 통신하고 들어오는 요청을 인증해야 해요. 따라서 브로커가 요구하는 인증·인가 속성을 구성해야 해요.
알아두기: 서버가 들어오는 요청을 인증하도록 함수 워커의 인증·인가를 모두 구성하고, 브로커와 통신하도록 클라이언트 인증도 구성해야 해요.
예를 들어 토큰 인증을 사용한다면 conf/function-worker.yml 파일에서 다음 속성을 구성해야 해요.
brokerClientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationToken
brokerClientAuthenticationParameters: file:///etc/pulsar/token/admin-token.txt
configurationMetadataStoreUrl: oxia://oxia-1.example.com:6648/broker # auth requires a connection to the metadata store; Oxia is recommended for new clusters
# configurationMetadataStoreUrl: zk:zookeeper-cluster:2181 # alternatively, use ZooKeeper as the metadata store
authenticationProviders:
- "org.apache.pulsar.broker.authentication.AuthenticationProviderToken"
authorizationEnabled: true
authenticationEnabled: true
superUserRoles:
- superuser
- proxy
properties:
tokenSecretKey: file:///etc/pulsar/jwt/secret # if using a secret token, key file must be DER-encoded
tokenPublicKey: file:///etc/pulsar/jwt/public.key # if using public/private key tokens, key file must be DER-encoded
함수 워커에서는 다음 보안 설정을 활성화할 수 있어요.
- TLS 암호화 활성화
- 인증 공급자 활성화
- 인가 공급자 활성화
- 종단 간(end-to-end) 암호화 활성화
TLS 암호화 활성화 (Enable TLS encryption)
TLS 암호화를 활성화하려면 다음 설정을 구성해요.
useTLS: true
pulsarServiceUrl: pulsar+ssl://localhost:6651/
pulsarWebServiceUrl: https://localhost:8443
tlsEnabled: true
tlsCertificateFilePath: /path/to/functions-worker.cert.pem
tlsKeyFilePath: /path/to/functions-worker.key-pk8.pem
tlsTrustCertsFilePath: /path/to/ca.cert.pem
// The path to trusted certificates used by the Pulsar client to authenticate with Pulsar brokers
brokerClientTrustCertsFilePath: /path/to/ca.cert.pem
TLS 암호화에 대한 자세한 내용은 TLS 전송 암호화 문서를 참고해요.
인증 공급자 활성화 (Enable authentication providers)
함수 워커에서 인증 공급자를 활성화하려면, authenticationProviders 매개변수를 활성화하려는 공급자로 바꿔요.
authenticationEnabled: true
authenticationProviders: [provider1, provider2]
mTLS 인증 공급자의 경우 아래 예시를 따라 필요한 설정을 추가해요.
brokerClientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationTls
brokerClientAuthenticationParameters: tlsCertFile:/path/to/admin.cert.pem,tlsKeyFile:/path/to/admin.key-pk8.pem
authenticationEnabled: true
authenticationProviders: ['org.apache.pulsar.broker.authentication.AuthenticationProviderTls']
SASL 인증 공급자의 경우 properties 아래에 saslJaasClientAllowedIds와 saslJaasServerSectionName을 추가해요.
properties:
saslJaasClientAllowedIds: .*pulsar.*
saslJaasServerSectionName: Broker
토큰 인증 공급자의 경우 properties 아래에 필요한 설정을 추가해요.
properties:
tokenSecretKey: file://my/secret.key
# If using public/private
# tokenPublicKey: file://path/to/public.key
알아두기: 키 파일은 DER(Distinguished Encoding Rules)로 인코딩되어야 해요.
인가 공급자 활성화 (Enable authorization providers)
함수 워커에서 인가를 활성화하려면 다음 단계를 완료해요.
functions_worker.yml파일에서authorizationEnabled,authorizationProvider,configurationMetadataStoreUrl을 구성해요. 인증 공급자는 네임스페이스 정책을 받기 위해configurationMetadataStoreUrl에 연결해요.
authorizationEnabled: true
authorizationProvider: org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider
configurationMetadataStoreUrl: <meta-type>:<configuration-metadata-store-url>
- 슈퍼유저 역할 목록을 구성해요. 슈퍼유저 역할은 모든 admin API에 접근할 수 있어요. 다음 구성은 그 예시예요.
superUserRoles:
- role1
- role2
- role3
BookKeeper 인증 구성 (Configure BookKeeper authentication)
BookKeeper 클러스터에 인증이 활성화되어 있으면, 함수 워커에 다음 BookKeeper 인증 설정을 구성해야 해요.
bookkeeperClientAuthenticationPlugin— BookKeeper 클라이언트의 인증 플러그인 이름.bookkeeperClientAuthenticationParametersName— BookKeeper 클라이언트의 인증 플러그인 매개변수(이름과 값 포함).bookkeeperClientAuthenticationParameters— BookKeeper 클라이언트의 인증 플러그인 매개변수.
2단계: 함수 워커 시작 (Start function workers)
알아두기: 함수 워커를 시작하기 전에 함수 런타임이 구성되어 있는지 확인해요.
pulsar-daemonCLI 도구로 함수 워커를 백그라운드에서 시작할 수 있어요.
bin/pulsar-daemon start functions-worker
- 함수 워커를 포그라운드에서 시작하려면
pulsar-adminCLI를 다음과 같이 사용해요.
bin/pulsar functions-worker
3단계: 독립 함수 워커용 프록시 구성 (Configure proxies for standalone function workers)
함수 워커를 별도 클러스터에서 실행하면, admin REST 엔드포인트가 아래 그림처럼 두 클러스터로 나뉘어요. functions, function-worker, source, sink 엔드포인트는 워커 클러스터가 담당하고, 나머지 엔드포인트는 브로커 클러스터가 담당해요. 이 때문에 pulsar-admin CLI에서 상황에 맞는 올바른 서비스 URL을 사용해야 해요. 이런 불편함을 해소하려면 admin 서비스의 중앙 진입점 역할을 하는 프록시 클러스터를 시작하면 돼요.
팁: 아직 프록시 클러스터를 설정하지 않았다면, 배포 안내를 따라 프록시를 배포해요.
함수 관련 admin 요청을 함수 워커로 라우팅하도록 프록시를 활성화하려면, conf/proxy.conf 파일에서 다음 설정을 수정해요.
functionWorkerWebServiceURL=<pulsar-functions-worker-web-service-url>
functionWorkerWebServiceURLTLS=<pulsar-functions-worker-web-service-url>
더 알아보기 (Learn more)
- 브로커와 함께 함수 워커를 실행하는 방법은 함수 워커 함께 실행 문서를 참고해요.
- 함수 워커 설정 전반은 함수 워커 문서에서 확인할 수 있어요.
- TLS 전송 암호화 설정이 궁금하다면 TLS 전송 암호화 문서를 살펴보세요.