Joon Park(IBM Cloud Engineer)

본 문서는 IBM Cloud Public(IaaS)의 LB(Load Balancer) 오퍼링 중에서 Software Defined LB 방식인 “Bluemix LB” 에 대한 설정 및 테스트에 대한 핸즈온(Hands-on) 가이드입니다. Blumix LB 의 공식 가이드(한글가능, 페이지 하단에서 언어선택)는https://console.bluemix.net/docs/infrastructure/loadbalancer-service/basic-load-balancing.html에서 확인 가능합니다.

1. LBaaS(Load Balancer as a Service) 주문

Bluemix LB 의 경우 아래와 같이 주문(Order) 진행시 6단계로 구성되며, 각각의 단계를 요약하면 다음과 같습니다. 단일 IBM Cloud Public(IaaS) 계정에서 생성할 수 있는 Bluemix LB는 최대 20개 이며, 추가 생성이 필요할 경우 IBM Sales 쪽에 문의 부탁 드립니다.

– 1단계) Plan: LB(Load Balancer)를 배포할 Data Center 선택
– 2단계) Network Settings: LB 에 적용할 서버의 Private Subnet 선택 및 Public Subnet 적용 여부 선택
– 3단계) Basic: LB 의 Public Endpoint URL 정의, Protocol및 Port정의, Load Balancing 알고리즘 선택
– 4단계) Health Checks: LB 와 서버간에 Health Check 설정(헬스체크 인터벌, 디렉토리 등)
– 5단계) Server Instances: LB 에 적용할 서버 선택
– 6단계) Review: LB 구성에 대한 최종 리뷰 및 최종 주문

 

1) Plan

– IBM Cloud Portal 화면에서 “Network” -> “Load Balancing” -> “Local” 을 선택합니다.

 

– “Order IBM Bluemix Load Balancer”클릭합니다.

 

– LB 를 배포할 “Data Center” 를 선택합니다.

2) Network Settings

– Private Subnet 을 선택하는 화면입니다. LB 를 배포하고 LB 에 연동할 서버가 존재하는 Private Subnet 을 선택해야 됩니다.

– 위 그림에는 Seoul Data Center 에 1개의 Private Subnet 이 존재함으로, 그냥 선택하면 되나, 혹시라도 현재 사용하시는 계정에서 LB 를 배포하려는 Data Center 에 Private Subnet 이 복수로 존재한다면, Network -> IP Management -> VLAN 항목에서 확인하시고, LB 배포시에 정확한 Private Subnet 을 선택하셔야 됩니다.

 


– “Load Balancer Public IPs” 선택 사항입니다. 최초에 한번 선택하면 LB 배포 후에 수정이 되지 않습니다.
. Allocation from IBM system pool(Default) 을 선택하시면, LB 의 Public end-point URL 에서 바로 LB 에 연결된 Server 의 Private IP 로 세션이 연결됩니다.
. Allocate from a Public Subnet in this account 를 선택하면, LB 의 Public end-point URL 에서 해당 LB 를 배포한 Data Center 에 존재하는 Public Subnet 을 거쳐서 LB 에 연결된 Server 의 Private IP 로 연결됩니다.
– 즉, LB 와 Server 중간에 고객이 컨트롤하는 Firewall 을 적용할지 여부에 대하여 정할 수가 있습니다. Firewall 적용 원한다면, 고객이 보유하고 있는 Public Subnet 에 적용된 Firewall 을 통과하며 트래픽이 In/Outbound 가 되며, LB 관리를 위한 TCP 56501 포트가 반드시 Allow 되어 있어야 됩니다.

3) Basics

Name: LB 의 Public Domain 을 나타냅니다. 아래 화면과 같이 “demo-lb” 로 입력한다면, 해당 LB 의 End-Point(Public Domain) 는 http://demo-lb -“Account_ID”-seo01.lb.bluemix.net 로 됩니다. 여기서 “Account_ID” 는 IBM Cloud Public(IaaS) 계정의 6자리 고유숫자이며, 고객이 선택할 수 없습니다.

