SAP 에서 RFC 작업 부하를 각 AP 서버로 고르게 분배하기 위한 두가지 메커니즘이 있다.
해당 포스트에서는 로그온 그룹(Logon Group) 기반으로 사용자의 로그인을 로드 밸런싱하는 방법에 관해서 기술한다.
RFC 서버 그룹(RZ12) 을 통한 병렬 처리 작업에 대한 로드 밸런싱은 추후 작성 예정이며, 매커니즘은 비슷하지만, SAP 에서는 GUI 연결과 RFC 연결은 엄연히 말해 다르다고 설명한다.
시스템의 여러 AP(Application Server) 는 로그온 그룹이라는 서버 그룹으로 그룹화되고, 이렇게 설정된 로그온 그룹을 통해 최적의 서버로 사용자를 분배한다.
이러한 로그온 그룹의 설정은 Tcode SMLG
에서 가능하며, 기본 로그온 그룹 SPACE
는 모든 AP 서버를 대상으로 로그온 그룹을 자동 유지한다.
- SAP Notes 593058 - New RFC load balancing procedure
- SAP Notes 26317 - Set up for LOGON group for autom. load balancing
- SAP Notes 118093 - Concepts of defining 'limits' in logon load balancing
- SAP Notes 113440 - Default logon group 'SPACE' for load balancing
- SAP Notes 593060 - New favorites determination for server shutdown
- SAP Notes 3311730 - Logon via SMLG logon group always sends users to the same instance
Tcode : SMLG
SMLG 에서 정의된 로그온 그룹의 각 AP 서버는 자체 품질(Quality) 을 가진다.
로그온 그룹의 품질은 프로그램 RSRZLLG0 에 의해서 런타임 중에 계산되며, 이는 각 시스템에서 파라미터 rdisp/autoabaptime
(Default 5min) 또는 5번의 SAPGUI 로그온 후에 다시 트리거된다.
설정한 로드 밸런싱 유형에 따라 각 로그온 그룹별로 최적의 서버가 하나 결정되며, 이 서버의 정보(IP주소, 포트번호) 를 메세지 서버로 전송한다.
메세지 서버는 최적의 서버 정보를 가지고 있다가, SAPGUI 접속 요청을 받으면 가지고 있던 최적 서버 정보를 SAPGUI 로 보내, 사용자가 접속할 수 있도록 한다.
여기서 품질(Quality) 이란, 성능을 뜻하며, 가장 낮은 부하(= 최적의 평균 응답 시간) 을 뜻한다.
실제 사용자의 로그온 그룹을 통해 AP 에 접속하는 흐름은 다음과 같다.
SAPGUI 프로세스가 사용자가 선택한 로그온 그룹의 메세지 서버로 연결하고, 접속한 로그온 그룹의 최적 서버(AP) 를 요청한다.
메세지 서버는 기존에 가지고 있던 최적 서버(AP) 의 정보 - IP주소, 포트번호 를 전달한다.
SAPGUI 는 메세지 서버로 부터 받은 최적 서버(AP) 정보로 해당 서버에 접속한다.
로그온 그룹 설정에
Ext. RFC-enable
이 활성화 된 경우, RFC 연결에도 로드 밸런싱이 수행된다.
접속 흐름은 SAPGUI 접속과 비슷하게 흘러간다.
SMLG
에서 설정한 로그온 그룹의 Attributes - Fav. Typ 설정을 통해 로드 밸런싱 유형을 운영 환경에 맞게 설정할 수 있다.
SAP 가 제공하는 로드 밸런싱 유형은 총 3가지 이며, 다음과 같다.
SAPGUI 클라이언트는 최상의 품질(Quality) 을 가진 서버를 최적 서버로 지정한다.
서버의 품질은 사용자의 접속이 늘어남에 따라 줄어들게 되고, 이후 트리거에 따라 다시 최고의 품질을 가진 서버가 최적의 서버로 지정된다.
가장 간단한 방법의 유형이며, 그룹 내 서버가 순차적으로 돌아가면서 최적서버로 지정된다.
해당 유형 사용 시, 사용자는 로그온 그룹내 서버에 평균적으로 고르게 분배된다.
다만, 한번에 많은 RFC 연결(또는 프로그램/펑션) 이 동시에 시작되면, 첫 연결 AP 서버로 몰릴 수 있다는 단점이 있다.
기존 라운드 로빈 유형은 인스턴스의 성능을 고려하지 않고, 순차적으로 최적서버로 지정되어 사용자들을 분배하게 된다.
각 AP 서버의 스펙(성능) 의 차이가 있다면, 가중 라운드 로빈 유형을 사용하는 것이 조금 더 공평한 로드 밸런싱이 될 수 있다.
가중 라운드 로빈 유형은 AP 별로 정의된 가중치에 따라 사용자가 분산되며, 기본 가중치는 AP 의 Dialog Workprocess 에 따라 결정된다.
또는 프로그램 CONFIG_RR_WEIGHT 를 수행하여, 기본 가중치를 변경할 수 있다.
라운드 로빈 유형과 비슷하게 사용자는 전반적으로 로그온 그룹내 서버에 고르게 분산되지만, 각 AP 서버가 가진 Dialog Wp 수에 따른 가중치에 따라 차등적으로 로드 밸런싱된다.
- SAP Notes 1112104 - Weighted round robin procedure
Tcode : SMLG
SMLG 에서 로그온 그룹을 신규로 생성하거나, 수정할 수 있다.
서버의 성능이나, 유지보수 계획에 따라 로그온 그룹의 AP 를 전략적으로 설정할 수 있다.
AP 1,2,3,4,5,6 서버를 각각의 로그온 그룹으로 설정하여 사용자 그룹들의 접속을 예시와 같이 분리할 수 있다.
(관리적인 측면에서 유리)
Logon Group | AP | User Group |
---|---|---|
GROUP_FCM | AP 1,2 | 회계 실무 사용자들 전용 로그온 그룹 |
GROUP_SCM | AP 3,4 | 물류 실무 사용자들 전용 로그온 그룹 |
GROUP_EDU | AP 5 | 테스트, 교육 사용자들 전용 로그온 그룹 |
GROUP_GLO | AP 6 | 해외법인 사용자들 전용 로그온 그룹 |
위와 같은 설정을 사용하기 위해서는, 각 사용자 그룹별로 SAPGUI Landscape 를 조정하여, 지정된 로그온 그룹으로 접속할 수 있게 유도해야한다.
AP 서버 별로 스펙차이가 있다면, 작업 목적에 따라서도 로그온 그룹을 예시와 같이 설정할 수 있다.
(성능적인 측면에서 유리)
GROUP_DIA 로그온 그룹은 일반적인 스펙의 서버로 일반 직접 접속 사용자 전용
GROUP_HVY 로그온 그룹의 AP4 는 가용 메모리(EM, HEAP) 가 많고, TIME_OUT 시간을 충분히 설정하여, 무겁거나 수행 시간이 오래걸리는 작업 전용 그룹으로 설정
GROUP_BTC 로그온 그룹의 AP5,6 은 일반 사용자의 접속을 최소화하고, 극단적으로 BTC Workprocess 를 늘려 배치잡 수행 전용 그룹으로 설정
Logon Group | AP | User Group |
---|---|---|
GROUP_DIA | AP 1,2,3 | 현업 사용자들 전용 로그온 그룹 |
GROUP_HVY | AP 4 | 수행시간이 긴 작업을 위한 로그온 그룹 |
GROUP_BTC | AP 5,6 | 배치잡 수행 전용 (실제 사용자 로그온 지양) |
파라미터 수정 등의 이유로 개별 AP 단위로 재시작이 필요할때, 해당 AP 를 로그온 그룹에서 제외함으로써 사용자의 접속을 차단하여, 개별 AP 단위로 서비스 재시작 가능하다.
또는, 특정 AP 의 교체, 접근제한이 필요하다면, 각 로그온 그룹에서 해당 AP 서버를 제외하여, 사용자의 접속을 사전에 차단해, 사용자 불편을 최소화할 수 있다.
Tcode : SMLG -> 메뉴탭 Load Distribution (F5)
SMLG-Load Distribution 화면을 통해서 전체 AP 서버의 상태, 응답 시간(Resp.time-ms)/임계치, 접속 유저 수/임계치, 품질(Quality), Dialog Steps 를 확인할 수 있다.
또한 각 로그온 그룹 별로, 현재 설정된 최적 서버도 확인 가능하다.
실제로 해당 로그온 그룹으로 접속을 하면, Load Distribution 에서 확인한 최적 서버로 로그인되는것을 확인할 수 있다.
- SAP Notes 3442901 - How to investigate SMLG Load Distribution response times
- SAP Notes 64015 - Description of test program "lgtst"
프로그램 lgtst
를 활용하여, OS 단에서의 로그온 그룹 로드 밸런싱을 테스트할 수 있다.
lgtst
프로그램은 모든 SAP 서버 플랫폼과 SAP Frontend 플랫폼에서 사용 가능하며, 다음 명령어를 사용하여 메세지 서버에 연결 테스트를 할 수 있다.
lgtst -H <Message Server Hostname> -s sapms<SID>
예시)
Message Server Hostname(보통 ASCS) : sap-ascs-server
SID : TST
lgtst -H sap-msg-srv -s sapmsTST
연결 테스트에 성공하면 다음 목록을 확인할 수 있다.
추가로 -X
옵션을 사용하여, 특정 로그온 그룹에 대한 정보도 확인할 수 있다.
lgtst name=<SID> -X GROUP_A
RFC 부하 분산 테스트 시에는 다음 명령어를 사용한다.
lgtst -H <Message Server Hostname> -s sapms<SID> -G <Logon Group> -C <Loop Counter> -Y <Call Delay_ms>