GH GambleHub

오브젝트 스토리지: MinIO, S3

간략한 요약

객체 스토리지는 높은 내구성과 수평 스케일로 S3 API를 통해 액세스 할 수있는 평평한 키 공간 (버킷/객체) 입니다. MinIO는 Kubernetes에서 S3- 호환성 온-프렘/을 제공합니다. Amazon S3는 풍부한 생태계를 갖춘 클라우드 벤치 마크입니다. 주요 솔루션: 결함 허용 체계 (레플리카/EC), 보안 정책, 스토리지 클래스 및 라이프 사이클, 대기 시간/대역폭에 대한 SLO 및 월 1TB/월 당 비용.

건축과 원리

단위: 버킷 → 객체 (키), 메타 데이터 (ETag, 버전, 태그), ACL/정책.
API: PUT/GET/DELETE, 멀티 파트 업로드, 제시된 IM, 복사, ListV2, 선택 (서버 선택), 알림.
일관성-오늘의 S3/MinIO는 쓰기 후 읽기 작업을위한 강력한 일관성입니다.
장수 대 가용성: 노드/영역/영역에 분포 된 복제/소거 코딩으로 달성됩니다.

제품 사용 사례

미디어/컨텐츠 (아트, 미리보기, 제공자 카탈로그): 저렴한 스토리지 + CDN입니다.
로그/원시 이벤트/가상: 저렴한 섭취, Parquet/JSON 형식.
데이터베이스 및 아티팩트의 백업/스냅 샷: verioning + Object Lock (WORM).
ML/분석: 데이터 세트, 모델, 체크 포인트; 안전한 발행을 위해 예약 된 탭.
보고/준수: 정책 별 불변성 및 유지.

선택: S3 (클라우드) vs MinIO (온 프렘/K8)

S3 (클라우드):
  • 장점: 작동 가능성, 스토리지 클래스 (표준/IA/빙하 유사), 내장 다중 영역, 생태계.
  • 단점: 발신 트래픽 비용, 데이터 현지화 요구 사항.
MinIO (on-prem/K8):
  • 장점: 데이터/지리/네트워크/비용에 대한 제어, NVMe의 고성능, 멀티 테넌시.
  • 단점: 측면에서의 악용 (업그레이드, 관찰 가능성, 드라이브/네트워크).

결함 허용 오차 및 코딩 체계

복제 (N 사본): 용량은 간단하지만 비효율적입니다.
Erasure Coding (EC k + m): 객체를 k data + m 코드 블록으로 나눕니다. m- 폴드 복제본에 비해 실패에서 살아남아 공간을 절약합니다.
MinIO 토폴로지: 소거 세트, 풀의 노드; 4 개의 노드, 다른 서버/랙의 디스크가 바람직합니다.
다중 영역/다중 사이트: 영역/영역 별 복제본, 버전별로 충돌 해결 기능이있는 활성 활성 버킷.

보안 및 액세스

인증 및 권한

루트/서비스 사용자, 정책 IAM (JSON), 임시 키 (서명 된 역할) 의 STS.
버킷 정책: 's3: GetObject', 's3: PutObject', 's3: DeleteObject', 접두사/태그/소스 IP/참조 조건.

IAM 정책의 예 (접두사 만 읽음):
json
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":["s3:GetObject","s3:ListBucket"],
"Resource":[
"arn:aws:s3:::media-bucket",
"arn:aws:s3:::media-bucket/public/"
],
"Condition":{"StringLike":{"s3:prefix":["public/"]}}
}]
}

암호화

SSE-S3: 볼트 서버 키.
SSE-KMS: 외부/임베디드 KMS (Vault, 클라우드 KMS) 의 키, 회전 및 감사 제어.
SSE-C: 키는 클라이언트 (중요 경로) 에서 제공합니다.
기내 암호화: TLS, 서비스/게이트웨이 간 mTLS.

불변성

버킷 버전 지정 (삭제/덮어 쓰기 보호).

Object Lock (WORM): ре

라이프 사이클 정책 및 스토리지 클래스

수명주기: "따뜻한/차가운" 클래스로의 전환, 이전 버전의 삭제, 미리보기/임시 파일의 보존 기간.
찢어짐 MinIO: on-prem → 클라우드 S3 클래스/외부 버킷; 접두사/태그로 선택하십시오.

