본문 바로가기

Cloud/Oracle Cloud Infrastructure

18. OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 - 로드밸런서

2019/01/16 - [Cloud/Oracle Cloud Infrastructure] - 17. OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 - 웹서버 (NFS 설정, 파일시스템마운트)

4단계. 로드밸런서 구성

지금까지 전체 VCN 구조를 만들고, 웹서버 두대와 Bastion 서버를 만들었다. Bastion 서버에서 웹서버로 연결을 구성했고, 웹서버의 컨텐츠를 동기화하는 작업까지 진행했다.

이번 단계에서는 아파치 웹서버를 설치하고, 두대의 웹서버로 OCI 로드밸런서를 통해 부하를 분산시키는 설정을 것이다.

실제 업무 환경에서는 Tomcat, JBoss, WebLogic 등과 같은 웹어플리케이션 서버를 많이 올릴 것이지만, 예제를 단순화시키기 위해 아파치 웹서버를 설치할 것이다.


OCI 로드밸런서를 구성하기 전에 간략히 OCI 로드밸런서에 대해 살펴보자.

OCI 로드 밸런싱은 OCI 컴퓨트 서비스, 데이터베이스 서비스와 같이 OCI에서 하나의 독립된 서비스 형태로 제공이 된다. 100, 400, 8000 MBPS 네트웍 속도에 따라 Shape 구분이 되고, Shape 선택에 따라 서비스 비용이 다르게 발생한다.

로스 밸런싱의 일반적인 기능과 같이 OCI 로드밸런서는 네트웍 트래픽을 하나의 엔트리 포인트에서 VCN 연결 가능한 여러개 서버로 자동으로 분산시키는 기능을 한다. OCI 로드밸런서는 어느 인스턴스가 현재 가용한지 식별하고, Health Check 통해 미리 정한 정책에 따라 상태가 나은 인스턴스로 네트웍 트래픽이 향하도록 구성하는데 목적이 있다.

OCI 로드밸런서는 퍼블릭 로드밸런서와 프라이빗 로드밸런서로 구성을 선택할 있다. 퍼블릭 로드밸런서는 인터넷을 통해 접속 가능한 퍼블릭 IP 주소를 가진 로드밸런서이다. 이에 반해 프라이빗 로드밸런서는 프라이빗 IP 주소가 할당된 로드밸런서로서 VCN 내에서만 보인다. 퍼블릭과 프라이빗 로드밸런서 모두 VCN 로드 밸런싱 대상 서버로 데이터 트래픽을 라우팅 시킨다.

로드밸런서의 IP 주소를 찾아 들어온 트래픽은 리스너(Listener)라는 논리 객체의 확인을 거쳐서 로드밸런서에 전달된다. 리스너 레벨에서 TCP, HTTP/1.0, HTTP/1.1 등의 네트웍 프로토콜의 프로토콜과 포트, 그리고 SSL 설정 여부를 설정할 있다.

OCI 로드밸런서에서 로드 밸런싱 대상이 되는 서버들, TCP 또는 HTTP 트래픽에 응답해서 컨텐츠를 만들어내는 어플리케이션 서버를 백엔드 서버(Backend Server)라고 부른다. 그리고 이러한 백엔드 서버를 묶은 논리적인 개념을 백엔드 (Backend Set)이라고 부른다. 로드 밸런싱 정책은 백엔드 단위로 설정된다. OCI 로드밸런서의 부하를 분산 시키는 정책은 Round Robin, Least Connections, IP Hash 세가지로 설정할 있다.

       Round Robin: 백엔드 목록에 있는 서버 순서대로 순차적으로 트래픽을 분산

       Least Connections: 활성화된 연결(Active connection) 수가 가장 적은 백엔드 서버쪽으로 트래픽을 분산

       IP Hash: 네트웍 트래픽 소스의 IP 주소를 해싱 (Hashing key) 해서 트래픽을 동일한 백엔드 서버로 라우팅하는 방식. 동일한 클라이언트의 요청은 해당 백엔드 서버가 살아 있는한 최초 연결과 동일한 백엔드 서버로 트래픽이 계속 향하도록 하는데 목적이 있다.

이번 테스트에서는 인터넷을 통한 WEB서버 접속에 대한 부하 분산을 구현하므로 퍼블릭 로드밸런서를 구성한다.

 

 

참조. 퍼블릭 로드 밸런서 vs. 프라이빗 로드 밸런서


퍼블릭 로드밸런서에서는 네트웍 트래픽의 엔트리 포인트로 퍼블릭 IP 주소가 할당된다. 실제 사용할 때는 퍼블릭 IP 주소를 DNS 벤더가 제공하는 DNS명으로 서비스를 주로 한다.

퍼블릭 로드밸런서을 구성할 때는 그림과 같이 서로 다른 Availability Domain Primary 로드밸런서와 Standby 로드밸런서를 담기 위한 서브넷을 별도로 각각 만들어야 한다. 이는 한쪽 Availability Domain 장애가 발생해도 서비스를 계속 하기 위해서다. Primary, Standby 로드밸런서는 모두 해당 서브넷에서 프라이빗 IP 주소를 할당을 받고, 퍼블릭 IP 주소는 서브넷 하나에 할당된다. 서브넷의 Availability Domain 장애가 발생하게되면 로드밸런서와 퍼블릭 IP 주소는 다른 서브넷으로 스위칭된다. 두개의 로드밸런서는 동일한 레벨으로 취급되며 사용자가 어느 한쪽을 Primary 또는 Standby 지정할 없다.


퍼블릭 로드밸런서와는 달리 프라이이빗 로드밸런서는 Primary, Standby 구성을 위해 서브넷을 별도로 필요로 하지 않는다. 프라이빗 로드밸런서를 사용하는 이유는 외부 인터넷으로 부터 로드밸런서를 분리하여 VCN 내부에서 트래픽을 분산하기 위해서이다. Primary, Standby 로드밸런서는 프라이빗 IP 주소가 각각 필요하고, 로드밸런서가 스위칭하는데 사용되는 프라이빗 IP 하나 필요하다. 프라이빗 로드밸런서의 경우, Availability Domain Primary-Standby 분산되지 않기 때문에 소속 Availability Domain 장애가 발생하면 로드밸런서는 페일오버(Failover)되지 않는다.

 

작성자: 정영균


OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 시리즈

1. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Intro

2. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN

3. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN

4. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (인터넷게이트웨이)

5. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (라우트테이블)

6. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (시큐리티리스트)

7. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (서브넷)

8. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버

9. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (시큐리티 리스트)

10. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (인스턴스)

11. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (웹서버 연결)

12. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (NAT 설정)

13. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버

14. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (rsync)

15. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정)

16. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정파일시스템)

17. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정파일시스템마운트)

18. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서

19. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (아파치웹서버)

20. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (로드밸런서생성)

21. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (백엔드서버)

22. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (리스너)

23. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스

24. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템)

25. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (데이터베이스구성)

26. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템연결)

27. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템연결)

28. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (백업)

29. OCI 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 – 데이터베이스 (DR 구성)