사설 네트워크를 활용한 메트릭 수집 설정 자동화 시스템

수행 기간 : 2024.07 ~ 2024.08 (2개월)

_images/%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EA%B0%9C%EC%9A%94.png

고객의 사설 네트워크를 통해 메트릭 수집 환경을 구성 과정을 자동화 시키는 시스템을 개발하는 프로젝트 입니다.

고객의 사설 네트워크는 외부 네트워크에 연결되어 있지 않기 때문에 메트릭 수집을 위한 모니터링 서버와 통신을 위해 추가 설정이 필요합니다. 이를 위해 Podman 컨테이너 를 활용해 사설 네트워크와 모니터링 서버를 L2 통신 할 수 있는 환경을 고객 네트워크 생성 시 자동으로 구성 하는 시스템을 개발하였습니다.

핵심 기능

  • 고객 사설 네트워크 생성 시 메트릭 수집 서버와 L2 통신 을 지원하는 Podman 컨테이너 생성

  • 사설 네트워크와 컨테이너를 연결하는 VLAN 설정

  • 서브넷 생성 시 컨테이너와 연결하는 VIP(Port) 생성 및 라우팅 설정

  • 로드밸런서 생성 시 주기적으로 로드밸런서 데이터를 전송하는 스크립트 실행

  • 에러 발생 시 수동처리 및 마이그레이션 지원을 위해 자동화 과정을 API로 제공

위 과정을 자동화 하여 메트릭 모니터링이 가능한 환경을 구성

_images/%ED%84%B0%EB%84%90-%EC%9E%90%EB%8F%99%ED%99%94-%ED%9D%90%EB%A6%84.png

역할 및 기여

  • 시스템 및 소프트웨어 아키텍처 설계

  • REST API 서버 구현

  • kafka 컨슈머 설계 및 구현

  • 프로젝트 매니저

개발 환경

  • Language : Python 3.11

  • Framework : FastAPI

  • Library confluent_kafka, Sqlalchemy, Alembic, Dependency injector

  • Cloud Infra : Openstack

  • DB : MySql

  • MQ : Kafka

  • Infra : Podman

  • Monitoring System: Zabbix

kafka 컨슈머 설계

_images/%ED%84%B0%EB%84%90-%EC%95%84%ED%82%A4%ED%83%9D%EC%B2%98.png
  • 이벤트 소스 : Openstack

  • 이벤트 소비자 : cloud-tunnel 서버

  1. 고객의 네트워크 생성 요청

  2. Openstack에서 네트워크 생성 완료 이벤트 발생

  3. cloud-tunnel에서 이벤트 수신

  4. Podman Container 생성 및 네트워크 연결 설정

kafka 메시지 Consumer

_images/%EB%A9%94%EC%8B%9C%EC%A7%80-%EC%B2%98%EB%A6%AC-%ED%9D%90%EB%A6%84.png
  1. Openstack 이벤트를 메시지 객체로 변환

  2. 메시지를 처리할 수 있는 handler로 작업 분배

시퀀스 다이어그램

1. 네트워크 생성시

_images/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%83%9D%EC%84%B1.png
  1. 네트워크 생성완료 시 Openstack 이벤트 발생

  2. Podman 호스트 서버에 podman network 생성 요청

  3. Podman 컨테이너 생성 및 실행 요청

2. 서브넷 생성시

_images/%EC%84%9C%EB%B8%8C%EB%84%B7-%EC%83%9D%EC%84%B1.png
  1. 서브넷 생성 시 Openstack 이벤트 발생

  2. 서브넷에 Podman 컨테이너와 통신할 수 있는 VIP(NIC) 생성

  3. Podman 컨테이너에 생성되어있는 스크립트를 실행하여 VIP와 연결

3. 로드밸런서 생성시

_images/%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%84%9C-%EC%83%9D%EC%84%B1.png
  1. LB 생성 시 Openstack 이벤트 발생

  2. Podman 컨테이너에 생성되어있는 LB 연결 스크립트를 실행