본격적인 Docker활용해보자 실제 구축편

Infrastructure Architecture on Retail with docker

최종적으로 구축된 구성도다. 초기 부터 내가 모든 것을 설계 했다면 좀더 좋은 결과가 나왔을텐데 좀 아쉽다. 실제로 내가 관리 가능한 부분이 한정되었고 좀 더 개선 되었으면 하는 부분도 있지만 난 여기까지만

A. Main Service_Cloud Server(본부 서비스용)

I. LB_Load Balancing

Korea -VPN- All Branch
사용자가 접속할때 L4의 VIP로 접속 이때 Hash 알고리즘 선택

  • Round Robin
  • Least Connection
  • Fastest Response Time
  • Adaptive
  • Fixed
  • Hash

II. Dev Server : (개발 서버, 에러 재현, 최종 버전 이미지 생성용)

  • 본부 시스템, 점포_POS, 점포_Report, 개발, DB#1~5 으로 총 9 개의 서비스각 각각 포트로 실행됨
  • 추가 개발 소스파일은 git에 저장됨
  • 추가 개발 완료 시점 마다 commit 후 git repository를 Dockerfile를 통해 이미지 YYMMDD_V1.0_CSR(No) 형태로 빌드함(재배포 개념으로 버전관리)
  • 해당 이미지는 버전관리용으로 사용됨
  • 상세 개발내역은 CSR(No)로 관리
  • 실 서비스에 적용 뒤 문제가 생기면 전버전으로 Container 생성하여 rollback
  • CSR에 등록된 Ticket을 토대로, 문제가 생긴 서버의 DB와 Volume Container를 Image로 생성하여 DEV로 전송하여 동일 현상을 재현

III. DB Replication

  • Store Data가 Primary로 전달됨 -> NAS로 위치 변경하여 Primary, Secondary 에 마운트 시켜 해결
  • Backup DB Dump/day 및 OS Backup/day

B. CSR Server_ Docker Images Storage

  • CSR 서비스 운영
  • Docker Image 저장소(용도별, 일자별 Docker image 관리)
  • 표준 배포용 Dockerfile 관리
  • Standard Web Server , DB Image 관리
  • Application은 DEV에서 관리

C. Store Service

  • POS와 Report 서버의 분리(두 서버 차이점은 소스코드 한줄 다름)
  • Report 서버의 경우 POS서버는 실시간 Transaction용, 프로그래밍이 제대로 안되어 있어 메모리 이슈가 많이 생김. 큰 Transaction의 경우 모두 Report 서버를 사용.
  • Report 서버의 경우 Docker를 통해 사용
  • 차후 검증 완료 될시 POS 서버 또한 모두 Docker 사용 예정
  • Final 컨셉의 경우 Nginx를 통해 LB를 사용하여 이중화 삼중화 작업을 하려고 했으나 CPU 이슈가 발생되어 Tunning중 이라하고 귀찮아서 안한다고 한다
  • Report 서버에서 간혈적 문제 생김
  • Backup DB Dump/day, Raid 1, DB Replication

D. Network & DR

  • L3 장애시 : POS와 Server는 L2 통신 판매 문제 X(같은 subnet)
  • L2 장애시 : 2중화를 통해 A장비 장애시 B 장비로 감 문제 X
  • 인터넷 장애시 : FO 장애시 -> Radio 장애시 -> 4G(ISP와 터널링을 통해 기존 사용하던 IP 사용 단 안정적이지 못함)
  • POS 서버 장애시 : 소프트웨어 장애시 SOP, 하드웨어 장애시 교체(대체 장비)
Hardware

a. Report 서버를 Read Only -> Read - Write 으로 변경하고, 전체 사용모드로 변경 코드 2줄 수정 필요
b. HDD 에러시 하드 찰탁 뒤 사용 : Raid 1이라 하나 장애나도 정상 작동

  • 최근 Raid Controller 불량으로 서버 다운됨
Software

Monit이 일차적으로 확인하여 서비스 재시작 후 통보

  • DB Lock 이슈의 경우 해결 못함_관리자가 수동 재부팅 필요
    • 모든 장비에는 각각의 Data 포트가 있음 이는 각각 A와 B 스위치에 연결됨. -> 장애빈도가 거진 없기 때문에 장애시 수동변경
    • Server <-> Switch 의 경우 Bonding으로 연결

적용이후 아직까진 별 탈 없이 운영되고 있음. 현재까지 무장애 운영 중
기존에 비해 점포서버 설치 시간이 획기적으로 줄어듬

최종 적용 구성도

infra_design.PNG

최에에에종 이고 싶은 구성도

infra_design_02.PNG

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center