Protocol configuration: LB 가 Listen 할 프로토콜과 포트 그리고 LB 에 연동할 서버에 보낼 프로토콜과 포트를 정의합니다. 또한, 로드벨런싱 알고리즘과 LB 통하여 통신할 End User 와 LB 에 연동된 서버와의 세션에 대하여 지속성을 유지할 수 있는 옵션(Session Stickness)을 제공합니다. 최대 50개의 Protocol Configuration 추가가 가능합니다.
. FRONT-END PROTOCOL, PORT: LB 에서 Listen 할 Protocol 과 Port 를 정의합니다. 프로토콜은 HTTPS, HTTP, TCP 를 지원하며, 포트는 1 – 65535 까지 정의 할 수가 있습니다.
. BACK-END PROTOCOL, PORT: LB 에 연동될 서버가 Listen 하고 있는 Protocol 과 Port 를 정의합니다. HTTP, TCP 를 지원합니다.
. Method: 로드벨런싱 알고리즘 선택 옵션입니다. Round Robin, Weighted Round Robin, Least Connection 을 제공합니다. Round Robin 은 LB 에 연동된 서버에게 순서대로 벨런싱을 하며, Weighted 옵션을 주면, LB 에 연동된 서버 별로 가중치를 줄 수가 있습니다. 기본값은 “50”이며, 최소 “0”, 최대 “100”까지 설정할 수가 있습니다. 높을 수록 가중치가 높으며, 가중치가 낮은 서버에 비하여 더 많이 LB 로 부터 벨런싱을 받습니다. “0” 으로 하게 되면, 기존의 세션은 유지하며 신규 세션을 받지 않습니다. “청녹배포(Blue-Green Deployment)”에 사용하면 좋습니다. 마지막으로 Least Connection 은 LB 와 해당 서버 간의 Connection 이 적은 서버부터 벨런싱을 받습니다.
. Session Stickness: Default 값은 Disable 되 어 있으며, Enable(Source IP) 선택하면, 1번 사용자는 LB 를 통하여 최초에 1번웹서버에 연결이 되었다면, 1번 사용자는 다음 세션 요청 시에도 2번 웹서버가 아닌 1번 웹서버로 연결이 됩니다. 해당 옵션이 Disable 되어 있다면, 1번 사용자는 접속시 1번 웹서버, 혹은 2번, 3번 웹서버로 연결 될 수가 있습니다.
. Max Connections(Optional): 특별한 값(1 – 15,000)을 지정하지 않을 경우 Default 15,000 컨넥션까지 가능합니다.

 

– SSL Offload 기능을 필요할 경우에는 위와 같은 설정이 가능합니다. FRONT-END PROTOCOL 은 HTTPS 로 적용하고, FRONT-END PORT 는 443 으로 적용합니다. BACK-END는 HTTP, 80 으로 설정을 합니다. 여기서 주의해야 될 사항은 SSL Offload 특성상 LB 에 SSL 인증서(SSL Certificate)를 적용해야 됨으로, 사전에 IBM Cloud Portal 에 고객이 갖고 있는 SSL 인증서를 미리 등록을 해야 됩니다. 등록방법은 다음 URL 참고 부탁 드립니다.

Enable SSL Offload

 

– SSL Offload 에서 사용할 SSL 인증서를 선택합니다. Session Stickness 옵션에서 Source IP 로 선택합니다. HTTP 통신을 위하여 추가로 FRONT-END 에 HTTP, 80 으로 설정을 했습니다.

4) Health Checks

– 헬스체크는 앞에 3)Basics 단계에서 정의한 BACK-END PROTOCOL, PORT 설정을 기반으로 하여서 적용이 됩니다. 위 그림은 기본값(Default)이며, HTTP 80 포트에 대하여 5초 간격으로 기본 페이지 “/” 를 통하여 헬스체크를 진행하며, 2초 동안 해당 서버가 응답이 없다면, 최대 2회 까지 헬스체크를 다시 요청하며, 2회 까지 헬스체크를 실패할 경우 해당 서버는 Down(Unhealthy)되었다고 간주하고, 해당 LB 에서 제외(서비스에서 제외) 시킵니다.

5) Server Instances

– 이제 LB 에 적용될(서비스에 투입될) 서버를 선택합니다. 단일 Bluemix LB 에 추가할 수 있는 서버(인스턴스)의 최대 수량은 50개입니다. 본 가이드에서는 이미 배포하여 웹서비스 데몬(아파치)을 구동하여 http 80 포트가 Listen 되고 있는 web01, web02 에 대하여 선택하겠습니다.

– 위 화면에서 확인이 가능한 것 처럼, LB 와 서버의 연결은 Private Network 를 통하여 연동이 됩니다. 최초에 LB 주문시에 Private Subnet 을 선택이 필요했던 이유기도 합니다. LB 에 적용할 서버가 해당 리스트에 나타나지 않는다면, 최초에 LB 주문시에 Private Subnet 을 정확하게 선택하였는지 다시 한번 확인이 필요합니다.

6) Review

– 최종 주문을 위한 “Review” 단계입니다.

2. LBaaS(Load Balancer as a Service) 동작 확인

– 최종 주문을 완료하고, 주문한 LB 의 STATUS 가 “Online” 이 되는 것을 기다립니다. STATUS 가 Online 으로 나오지 않고, Offline 으로 장시간 유지가 된다면, 해당 LB 주문 시에 “Network Settings”에서 방화벽 적용 옵션을 선택하신 것이 아닌지 확인이 필요하며, 그렇다면 해당 방화벽에서 TCP 5601 포트에 대하여 Open 이 필요합니다. http://knowledgelayer.softlayer.com/faq/what-ip-ranges-do-i-allow-through-firewall

 

