Branch - rocksdb #376
youngtaekiim
started this conversation in
General
Replies: 2 comments
-
용량이 줄어드는 이유-> 정상적인 RocksDB 동작, 초기에는 WAL과 미압축 데이터가 많지만, 시간이 지나면서 백그라운드 compaction이 데이터를 효율적으로 압축하고 정리하여 전체 용량이 줄어드는 것
|
Beta Was this translation helpful? Give feedback.
0 replies
-
|
매 초 3개 노드 metric 쓰는 상황에서 24h 방치 테스트 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Release
rocksdb 테스트용 branch. 어느 정도 완료되면 demo25 branch와 merge 예정
주요 이슈
nodeagent binary - FIXED
nodeagent는 container 이미지가 아니라 별도의 binary 로 release 됩니다. 따라서 큰 dependency 없이 실행됨을 보장하기 위해 static linking한 binary를 사용하고, 이를 위해서는 Rust 에서 target으로
x86_64-unknown-linux-musl,aarch64-unknown-linux-musl와 같이 musl 타겟으로 빌드를 해야 합니다. 그러나 해당 프로젝트가reqwest(HTTP client 등에 자주 쓰임) 와rocksdb-syscrate 를 사용하는 경우 필요한 library 가 musl 에 존재하지 않아 빌드가 되지 않습니다.대안은 아래 2가지 입니다.
아래 container image 제약사항과 맞물려 2번째 안으로 진행 예정이었으나, 빼온 바이너리가 lib 버전 호환이 안됨
결국 cargo build해서 가져옴
Piccolo container image - FIXED
(이것만의 문제는 아니겠지만) rocksdb-sys 가 GitHub Actions 에서 build가 굉장히 오랜 시간이 소요됩니다.
일반
demo25branch 의 경우 container image 빌드가 대략 3시간 정도 소요됩니다.rocksdbbranch 의 경우 Actions에서 지원하는 시간 제한인 6시간을 넘겨서 빌드 성공하지 못했습니다.즉 piccolo를 구동하고자 하는 환경에서 직접 이미지 빌드를 진행해야 합니다.
Container image - rocksdbservice
glue 라서 자주 변경되지 않는 코드이기 때문에 연말 데모에서는 한 번 빌드해서 이미지 업로드 하기로 결정 했습니다.
별도의 Dockerfile을 가지고 있기 때문에 일단
docker buildx로 빌드해서 GHCR에 업로드 했습니다.대책
빌드 시간 단축 - 완료
server,player,agent 로 나누어진 폴더 구조 때문에 Cargo.lock이 3번 생성됨 -> 대동소이한 라이브러리 3번 빌드함
하나로 통합 고려
--> 통합 완료.
src/Cargo.toml참조nodeagent musl target 빌드 - 완료
common과 dependency를 끊으면 될거 같음
--> common dependency 삭제 후 musl 빌드 성공. GitHub Actions로 바이너리 릴리즈 확인
common::etcd , common::rocksdb 호환
return 형이 달라서 아직 완전히 호환 안됨. 차차 수정해보기
test 해보기
nodeagent를 local build로 수행해서
./install_node_agent.sh사용이 불가능해서 아래와 같이 진행했고 현재 binary가 release되고 있기 때문에 아래 과정은 불필요함Piccolo 빌드 및 실행
rocksdbbranch 다운로드containers폴더의piccolo-server.yaml,piccolo-player.yaml에서 pullpiri 이미지를 모두localhost/pullpiri:latest로 변경주의 (rocksdbservice 이미지는 변경하지 말것)
src/settings.yaml에서 IP 변경 (single node면 그냥 127.0.0.1 써도 무방)make image실행make install진행. 여기까지 하면podman ps에서 죽는 서비스 없이 다 나와야 함nodeagent 빌드 및 실행
src/agent/nodeagent폴더 들어가서cargo build --release실행 후 나온 binary를target/release폴더에서 꺼내서/opt/piccolo폴더 밑으로 복사doc/scripts/node_ready_check.sh를 열어서 191 라인부터 196라인까지 주석처리 (etcd port 체크하는 부분)/usr/local/bin/폴더 밑에 복사/etc/piccolo폴더 만들고etc/piccolo/nodeagent.yaml파일 생성. 내용은 아래와 같음systemctl daemon-reloadsystemctl restart nodeagentBeta Was this translation helpful? Give feedback.
All reactions