본문 바로가기

클라우드/오픈스택(OpenStack)

OpenStack 오픈스택 로드밸런서

# 로드밸런서

오픈스택은 서비스를 구성한 인스턴스를 다른 사용자들이 사용 할 수있도록 인스턴스 서비스를 제공해준다
인스턴스가 하나로 구성되는것보다는 여러개의 인스턴스로 구성되는것이 더 효율적이다
- 우리가 사용하는 서비스를 제공할 때에 하나의 시스템 (네트워크) 이용시 부하가 증가한다. 접근 제한이 발생 할 수 있다.
- 시스템에 문제가 발생했을경우 서비스가 중단 될 수 있다
- HA 구성( 장애복구기능이 포함된 고가용성의 구성 )및 부하분산기능이 필요 => 로드밸런서
- 오픈스택에서의 로즈밸런서 : Neutron(네트워크) 서비스와 haproxy 프로세스등으로 기능 지원
-> Octavia 라고 부르는 로드밸런서 제공/별도의 가상머신을통해 부하분산 할 수있는 기능

 

# 기존 구성

외부에서 접속을 할 때 기존에는 인스턴스로 바로 접속을 했다
vm에 접속을 하기 위해 vm 하나하나에 플로팅아이피를 설정했다

 

# 로드밸런서 구성

로드밸런서를 사용하면 외부에서 접근할땐 로드밸런서에 설정되어있는 플로팅 아이피로 접근하고
각로드밸런서에 각각의 인스턴스가 연결되어있다 각각의 인스턴스에는 플로팅 아이피가 필요없다
사용자들이 접근 하는 대상 인스턴스가 연결된 대상을 로드밸런서, 사용자와 연결된 포인트 리스너
사용자들이 실제 접근할 vm들의 집합을 pool 이라고 부른다 .
인스턴스의 상태도 확인하지만 로드밸런서의 상태를 체크해주는것을 모니터라고 한다

 

# 용어 정리

LoadBalancer : 사용자들이 접근하고 인스턴스들이 연결된 대상
Pool : 로드밸런서에 연결된 인스턴스들의 집합
pool-member : 풀에 할당된 인스터느들
Listener : 로드밸런서에서 사용자의 요청을 기다리는 포인트 (포트)
Health-Monitor : 로드밸런서의 상태를 모니터링 해주는 도구

 



# 로드밸런서 생성

서브넷을 퍼블릭 설정하면 외부에서 로드밸런서로 접근해서 내부에 연결이 안됨
라우터를 통해 연결된 내부 네트워크를 선택

 

외부에서 http로 접근하면 로드밸런서로 연결해 주겠다

 

부하분산 방식 결정
1. 최소 연결 갯수
여러개의 인스턴스 각각을 사용자 수를 파악해서 가장적은 인스턴스에 연결
2. 라운드 로빈
순차적으로 돌아가면서 연결
3. source_ip
접속하는 대상에 따라 분산시켜주는 방식

 

 

pool member vm 추가

 

로드밸런서 상태를 체크 할 때 어떤 방식으로 체크할것인가

 

생성 완료!



# 삭제

healthmonitor -> pool-member->pool->listener-> LB

하위부터 상위 단계별로 삭제해야 로드밸런서를 삭제 할 수 있다