수명주기 예 (30 일 후 만질 수없는 버전 삭제, 90 일 후에 보관):
xml
<LifecycleConfiguration>
<Rule>
<ID>archive-90</ID><Status>Enabled</Status>
<Filter><Prefix>logs/</Prefix></Filter>
<NoncurrentVersionExpiration><NoncurrentDays>30</NoncurrentVersionExpiration>
<Expiration><Days>365</Days></Expiration>
</Rule>
</LifecycleConfiguration>

복제 및 다중 사이트

CRR/SRR: 교차/동일 지역, 선택적 접두사/태그.
액티브 액티브: 버전이 포함 된 양방향 복제본; 우선 순위/충돌을 지정하는 것이 중요합니다.
검증 및 지연: 지연 지표, 전달되지 않은 객체에 대한 경고.

알림 및 통합 (이벤트 중심)

MinIO 버킷 알림: Kafka, NATS, Webhook, AMQP, MQTT, Elastic검색.
계정: 's3: ObjectCreated:', 's3: ObjectRemoved:', 's3: Replication:'.
패턴: 자동 생성 미리보기, DWH의 ETL, 가상 업데이트, 사기 방지 신호.

'mc' webhook 구성의 예:
bash mc event add my/minio/media arn:minio:sqs::WEBHOOK:thumbs \
--event put --prefix uploads/

성능 프로파일

대기 시간: p95/p99 GET/PUT; API 핫 경로의 대상은 로컬 데이터 센터에서 p95 GET 약 30-50ms입니다.
처리량: 멀티 파트 -PUT (파트 8-64MB), 병렬 다운로드, 파이프 라이닝.
네트워크: 25-100 GbE, 공장 내부의 점보 MTU, NIC의 RSS/RPS, NUMA 선호도.
디스크: 핫 워킹 세트 용 NVMe, 아카이브 용 HDD; MinIO는 소거 세트에서 디스크 대칭을 갖습니다.
클라이언트 튜닝: 'max _ concommency' SDK 증가, TCP를 재사용, 정확한 타임 아웃 및 백오프.

관찰 및 경고

MinIO/S3 메트릭: 작업 (PUT/GET/DELETE/List), 바이트, 오류, 대기 시간, 복제 지연, 치유.
호스트/드라이브: SMART/온도, I/O 대기열, 방울/재전송.

SLO (예):
  • 버킷 가용성은 99 이상입니다. 95 %/30 일.
  • p95 GET 지역 (로컬), p95 PUT 지정 150ms (멀티 파트).
  • 복제 성공 99 이상. 9%, 지연 60s p95.
  • 결함이있는 디스크의 복구 시간은 약 24 시간입니다 (치유는 음식을 "죽이지" 않습니다).

FinOps and Economics

1TB/월의 비용: 디스크 + 감가 상각 + 에너지 + 네트워크 + 작동 (프렘 용).
탈출 비용: 클라우드에서 캐시/CDN을 계획하고 오프라인 미리보기를 계획합니다.
눈물/수명주기: 콜드 데이터의 공격적인 움직임, 압축/분할 (Parquet).
쿼터 및 예산: 쓰레기통/바이트/RPS의 임차인 당 한도는 "$/1 M 요청" 을보고합니다.
ETL에 대한 스팟/선점 가능한 계산: MinIO 옆에서 처리를 수행하는 경우.

배포 MinIO

베어 메탈 (EC 단순화 클러스터)

bash minio server http://node{1...4}/export{1...8} \
--console-address ":9001" --address ":9000"
권장 사항:
  • 4 개의 노드, 노드 당 8-12 개의 디스크; 동일한 디스크 크기/속도.
  • 랙/전원/스위치로 노드를 게시합니다.
  • 리버스 프록시/인 그레이스 (SL 1. 2+/1. 3, HSTS), 내부 클라이언트 용 mTLS.

쿠 베르네 테스 (임차인)

