지역 복제를 사용한 Git Sync
지역 복제를 사용한 Git Sync (Git Sync with regional replication)
여러 지역에 걸쳐 여러 Grafana 인스턴스를 배포해요. 같은 Git 위치와 동기화해 어디서나 일관된 대시보드를 보장해요.
출처: 문서
본문
여러 지역에 걸쳐 여러 Grafana 인스턴스를 배포해요. 같은 Git 위치와 동기화해 어디서나 일관된 대시보드를 보장해요.
이 용도로 사용해요 (Use it for)
- 지리적 분포: 서로 다른 지역의 사용자 근처에 Grafana를 배포해요.
- 지연 시간 감소: 사용자가 자신의 위치에서 빠른 대시보드 접근이 필요해요.
- 데이터 주권: 특정 지역에 대시보드 데이터를 유지해요.
- 고가용성: 지역에 걸친 대시보드 가용성이 필요해요.
- 일관된 경험: 지역과 무관하게 모든 사용자가 같은 대시보드를 봐요.
아키텍처 (Architecture)
┌─────────────────────────────────────────────────────┐
│ GitHub Repository │
│ Repository: your-org/grafana-manifests │
│ Branch: main │
│ │
│ grafana-manifests/ │
│ └── shared/ │
│ ├── dashboard-global.json │
│ ├── dashboard-metrics.json │
│ └── dashboard-logs.json │
└─────────────────────────────────────────────────────┘
↕ ↕
Git Sync (shared/) Git Sync (shared/)
↕ ↕
┌────────────────────┐ ┌────────────────────┐
│ US Region │ │ EU Region │
│ Grafana │ │ Grafana │
│ │ │ │
│ Repository: │ │ Repository: │
│ - path: shared/ │ │ - path: shared/ │
└────────────────────┘ └────────────────────┘
저장소 구조 (Repository structure)
Git에서:
your-org/grafana-manifests
└── shared/
├── dashboard-global.json
├── dashboard-metrics.json
└── dashboard-logs.json
Grafana Dashboards 보기에서 (모든 지역):
Dashboards
└── 📁 grafana-manifests/
├── Global Dashboard
├── Metrics Dashboard
└── Logs Dashboard
- 모든 지역 인스턴스(US, EU 등)는 동일한 폴더 구조를 보여줘요
- 모든 지역에서 같은 폴더 이름 "grafana-manifests"
shared/경로에서 동기화된 같은 대시보드가 모든 곳에 나타나요- 모든 지역의 사용자는 같은 제목의 정확히 같은 대시보드를 봐요
구성 매개변수 (Configuration parameters)
모든 지역:
- Repository:
your-org/grafana-manifests - Branch:
main - Path:
shared/
작동 방식 (How it works)
- 모든 지역 인스턴스가
shared/에서 대시보드를 가져와요. - 어느 지역의 변경이라도 Git에 커밋돼요.
- 다른 지역은 다음 동기화(또는 webhook을 통해서)에서 업데이트를 가져와요.
- 변경 사항은 동기화 간격에 따라 지역 간에 전파돼요.
고려 사항 (Considerations)
- 쓰기 충돌: 서로 다른 지역의 사용자가 같은 대시보드를 동시에 수정하면 Git이 last-write-wins를 사용해요.
- 주 지역: 대시보드 변경을 만드는 주요 위치로 한 지역을 지정하는 것을 고려해요.
- 전파 시간: 변경 사항은 구성된 동기화 간격 내에 모든 지역으로 전파되거나, webhook이 구성되어 있다면 즉시 전파돼요.
- 네트워크 안정성: 모든 지역이 Git 저장소에 안정적으로 연결되는지 확인해요.