[오픈스택 개발] 고가용성 통합 도구 패널 개발

반응형

고가용성 통합 도구 패널 개발

안녕하세요 김민욱입니다. 

 

이번 포스팅에서는 예전에 연구했던 주제 중 하나인 고가용성을 제공하기 위해 여러 도구들을 통합하여 제공하는 패널을 개발한 내용 및 구현 결과를 말씀드리고자 합니다. 먼저 구조를 살펴보기에 앞서 본 개발 내용은 오픈스택 RCA(Root Cause Analysis) 프로젝트인 Vitrage를 기반으로 구현되었습니다. 기본적인 컨셉은 다음과 같습니다. 

 

그림 1. Vitrage의 RCA를 위한 시각화 탭

그림 1에서는 Vitrage가 제공하는 장애 원인을 상하위의 트리 구조로 시각화하는 탭입니다.[1] 이는 Horizon을 통해 확인할 수 있습니다. 시각화 탭에서는 장애 알람, 인프라 구성요소, 가상 머신을 한눈에 파악할 수 있습니다. 따라서 본 연구의 목표는 인프라, 가상 머신 등에 대해 장애가 발생하였을 경우 관리자 편의 도구들을 연동하는 패널을 만들어 제공하여 실시간으로 장애에 대응할 수 있도록 하는 것입니다. 따라서 장애 발생 후 즉시 패널을 통해 복구를 수행하거나 여러 가지 액션을 진행하는 것이 가능합니다. 

 

* 추가적으로 블루프린트는 승인 되었고, 코드 리뷰는 진행 중이나 현재는 중단한 상태입니다.

관련 비디오에서는 오픈스택 서밋 Vitrage 프로젝트 업데이트에서 해당 개발 내용이 발표된 비디오입니다. 

 

[Blueprint]       : https://review.openstack.org/#/c/531141/  

[CodeReview] : https://review.openstack.org/#/c/544151/  

[Related Videos] : https://www.openstack.org/videos/vancouver-2018/vitrage-project-update

 

Architecture & Functions

이번 연구는 다양한 고가용성 기능 지원을 위한 플러그인 개발의 집합이라고 볼 수 있습니다. 혁신적으로 무에서 유를 창조한다기보다는 다양한 유를 통해 새롭고 거대한 하나의 유를 만들려고 하였습니다. 네트워크 혹은 클라우드 운용자가 어떻게 하면 더 편리하고 빠르게 장애를 극복하고 망을 안정적으로 운용할 수 있을까에서 연구가 출발하였습니다. 

 

그림 1. 고가용성 통합 도구 패널 구조

 

그림 1에서는 고가용성 통합 도구 패널 구조를 나타냅니다. 사실 구조는 굉장히 간단합니다. Vitrage는 여러 프로젝트로부터 알람을 수집하고 트리 구조로 만들기 위한 Vitrage 엔진과 Vitrage 대시보드가 있습니다. 이번 개발은 Vitrage 대시보드에서 개발이 이루어졌고, 사용한 언어는 Python, JavaScript, AngularJS, HTML이 있습니다. 사실 웹 쪽 개발은 잘 몰랐기 때문에 처음에 코드가 어떤 식으로 흘러가는지 파악하는 게 굉장히 어려웠습니다. 코드 분석에 따라서 Vitrage 대시보드는 크게 API, 토폴로지 처리, 알람, 템플릿 등을 웹상에서 UI로 확인할 수 있게 해주는 모듈과 엔티티 그래프 즉 상단에서 보셨던 그림 1과 같이 Vitrage 엔진으로부터 전달받은 데이터를 기반으로 인프라, 가상 머신, 장애 알람을 트리 구조로 나타내는 엔티티 그래프 모듈이 있습니다. 저는 이곳에 그림 2와 같이 엔티티 그래프를 클릭했을 때 액션 리스트 패널이 뜨도록 구현하였습니다. 

 

그림 2. 액션 리스트 패널 예

그림 2에서는 액션 리스트 패널에서 드롭다운 형식으로 확인할 수 있는 액션 리스트를 나타냅니다.[2] Setting.conf는 액션 리스트 구성에서 필요한 정보들이 명시되어 있는데 액션 패널 리스트 모듈은 이를 실시간으로 읽어와 드롭 다운 리스트를 구성합니다

 

그림 3. 액션 리스트 

그림 3과 같이 구성 된 액션 리스트 패널은 총 3개로 각각 고유의 UI를 가지고 있고 이는 모두 구현되어 있습니다. 워크플로우는 오픈스택 Mistral과 연동하였고, 테스팅을 위해 오픈스택 테스팅 툴인 Rally와 연동하였습니다. 

 

 

그림 4. Setting.conf 예

그림 4에서는 Setting.conf의 예를 나타냅니다. 해당 파일은 액션 리스트 패널 모듈에 의해 자동으로 읽어지게 되는데 Default 세션의 actions에서는 어떤 액션을 리스트로 구성할지 작성하는 부분이고 각각의 액션은 별도의 옵션을 작성할 수 있도록 되어 있습니다. 위에서 언급한 두 가지의 액션 외에도 Zabbix의 url을 입력하게 되면 Zabbix의 웹 UI로 이동할 수 있는 바로가기 액션을 설정할 수 도 있습니다. 

 

Demo

본 데모는 Setting.conf를 설정하면서 부터 각각의 액션이 어떻게 이루어지는지 확인하실 수 있습니다. 혹 궁금한 점이 있으시다면, 언제든지 답변드리겠습니다.

 

 

동영상 1. 액션 리스트 패널 데모

결론

이번 포스팅에서는 액션 리스트 패널을 통한 고가용성 기능 통합 패널에 대한 구조를 설명하고 데모까지 업로드하였습니다. 또한 위의 블루프린트, 소스코드, 프로젝트 업데이트 등을 보시면 어떤 이야기를 했고 어떻게 진행되었는지 확인하실 수 있습니다. 

 

엄청 대단한 건 아니지만, 그래도 연구자로서 웹 UI/UX 개발이라는 새로운 범위를 넓힌 것 같아 보람 있었던 개발이었습니다. 추후에는 Vitrage의 기본에 대해 포스팅하고자 합니다. 혹 궁금한 사항이 있으시다면 문의 주시면 답변드리겠습니다. 감사합니다. 

 

감사합니다. 

 

인용글

[1] [Vitrage]          : https://wiki.openstack.org/wiki/Vitrage

[2] [Vitrage-Update]: https://www.openstack.org/videos/summits/vancouver-2018/vitrage-project-update

 

업데이트로그

------------------------------------------------------------------------------------------------------------------------------------

해당 글은 스스로 연구한 내용을 통한 주관적인 이해를 바탕으로 작성 되었습니다. 수정 할 부분이 있거나, 다른 의견이 있으시다면 언제든지 말씀해주시면 반영하도록 하겠습니다. 읽어 주셔서 감사합니다. 끝으로 불법으로 복제하는 것은 금합니다.

 

반응형

댓글

Designed by JB FACTORY