SAP 에서 RFC 작업 부하를 각 AP 서버로 고르게 분배하기 위한 두가지 메커니즘이 있다.
해당 포스트에서는 로그온 그룹(Logon Group) 기반으로 사용자의 로그인을 로드 밸런싱에 관해서 기술한다.
RFC 서버 그룹(RZ12) 을 통한 병렬 처리 작업에 대한 로드 밸런싱은 추후 작성 예정이며, 매커니즘은 비슷하지만, SAP 에서는 GUI 연결과 RFC 연결은 엄연히 말해 다르다고 설명한다.
시스템의 여러 AP(Application Server) 는 로그온 그룹이라는 서버 그룹으로 그룹화되고, 이렇게 설정된 로그온 그룹은 RFC 연결을 통해 최적의 서버로 사용자를 분배한다.
이러한 로그온 그룹의 설정은 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주소, 포트번호) 를 메세지 서버로 전송한다.
여기서 품질(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>