애저 환경에서 로드 밸런서를 이용해서 서비스를 안정화를 해야하는 부분이 있어서 애저 로드 밸런서를 사용하기 전 조사한 내용에 대해서 간단히 정리를 해보려고 한다.
Azure Load Balancer는 Microsoft Azure에서 제공하는 고가용성 및 확장성을 지원하는 트래픽 관리 서비스입니다. 이 서비스는 클라우드 애플리케이션의 부하 분산을 도와 서버의 성능을 최적화하고, 가용성을 높이며, 장애 발생 시 자동으로 트래픽을 재배치하여 서비스를 지속적으로 유지할 수 있게 합니다. 아래는 Azure Load Balancer에 대한 상세한 설명입니다.
Azure Load Balancer는 다양한 기능을 제공합니다:
• 부하 분산 (Load Balancing): 여러 서버(또는 VM)에 트래픽을 고르게 분산시켜, 특정 서버에 과부하가 발생하지 않도록 합니다. 이는 애플리케이션의 성능을 최적화하고 응답 시간을 줄이는 데 도움이 됩니다.
• 고가용성 (High Availability): 하나의 서버가 장애를 겪더라도 다른 서버가 트래픽을 처리할 수 있게 해줍니다. 이를 통해 서비스 다운타임을 최소화하고 사용자의 경험을 개선할 수 있습니다.
• 유지보수 모드 지원: 서버의 유지보수가 필요할 경우 특정 서버에 대한 트래픽을 일시적으로 중지하고, 다른 서버로 트래픽을 재배치할 수 있습니다.
Azure Load Balancer는 여러 구성 요소로 이루어져 있습니다:
• 프론트엔드 IP 구성 (Frontend IP Configuration): 클라이언트가 트래픽을 보낼 수 있는 공용 또는 사설 IP 주소입니다. 이 IP를 통해 트래픽이 Load Balancer로 들어옵니다.
• 백엔드 풀 (Backend Pool): 트래픽이 분산되는 서버 또는 VM의 집합입니다. 백엔드 풀에 추가된 서버들은 Load Balancer의 트래픽을 처리하게 됩니다.
• 부하 분산 규칙 (Load Balancing Rules): 트래픽을 어떻게 분산할지를 정의하는 규칙입니다. 예를 들어, HTTP 트래픽은 특정 포트를 통해 백엔드 풀의 서버로 전달되도록 설정할 수 있습니다.
• 프로브 (Probes): 백엔드 풀에 있는 각 서버의 상태를 모니터링하는 기능입니다. 서버가 정상적으로 작동하는지 확인하며, 문제가 발생한 서버는 자동으로 트래픽 분산 대상에서 제외됩니다.
Azure Load Balancer는 두 가지 주요 유형으로 나뉩니다:
• 공용 Load Balancer (Public Load Balancer): 인터넷에 노출된 서비스의 트래픽을 분산합니다. 클라이언트는 공용 IP 주소를 통해 애플리케이션에 접근할 수 있습니다.
• 사설 Load Balancer (Internal Load Balancer): VNet 내에서만 사용 가능한 트래픽 분산 기능을 제공합니다. 주로 내부 애플리케이션 간의 트래픽을 분산할 때 사용됩니다.
Azure Load Balancer는 다양한 시나리오에서 사용될 수 있습니다:
• 웹 애플리케이션: 웹 서버의 부하를 분산하여 고가용성 및 성능을 보장합니다.
• 데이터베이스 클러스터: 데이터베이스 서버에 대한 트래픽을 분산하여 성능과 가용성을 높입니다.
• API 서비스: API 요청을 여러 서버로 분산하여 서비스가 중단 없이 지속될 수 있도록 합니다.
• 확장성: 필요에 따라 쉽게 서버를 추가하여 시스템을 확장할 수 있습니다.
• 비용 효율성: 서버 자원을 효율적으로 사용하여 비용을 절감할 수 있습니다.
• 보안: 트래픽을 관리하고 제어하여 보안을 강화할 수 있습니다.
Azure Load Balancer는 클라우드 환경에서 고가용성과 성능을 유지하고자 하는 모든 애플리케이션에 필수적인 도구입니다. 이를 통해 복잡한 네트워크 트래픽을 효율적으로 관리하고, 사용자 경험을 개선할 수 있습니다.
리소스를 관리하기 쉽게 리소스 그룹을 먼저 생성합니다.
포털 상단의 검색 바에 “리소스 그룹”을 입력하고 선택합니다.
“+ 새 리소스 그룹”을 클릭하고 리소스 그룹 이름을 지정합니다.
사용할 지역을 선택하고 “검토 + 만들기”를 클릭하여 리소스 그룹을 만듭니다.
Load Balancer와 VM들이 포함될 가상 네트워크를 생성합니다.
“가상 네트워크”를 검색하여 선택한 후 “+ 추가”를 클릭합니다.
네트워크 이름을 지정하고, 동일한 리소스 그룹과 지역을 선택합니다.
기본 서브넷을 설정하거나, “서브넷 추가”를 클릭하여 추가적인 서브넷을 만듭니다.
“검토 + 만들기”를 클릭하여 가상 네트워크를 생성합니다.
분산할 웹 애플리케이션을 호스팅할 가상 머신을 생성합니다.
“가상 머신”을 검색하여 선택한 후 “+ 추가”를 클릭합니다.
필요한 설정을 입력합니다:
• 리소스 그룹: 앞서 생성한 리소스 그룹 선택
• VM 이름, 지역, 이미지(운영체제), 크기 선택
• 인증 방법 선택 (SSH 키 또는 비밀번호)
네트워킹 탭에서, 앞서 만든 가상 네트워크와 서브넷을 선택합니다.
동일한 방법으로 추가적인 VM을 생성하여 다중 서버 환경을 구축합니다.
이제 본격적으로 Load Balancer를 설정합니다.
“Load Balancer”를 검색하여 선택한 후 “+ 추가”를 클릭합니다.
필요한 설정을 입력합니다:
• 리소스 그룹: 앞서 생성한 리소스 그룹 선택
• 이름: Load Balancer 이름 지정
• 지역 선택
• 퍼블릭 IP 주소: “새로 생성”을 클릭하여 퍼블릭 IP 주소를 만듭니다.
백엔드 풀은 트래픽을 분산할 VM 집합입니다.
Load Balancer 페이지에서 “백엔드 풀”을 클릭합니다.
“+ 추가”를 클릭하고, 백엔드 풀 이름을 지정합니다.
백엔드 풀에 포함될 VM들을 선택합니다.
설정을 완료하고 저장합니다.
헬스 프로브는 백엔드 VM의 상태를 모니터링하는 데 사용됩니다.
Load Balancer 페이지에서 “헬스 프로브”를 클릭합니다.
“+ 추가”를 클릭하고, 프로브 이름을 지정합니다.
프로브 프로토콜(예: HTTP)과 포트(예: 80)를 설정합니다.
프로브 경로(예: /health)를 지정합니다.
인터벌과 비정상 임계값을 설정하고 저장합니다.
부하 분산 규칙은 트래픽이 백엔드 풀로 어떻게 분산될지를 정의합니다.
Load Balancer 페이지에서 “부하 분산 규칙”을 클릭합니다.
“+ 추가”를 클릭하고, 규칙 이름을 지정합니다.
프론트엔드 IP 설정에서 사용할 퍼블릭 IP를 선택합니다.
백엔드 풀을 선택하고, 백엔드 포트(예: 80)와 프로토콜을 설정합니다.
세션 지속성(Session Persistence) 옵션을 설정합니다.
헬스 프로브를 선택하고 저장합니다.
모든 설정이 완료되면, 실제로 작동하는지 테스트합니다.
퍼블릭 IP 주소를 브라우저에 입력하여 웹 애플리케이션에 접속합니다.
트래픽이 정상적으로 분산되는지 확인하기 위해 각 VM의 로그나 메트릭을 모니터링합니다.
Active VM을 의도적으로 비활성화하여 Standby VM으로의 자동 트래픽 전환이 잘 이루어지는지 테스트합니다.
Azure Monitor와 같은 모니터링 도구를 사용하여 Load Balancer 및 백엔드 VM의 성능과 상태를 지속적으로 모니터링합니다. 필요시 VM의 수를 조정하거나, 성능 튜닝을 수행합니다.
• Azure 포털에서 “로드 밸런서”를 검색하여 선택합니다.
• “+ 추가”를 클릭하여 새 로드 밸런서를 생성합니다.
• 구독: 사용할 Azure 구독을 선택합니다.
• 리소스 그룹: 기존 리소스 그룹을 선택하거나 새로 생성합니다.
• 이름: 로드 밸런서의 이름을 지정합니다.
• 지역: VNet과 동일한 지역을 선택합니다.
• 유형: “내부”를 선택하여 내부 로드 밸런서를 만듭니다.
• SKU: 요구사항에 따라 Basic 또는 Standard를 선택합니다. Standard는 더 많은 기능과 보안 옵션을 제공합니다.
• 가상 네트워크: LRS 서버와 다른 내부 서버가 위치한 VNet을 선택합니다.
• 서브넷: 로드 밸런서가 동작할 서브넷을 선택합니다.
• “프론트엔드 IP 구성”을 클릭하고 “+ 프론트엔드 IP 구성 추가”를 선택합니다.
• 프론트엔드 IP 구성의 이름을 지정하고, 지정된 서브넷 내에서 사용할 정적 사설 IP 주소를 할당합니다. 이 IP는 내부 클라이언트가 로드 밸런서와 통신하는 데 사용됩니다.
• 로드 밸런서 페이지에서 “백엔드 풀”로 이동하여 새 백엔드 풀을 추가합니다.
• 백엔드 풀에 LRS 서버(VM)를 추가합니다. 이 서버들이 로드 밸런서로부터 트래픽을 수신하게 됩니다.
• 로드 밸런서 페이지에서 “헬스 프로브”로 이동하여 새 헬스 프로브를 추가합니다.
• 프로브 프로토콜(예: TCP)과 포트 번호를 설정하여 LRS 서버의 상태를 모니터링합니다. 예를 들어, 소켓 연결을 모니터링할 수 있습니다.
• 프로브 간격과 비정상 임계값을 설정하여 서버가 비정상 상태로 간주되는 조건을 정의합니다.
• 로드 밸런서 페이지에서 “부하 분산 규칙”으로 이동하여 새 규칙을 추가합니다.
• 프론트엔드 IP, 프로토콜(TCP/UDP), 및 포트 번호를 지정합니다.
• 백엔드 풀과 헬스 프로브를 규칙에 연결합니다.
• 세션 지속성 옵션을 설정하여 상태 유지가 필요한 연결을 유지할 수 있습니다.
• VNet 내 다른 서버에서 로드 밸런서의 프론트엔드 IP로 접속하여 LRS 서버로의 트래픽이 올바르게 라우팅되는지 확인합니다.
• LRS 서버가 수신한 요청을 기록하고 로그를 통해 트래픽 분산이 정상적으로 이루어지는지 확인합니다.
• 헬스 프로브가 LRS 서버의 상태를 정확하게 모니터링하는지 확인합니다. 로드 밸런서는 정상적인 서버로만 트래픽을 전달해야 합니다.
• LRS 서버 중 하나를 의도적으로 비활성화하여 다른 서버로 트래픽이 자동으로 전환되는지 테스트합니다.
• 부하 테스트를 수행하여 로드 밸런서가 트래픽을 균등하게 분산하는지 확인합니다.
• NSG를 적용하여 VNet 내 트래픽 흐름을 제어하고, 로드 밸런서 및 LRS 서버로의 접근을 허용된 내부 트래픽으로 제한합니다.
• Azure Monitor 및 기타 모니터링 도구를 사용하여 로드 밸런서와 백엔드 서버의 성능과 상태를 지속적으로 모니터링합니다.
• 문제 발생 시 신속하게 대응할 수 있도록 알림을 설정합니다.
• VM과 애플리케이션에 최신 보안 패치를 적용하고 정기적으로 업데이트합니다.
• 로드 밸런서와 백엔드 풀의 구성을 필요에 따라 조정하여 최적의 성능을 유지합니다.