– LB 세부화면에 들어가면, 가장 먼저 LB 주문시에 추가했던 서버에 대하여 Health Status 를 확인합니다. LB 주문시에 HTTP, HTTPS 에 대한 총2개의 Service Group 을 정의하였음으로 Health Status 항목에서 각각 확인이 가능합니다.

 

– 주문한 LB 의 Public DNS(서비스 도메인)은 “demo-lb -1412953-seo01.lb.bluemix.net” 입니다. LB 에 연동한 서버 Health Check 가 정상인지 확인하고 브라우저를 열고 테스트를 해봅니다. 먼저 http 프로토콜 부터 시작하겠습니다.

 

– LB 주문시 입력했던 “demo-lb” 가 포함된 서비스 URL 을 브라우저에 입력합니다. http://demo-lb -1412953-seo01.lb.bluemix.net

 

– LB 에 연결된 서버가 2개 이상 있으며, LB 설정에서 Session Stick 를 Disable로 했다면, 서버 1번과 서버 2번이 LB 를 통하여 순서대로 벨런싱이 됩니다. 다만, 본 가이드에서는 최초 LB 배포시 Session Stickness 를 Source IP 로 설정했기에, 브라우저를 리프래쉬 해도 Web01과 Web02 가 순서대로 나오지 않으며, Wee01 화면만 나옵니다. 참고로 익스플로러는 “Ctrl+F5” 를 통하여 리프래쉬를 하면 No-Cache 로 리프래쉬합니다.

 

– 위 화면과 같이. Session Stickness 옵션을 Disable 하고 다시 브라우저에서 테스트를 해봅니다.

 


– 브라우저에서 새로고침을 하면, web01, web02 가 순서대로 나오는 것을 확인이 가능합니다.

– 이제 http 가 아닌 https 접속 테스트를 해보겠습니다. URL 은 동일하며, 프로토콜만 http 가 아닌 https 로 하면 됩니다. 1개의 LB 에서 http 와 https with SSL Offload 로 세팅을 했기 때문입니다.

 

– URL “https://demo-lb -1412953-seo01.lb.bluemix.net” 을 브라우저에 입력하면, 보안 경고 화면이 뜹니다. LB 에 적용한 SSL 인증서가 CA 에서 인증한 공인인증서가 아닌 사설인증서이기 때문입니다. 브라우저에 따라 방법이 다르지만, 무시 하고 진행을 하시면 됩니다.

 

– 보안 경고를 무시하고 진행하시면 아래 화면과 같이 https 로 접속을 성공한 화면 확인이 가능합니다. URL 왼쪽에 “자물쇠” 를 통하여 확인이 가능합니다.

– “자물쇠” 모양을 클릭하면, LB 에 적용한 SSL 과 동일한 것임을 확인 가능합니다.

3. LBaaS(Load Balancer as a Service) Health Check 테스트

 

이번 장에서는 배포한 LB 에 대하여 헬스 체크 테스트를 해보겠습니다. LB 에 연결된 웹서버에 웹서비스 데몬(httpd)을 강제로 죽인 후에 헬스체크 상태가 변하는지, 그리고 LB 에서 해당 웹서버가 제외(서비스에서 제외)되는지를 확인하도록 하겠습니다.

– 현재 LB 에는 Web01 과 Web02 서버 총 2대가 연결 되어 있으며, 각각의 서버에는 http 80, https 443 으로 헬스체크가 정상적으로 되고 있습니다. 2/ 2 Healthy: 총 2대 중에 2대가 정상적으로 운영 중

 

– web01 서버에 접속하여서 아파치 데몬”httpd” 을 수동으로 중지 시킵니다.

 

– 아래 화면과 같이, 총 2대 중에 1대만 정상적인 Healthy 상태로 헬스체크상태(Health Checks Status)가 바뀝니다.

 

– 이제 LB Public Domain 을 브라우저에 입력하여 서비스를 확인합니다. 헬스체크 상태에서 확인한 대로 web01 은 서비스에서 제외되어서 브라우저를 통하여 web02 만 화면에 나옵니다.


– 다시, web01 서버에 접속하여 웹서비스 데몬”httpd” 을 시작합니다.

 

– LB 화면의 헬스체크 상태에서 1 / 2 에서 2 / 2로 변경된 것에 대하여 확인이 가능합니다.


– LB 의 Public Domain 을 통하여 브라우저 테스트 결과 Web01 이 다시 LB 에 등록된 것을 확인 가능합니다.

 

 

이상으로 IBM Cloud Public(IaaS) 의 LBaaS “Bluemix LB”에 대한 가이드를 마칩니다. 해당 가이드는 향후 지속적으로 업데이트 예정이며 IBM 클라우드 기술포럼(https://developer.ibm.com/kr/cloud/bluemix-_infrastructure)에서 확인 가능합니다.

감사합니다.

토론 참가

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.