Server Setting by kr
집의 기본 세팅
목표: 집에서 사용 중인 기술 환경과 세팅을 정리해, 독자들에게 영감을 주거나 유사한 세팅을 할 수 있도록 도움을 주는 것을 목표로 합니다.
기대 사항 : 저는 Data Scientist로서 일부 세팅이 부족하거나 최적화되지 않을 수 있습니다. 이에 대한 피드백은 언제든 환영하며, 지속적으로 내용을 업데이트할 예정입니다.
개요
1. 서론
- 블로그 글을 쓰게 된 배경
- 집에서 다양한 기술 환경을 세팅하며, 이를 정리하지 않으면 관련 자료를 찾기가 어렵다고 느꼈습니다.
- 독자들에게 참고자료와 설정 팁을 공유해, 비슷한 환경을 구축하거나 개선하는 데 도움을 주고자 합니다.
- 기술 세팅의 특징
- 다양한 운영체제를 활용하며, 각 OS에서 실험적으로 여러 애플리케이션을 설치 및 운영합니다.
- 독자에게 기대하는 점
- 기술 세팅에 대한 피드백 및 개선 아이디어를 공유해 주시면 감사하겠습니다.
2. 하드웨어 구성
- 1) 장비 소개
| Equipment | Model | CPU | GPU | Memory | Storage | OS |
|---|---|---|---|---|---|---|
| mac mini | mac mini M1, 2020 | 4 core Apple Firestorm 3.2 GHz / 4 core Apple Icestorm 2.06 GHz |
8 Core Apple G13G 1.28 GHz +NPU : 16 Core 4 gen Neural Engine |
16GB | ssd:256G + ssd(nvme) : 500G + hdd: 1T |
Sequoia - 15.1.1(24B91) |
| raspberry 3 | Raspberry Pi 3 Model B Rev 1.2 | 1.2 GHz ARM Cortex-A53 | Broadcom VideoCore IV MP2 400 MHz | 1 GB LPDDR2-450 SDRAM | sd : 64G | Debian GNU/Linux 12 (bookworm) - Linux raspberrypi 6.6.31+rpt-rpi-v8 |
| raspberry 4 | Raspberry Pi 4 Model B Rev 1.1 | BCM2711 SoC/ 1.8 GHz ARM Cortex-A72 MP4 |
BCM2711 SoC/ Broadcom VideoCore VI MP2 500 MHz |
4 GB LPDDR4-3200 SDRAM | sd :64G | Ubuntu 20.04.3 LTS |
| ordroid | ODROID-HC4 | Quad-core Cortex-A55 | ARM G331 MP2 GPU | 16G | sd : 32G hdd : 6T |
Ubuntu 20.04.6 LTS - Linux odroid 4.9.337-92 |
| window notebook | HP Pavilion - 14-al150tx | i7-7500U (2.7GHz) - 2 Core | 940MX | DDR4 memory (4GiB) | ssd : 256G hdd : 1T |
Windows 10 |
-
2) 하드웨어 배치 및 연결
- 공유기 : 샤오미 AX1800
- 유선 공유 : windows,raspberry 4, raspberry3, ordroid
- 무선 공유 : mac mini
- 공유기 : 샤오미 AX1800
-
2) Power 연결
**3. 소프트웨어 **
-
**1) Application **
- 모든 PC 설치 되어 있는 것
- Docker , cadvisor , portainer_agent(mac 제외 : host), rclone
- 각 PC 설치
- macOS : Airflow,Portainer
- raspberry 4 : Cronicle , Grafana , Ghost , Redis (+ Exporter)
- raspberry 3 : Vault
- ordroid : Prometheus, Postgres (+ Exporter) , Mariadb (+ Exporter),mongodb (+ Exporter)
- Windows 10
- wsl
- wcs : windows_exporter --> 서비스가 아닌 수동으로 실행하고 있음
- 모든 PC 설치 되어 있는 것
-
2) 개발 환경
- VSCode
- local VSCode + github
- code cli를 설치하여, remote 접근(vscode.dev를 이용)이 가능하도록 함
- local VSCode + github
- 프로젝트 관리
- Obsidian으로 관리
- VSCode
**4. 네트워크 & 모니터링 **
-
1) 네트워크 기본 구조
- 샤요미 공유기에 192.168.0.XXX로 연결 --> 서버 네트워크
- iptime으로 192.168.1.XXX는 TV 같은 네트워크로 연결
-
2) 모니터링과 관리
- Prometheus + Grafana를 이용한 모니터링
- cAdvisor, + 다양한 종류의 Exporter 를 사용
- 현재 모니터링(데이터 수집)만 하고 있으며, alarm은 따로 설정 하지 않고 있음
- Portainer는 현재 도커에 어떤게 사용되고 있는지 확인
- Prometheus + Grafana를 이용한 모니터링
5. 데이터 관리 및 백업
- 데이터 저장 및 백업 방식
- 현재는 따로 backup 하지 않음
- 각 서버의 hdd(혹은 sdd,sd)를 사용
- 현재 ordroid에 hdd 6T 가 있어서, 여기 저장소를 사용
6. 활용 사례
-
현재 서버 활용 사례
- Airflow를 이용하여 ebs 녹음
- airflow 하루마다 Trigger --> EBS 녹음(raspberry 4) --> dropbox에 upload --> 휴대폰을 이용하여 청취
- raspberry 4에 Ghost 블로그 설치
- 블로그는 설치하였으나, 딱히 포스팅은 현재 없음
- rclone을 이용하여 docker-compose.yml을 구글 drive에 back up
- Airflow를 이용하여 ebs 녹음
7. 현재의 문제점
-
다양한 Application이 존재 하지만, 딱히 사용성을 느끼는 것이 없음
- 이유 : 그냥 한번 해볼까라는 생각으로 작업한 것이 많아서, detail 하고 deep 하게 진도를 나가지 않았음
- Application 관련 필요 사항
- Prometheus : Exporter 다운 시 알림 설정 필요
- Grafana
- 현재 대시보드는 각 exporter의 대표 대시보드를 사용하는데, 딱히 눈에 뜨이지 않음
- 웹페이지로 보고는 있는데, 한눈에 보이는 것이 아니기 때문에 잘 안보게 됨 --> slack alarm으로 보여 줬으면 좋겠음
- 각 exporter의 내용이 내가 생각하는 수치들과 맞지 않음 --> 테스트 필요
- Airflow
- airflow의 기본적 docker-compose를 사용하는데, 리소스를 많이 먹어서 그런지 dag 가 web 에서 안보일때가 존재
- 기존에 낮은 버젼(기억안남) 관련 값이 db에 남아 있었는데, 그것 때문인제 reference dag가 사라지지 않고 있음
- reference dag를 수동으로 지우니, 지우지 않고 계속 살아남
- airflow의 로그가 상상이상으로 많이 쌓임 --> log 관리하는 dag를 만들 예정
- Docker
- 다른 곳의 docker는 문제가 없으나, mac db의 docker는 굉장히 크기를 많이 차지한다고 판단
- 현재 mac의 시스템에 150G를 차지하는데, 이게 어디서 찾지 하고 있는지 알수 없음
- rclone
- 현재 google drive의 api의 토큰을 refresh 하기 위해서 일주일에 한번씩 수동으로 작업
- 현재 test 계정이기 때문이라고 생각함. Production으로 가면 개인 정보 관련 주의 사항을 인증하라고 해서 진행을 하지 않고 있음
- 일주일에 한번씩이기 때문에 부담은 아니지만, 엄청 귀찮음
-
하드웨어 관련 문제점
- 기존에 raspberry 3의 sd 카드가 뻑이 나서 부팅이 되지 않았음
- 현재 내가 가지고 있는 서버들이 멀쩡한 것은 잘 없기 떄문에, 해당 문제는 언제나 발생할 가능성이 높음
- 이런 경험으로 저는 저는 docker-compose.yml을 사용하여 대부분의 Application을 설치 운영 중
- 이는 Application이 yml 파일로 control 되며, 해당 파일만 back up(to google drive)을 하면, 추후에 다시 설치가 쉬음
8. 결론
- 이 글은 집에서 실험적으로 운영 중인 기술 환경을 정리한 내용입니다.
- 현재 문제점을 개선하거나 새로운 아이디어를 적용하면 내용을 업데이트할 계획입니다.
- 각 애플리케이션 설정 및 docker-compose 파일은 일부 정보 제외 후 공유를 검토 중입니다.
