본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

LiteFS 프라이머리 결정하기

원문 보기 위키 갱신

LiteFS 디렉터리의 .primary 파일로 현재 프라이머리 노드를 확인하는 방법을 설명합니다. 앱은 이 파일을 읽어 쓰기 요청을 어디로 보내야 할지 판단할 수 있어요.

출처: 문서

본문

LiteFS 디렉터리(보통 /litefs)에는 앱이 읽어서 현재 프라이머리 노드를 결정할 수 있는 .primary 파일이 제공됩니다. 이 파일은 노드가 현재 레플리카이고 그리고 프라이머리 LiteFS 노드에 연결되어 있을 때만 존재합니다.

레플리카 노드에서 cat(1)로 내용을 볼 수 있어요.

$ cat /litefs/.primary
hostname.example.com

이 파일은 프라이머리 노드의 설정 파일에 지정된 hostname을 반환하거나, 지정되지 않은 경우 프라이머리 노드 운영체제에서 hostname(2)를 읽습니다. 끝에는 줄바꿈(newline)이 추가됩니다.

.primary 파일을 사용할 수 없다면 로컬 LiteFS 노드는 다음 중 하나예요.

  1. 현재 프라이머리이며 쓰기를 받아들일 수 있거나,
  2. 프라이머리를 결정하거나 연결할 수 없는 상태.

노드가 쓰기 요청을 받으면 .primary 파일을 확인하고, 파일이 존재하면 요청을 프라이머리로 전달해야 해요. 파일이 존재하지 않으면 요청은 로컬에서 쓰기를 시도해야 합니다.

로컬 노드가 프라이머리가 아니라면 롤백 저널(rollback journal)을 사용할 때 SQLite가 SQLITE_READONLY 오류를 반환하고, 쓰기 어헤드 로그(write-ahead log)를 사용할 때는 disk I/O error를 반환해요. 아쉽게도 WAL을 사용할 때 LiteFS가 SQLite에 반환할 수 있는 더 나은 오류는 없습니다.

더 알아보기 (Learn more)