NVIDIA/MinIO 운영자 (CRD 'Tenant'), StatefulSet 리스트 (PV/PVC), 친 화성, 토폴로지 확산.
리소스: 네트워크 흐름을위한 CPU 풀, FD (high 'ulimite), 개별 스토리지 클래스 (NVMe/HDD).
업데이트: 치유/복제 및 SLO 컨트롤을 사용하여 번갈아 가며.

'mc' 도구 (MinIO 클라이언트)

bash alias mc alias set my https://minio. example KEY SECRET

create bucket, enable versioning and WORM mc mb my/media mc version enable my/media mc retention set --default COMPLIANCE 365d my/media

read-only policy for public/
mc policy set json./policy. json my/media

replication to cloud bucket mc replicate add my/media --remote s3/backup --replicate "delete, metadata, delete-marker"

Kafka mc event add my/media arn: minio: sqs:: kafka: k1 --event put, delete

제품 통합 패턴

직접적인 키 발행없이 다운로드/다운로드를 위해 PK을 예약했습니다.
내용 검증: 크기/유형 제한, 알림의 안티 바이러스 스캐너.
메타 데이터/태그: 라이프 사이클/아카이브/중재 용.
객체 앞의 CDN: 최종 사용자의 출구 및 대기 시간을 줄였습니다.
RAG/ML: 임베딩/파편 저장, 데이터 세트 표시, 모델 버전 (S3에 대한 모델 레지스트리).

안전 및 준수

감사 로그: 누가/무엇/언제 (PUT/GET/DELETE), 별도의 WORM 버킷에서 변경할 수없는 로그.
네트워크 제어: 전용 VLAN/VRF, 보안 그룹/ACL, 개인 엔드 포인트.
KMS 및 주요 교체: 연간 교체 정책, 개봉시 DUAL 제어.
PII/PCI: 버킷 세분화, 엄격한 액세스 정책 (데이터 태그 별 ABAC), 보고를위한 Object Lock.

출시 점검표

  • 선택된 데이터 클래스: 핫/워밍/콜드; RPO/RTO/SLO 목표.
  • 소거 세트 및 설계된 노드 수; 실패 테스트.
  • TLS/mSL, KMS, IAM/STS, 버킷 정책 및 버전 지정.
  • 생명주기/찢어짐 및 복제; 중요한 버킷을위한 객체 잠금.
  • Kafka/Webhook에서의 알림; 안티 바이러스/ETL/미리보기.
  • 모니터링 (작업, 복제 로그, 디스크, 네트워크), 경고 및 대시 보드.
  • 업데이트/확장 계획 (롤링), 런북 치유/재조정.
  • 임차인 당 쿼타/청구/보고.

공통 오류

하나의 소거 세트 → 예측할 수없는 대기 시간에 NVMe와 HDD를 혼합합니다.
유지/유지 → 손실/랜섬웨어 위험이 없습니다.
멀티 파트 오프/파트 너무 작은 → 낮은 대역폭.
복제 할 수없는 중요한 데이터 버킷.
DR/복구 테스트 부족 및 탈출 비용 관리.

iGaming/fintech 특정

로그/원시 이벤트: Parquet + 라이프 사이클 (핫 7-30 일, 보관/찢어짐).
미디어 컨텐츠 및 제공 업체: GET, CDN을 제공하고 공격적인 캐시 제어를 제공합니다.
지갑/데이터베이스 백업: verioning + WORM, 일반 DR 연습, 복제품에 대한 격리 된 계정/클러스터.
사기 방지/가상: 낮은 판독 대기 시간 (현지 MinIO), 계산을위한 Kafka의 이벤트.
보고 및 규제 기관: Object Lock (규정 준수), 변경 불가능한 감사 로그, 명확한 보존 정책.

합계

S3 호환 객체 스토리지는 최신 플랫폼의 기본 "벽돌" 입니다. 올바른 EU/복제 체계, 하드 IAM/암호화/유지, 신중한 수명주기/찢어짐 및 알림은이를 미디어, 로그, 백업 및 ML 데이터를위한 신뢰할 수있는 "수동 디스크" 로 바꿉니다. MinIO에서는 제어 및 온 프렘/K8 속도를 얻습니다. S3 - 클라우드의 규모와 생태계. IaC의 모든 것을 기록하고 SLO 및 비용을 측정하십시오.이 시설은 제품에 대한 예측 가능하고 안전하며 경제적 인 지원이 될 것입니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.