피드로 돌아가기
How I Set Up HAProxy + ProxySQL on a Single OVH VPS for My Solo SaaS
Dev.toDev.to
Infrastructure

€14 VPS 환경에서 HAProxy-ProxySQL 계층 구조를 통한 Multi-tenant MySQL 보안 설계

How I Set Up HAProxy + ProxySQL on a Single OVH VPS for My Solo SaaS

DockSky2026년 6월 23일7intermediate

Context

제한된 예산의 단일 VPS 환경에서 다수의 고객에게 독립적인 MySQL 계정을 제공하는 Multi-tenant SaaS 구조 설계 필요. 기존 HAProxy 단일 포워딩 구조로는 Network Layer의 Rate Limiting 부재와 Connection Pooling 부족으로 인한 리소스 고갈 위험이 존재함.

Technical Solution

  • 외부 노출 포트를 6033으로 단일화하고 UFW를 통한 MySQL 직접 접근 차단으로 보안성 강화
  • HAProxy의 stick-table을 활용하여 IP당 동시 연결 5개, 3초당 신규 연결 10개로 제한하는 Network Rate Limiting 구현
  • ProxySQL을 도입하여 SQL Gateway 계층을 구축하고 Multi-tenant 사용자 인증 및 쿼리 라우팅 처리
  • ProxySQL의 SQLite 기반 설정 덮어쓰기 문제를 해결하기 위해 /var/lib/proxysql 경로에 tmpfs를 적용하여 재시작 시 Template 설정 강제 적용
  • Custom Entrypoint를 통한 부팅 시 MySQL 사용자 정보 동기화 및 ProxySQL 준비 시간(약 30초)을 고려한 헬스체크 대기 로직 구현
  • 복잡한 MySQL Check 대신 단순 TCP Check 방식을 채택하여 ProxySQL의 가용성 판단 신뢰도 확보

- State-less한 컨테이너 설정 유지를 위해 설정 파일이 DB화되는 도구(ProxySQL 등) 사용 시 tmpfs 검토 - L4/L7 계층별로 역할(Network Bouncer vs SQL Gateway)을 분리하여 리소스 보호 및 제어권 확보 - 인프라 복구를 위해 단순 설정 파일뿐만 아니라 전체 배포 절차를 포함한 Disaster Recovery 레포지토리 구축 - 서비스 초기 단계에서는 정교한 헬스체크보다 TCP Check와 같은 단순하고 확실한 가용성 확인 방식 우선 적용

원문 읽기