erpc worker 실패 해결하기

erpc worker가 출력한 메시지의 시작 부분을 찾아, 해당 행에 적힌 대로 하세요.
이 페이지는 프리릴리스인 ERPC CLI v0.1.0-rc.4를 설명합니다.

오류 메시지와 대처 방법

worker 실패에는 erpc의 코드와 종료 상태가 사용됩니다. 오류와 종료 코드를 참고하세요.
메시지(시작 부분)원인대처 방법
<app> cannot start without <SETTING>run.requires가 지정한 설정을 아무것도 설정하지 않음erpc worker secret put <SETTING>을 실행하거나, [vars]에 설정하거나, 그 설정을 하는 회선(--grpc, --unlimited)과 함께 배포하세요
your key was added but does not get inSSH 에이전트가 서명하지 않음: 1Password가 잠겨 있거나 요청이 허용되지 않음1Password 잠금을 해제하고 요청을 허용한 뒤 같은 명령을 다시 실행하세요. 중단된 곳부터 이어서 진행됩니다
1Password could not …: authorization timeout1Password가 승인을 요청했지만 아무도 응답하지 않음1Password에서 요청을 허용하고 다시 실행하세요
<NAME> is empty; nothing was keptsecret put이 빈 표준 입력을 읽음: 셸이 터미널이 아님터미널에서 실행하거나, 값을 파이프로 넣으세요
the keystore is locked, and nobody is at a terminal …터미널 없이 실행된 명령에 키스토어가 필요한데, 유지되고 있는 잠금 해제가 없음터미널에서 erpc worker secret unlock을 실행한 뒤 명령을 다시 실행하세요
nothing is kept under keystore:… on this machine값이 다른 머신의 키스토어에 보관되어 있음이 머신에서 erpc worker secret put <NAME> --replace를 실행하세요. 키라면 그 머신의 keystore 디렉터리 전체와 그 패스프레이즈를 가져오세요
release <id> failed: …; the server went back to <previous>새 릴리스가 헬스 체크를 통과하지 못함erpc worker logs를 확인하세요. 이전 릴리스는 계속 실행됩니다
… is locked: the trading key has not been handed over서버가 재부팅되었거나, 에이전트가 실패하거나 강제로 중지되어 systemd가 다시 시작했거나, stop --lock을 실행함erpc worker start
port <n> is taken: …계속 실행되도록 유지되는 다른 worker가 같은 헬스 체크 포트를 쓰고 있거나, 다른 프로그램이 그 포트에서 수신 대기 중임erpc.toml에서 앱에 고유한 포트를 지정한 뒤 다시 배포하세요
release <id> runs, and its WAF did not come up: …WAF가 수신 대기를 시작하지 못함. 가장 흔한 원인은 다른 프로그램이 waf.port를 쓰고 있는 것임erpc worker logs --waf를 확인한 뒤 포트를 비우거나 waf.port를 바꾸고 다시 배포하세요. 그동안에도 앱은 실행됩니다
waf.<key> … (check, deploy에서)[waf] 키가 허용 범위를 벗어났거나, waf.port가 1024 미만이거나 run.port, SSH, 헬스 체크의 포트와 같음erpc.toml을 수정하세요. erpc worker check는 모든 문제를 한 번에 보여 줍니다
the WAF's port <port> was not opened to … (firewall allow, deny, sync에서)이 변경이 서버가 아직 실행하지 않는 WAF 규칙 아래에서 새로운 누군가를 들여보내게 됨erpc worker deploy: 새 규칙을 적용한 다음 포트를 엽니다
<kind> line <id> did not become active in <n> minutes회선이 아직 설정 중임다시 배포해 더 기다리세요
OUT_OF_STOCK해당 리전에 그 요금제의 서버 여유가 없음--region <another>로 배포하세요
the start may or may not have gone through: …요청은 나갔지만 응답이 돌아오지 않았거나, 응답이 5xx, 408 또는 429였음같은 명령을 다시 실행하세요. 같은 요청을 보냅니다
this purchase, or another of the account's, is still being made …첫 요청이 아직 처리 중이거나, 계정의 다른 구매가 잠금을 잡고 있음잠시 후 같은 명령을 다시 실행하세요. 같은 요청을 보냅니다
… changed in 1Password since this command read it그사이 다른 머신이 인벤토리 항목을 기록함명령을 다시 실행하세요
the shared RPC takes none of the account's API keys from this machine (<n> tried) (secret put --from-account, erpc rpc call, erpc webhook run에서)계정의 모든 키가 이 머신에서 거부됨: 키가 만료되었거나, 계정에 활성 공유 RPC 요금제가 없거나, 키가 서버의 주소 같은 다른 주소로 제한되어 있음ERPC Web Dashboard에서 키의 만료일과 요금제를 확인하고 새 키를 만들 수 있습니다. 서버의 주소로 제한된 키라면 erpc worker secret put ERPC_API_KEY를 실행하고 키를 입력하거나 파이프로 넣으세요
shared: … HTTP 401 (벤치)공유 RPC가 키를 거부함: 활성 공유 RPC 요금제가 없거나 키가 잘못됨대시보드에서 요금제를 확인하거나 ERPC_API_KEY를 설정하세요
shared: … HTTP 429 (벤치)요금제의 속도 제한--interval 150 이상을 사용하세요

erpc가 기록하지 못한 구매

이전 요청이 서버나 회선을 시작했을 수 있는데 erpc가 그것을 기록하지 못했다면, 대시보드에서 계정의 서버와 회선을 확인하세요. 서버는 erpc worker deploy --vps <ID>로 이어받고, 원하지 않는 것은 종료하세요. 그런 다음 erpc.toml의 [env.<name>.starting]에서 해당 항목을 직접 제거하세요. erpc에는 이 항목을 지우는 플래그가 없으며, 제거하기 전까지는 같은 명령이 같은 요청을 보냅니다.

서버가 탈취되었을 수 있다면

  1. 먼저 erpc worker backup off를 실행해 서버의 백업 액세스 키를 폐기하세요. off는 서버가 이미 읽은 내용을 되돌리지 않습니다.
  2. 서버의 트레이딩 키에서 자금을 옮기고, 서버의 시크릿을 교체하세요.
  3. ERPC Web Dashboard에서 서버를 리빌드한 뒤 다시 배포하세요.
리빌드로 서버의 SSH 호스트 키가 바뀌었다면, 고정된 키를 업데이트할 때까지 erpc는 그 서버를 거부합니다. 배포는 코드를 되돌려 놓지만 앱의 상태 데이터는 되돌려 놓지 않으며, 상태 데이터는 백업으로만 복원할 수 있습니다(앱의 상태 데이터 백업).

erpc가 절대 하지 않는 일

  • 키, 시크릿, 또는 그것을 담은 URL을 명령줄에 올리는 일.
  • 트레이딩 키나 앱의 시크릿을 파일에 쓰는 일. 단 하나의 예외는 사용자 머신에 있는 erpc의 키스토어로, 여기서는 각 값이 사용자의 패스프레이즈로 암호화됩니다. 서버에서는 erpc worker backup on이 서버 자체의 백업 키를 root 전용 파일에 남깁니다.
  • 가격을 보여 주지 않고 무언가를 시작하는 일.
  • 서버를 열어 두는 일: 앱이 처음 시작되기 전에 방화벽이 적용됩니다.
  • 호스트 키가 고정된 키와 일치하지 않는 서버에 접속하는 일.
worker 가이드에는 WAF의 메시지를 포함해 모든 메시지가 나와 있습니다.