제4장 WebtoB 5 Fix#2

내용 목차

4.1. 신규 기능
4.1.1. Scale-out 발생을 인지할 수 있는 admin 명령 추가 및 graceful connection 처리
4.1.2. WebtoB graceful down 구현 (wsdown -G)
4.1.3. JEUS scale-out 시 세션 재분배
4.1.4. Cloud 환경을 위한 WSM과 JEUS의 DAS 통신 프로토콜 기능
4.1.5. SSL 절에 DHParameter 설정
4.1.6. NODE 절에 ExcludeAllowHeaderOnError 설정
4.1.7. AUTHENT 절에 ACCESS 절을 사용할 수 있게 하는 기능
4.1.8. SVRGROUP 절에 UserAgentRegExp 설정 추가
4.1.9. REVERSE_PROXY 절에 DynamicServerAddress 설정
4.1.10. JEUS WebSocket 연동을 위한 Selector 역할 지원
4.1.11. SSL 절에 SSLServerCipherPref 설정
4.1.12. Trial License 추가
4.1.13. NODE 절에 UpperDirRestrict 설정
4.1.14. REVERSE PROXY(GROUP) 절에서 ACCESS 절을 사용할 수 있게 하는 기능
4.2. 추가기능
4.2.1. Access Log 포맷에 "%A" 설정 추가
4.2.2. SERVER 절에 AllServers 설정 추가
4.2.3. JEUS 요청 분배 시 threshold를 고려한 요청 분배 기능 추가
4.2.4. Filters process가 응답이 없는 경우 kill하는 기능 추가
4.2.5. NODE 절에 CheckUrlJsvExcept 설정 추가
4.2.6. PUT 메소드를 통해 2GB 이상 파일을 받을 수 있도록 기능 추가
4.2.7. dual SSL 인증서 설정 기능 추가
4.2.8. REVERSE 설정 시 DNS resolution 관련 기능 추가
4.2.9. RequestLevelPing 실패한 경우 에러 코드 변경 기능 추가
4.2.10. TCPGW에 대한 모니터링 기능 추가
4.3. 변경기능
4.3.1. WBSSL 버전 업그레이드
4.3.2. Reverse Proxy 사용하는 경우 설정 옵션 적용 변경
4.3.3. 405 응답에 대해 ERRORDOCUMENT 설정된 동작으로 응답할 수 있게 변경
4.3.4. NODE절 이름의 최대 길이를 32에서 128으로 변경
4.3.5. Cloud 환경에서 MS가 scale-in된 경우 통계정보 삭제
4.3.6. JENGINEID의 최대 길이를 64에서 128으로 변경
4.3.7. REVERSE PROXY 절의 ServerAddress 최대 길이를 48에서 96으로 변경
4.3.8. wsmkpw default password encryption 변경
4.3.9. RequestLevelPing의 경우 aq_count를 증가시키지 않게 변경
4.3.10. WJP 헤더의 메시지 길이가 유효하지 않은 경우 서버 연결을 닫을 수 있게 변경
4.3.11. JEUS로부터 받은 알 수 없는 메시지를 graceful하게 drop하도록 변경
4.3.12. webtob.pid 파일 권한을 640으로 변경
4.4. 버그 패치
4.4.1. pipelined request가 SSL pending된 경우 처리 못하는 버그 수정
4.4.2. JEUS 요청 처리 중 JSV 커넥션이 비정상적으로 종료될 때 pipelined SSL 처리 버그 수정
4.4.3. WebtoB scale-out되는 경우 JSV 커넥션이 정상 종료되지 않는 버그 수정
4.4.4. Reverse Proxy 사용 중 core 발생하거나 HTH가 다운될 수 있는 버그 수정
4.4.5. TCPGW에서 SSL 처리 시 발생하는 버그 수정
4.4.6. 필터를 사용하는 경우 Memory leak이 발생하는 버그 수정
4.4.7. ReverseProxy 사용 중 Chunked 요청 처리 중 발생하는 버그 수정
4.4.8. URLRewrite 사용 시 HEADERS 절 내용이 포함되지 않는 버그 수정
4.4.9. wsdown 시 잘못된 값 입력할 경우 발생하는 버그 수정
4.4.10. Response Header에 LF(\n)만 있는 경우에 발생하는 버그 수정
4.4.11. TCPGW 서버 중 다운된 서버로 요청이 들어오는 버그 수정
4.4.12. 비정상값이나 경계값을 초과하는 입력값에 대한 버그 수정
4.4.13. Default JSV 서버가 설정되지 않은 경우 Reverse Proxy가 정상적으로 처리되지 않는 버그 수정
4.4.14. FD size값이 잘못 노출되는 버그 수정
4.4.15. AccessLogThread를 설정한 경우 Access Log가 이전 날짜의 파일에 남는 버그 수정
4.4.16. Response Header에 LF(\n)가 있는 경우에 Access Log에 응답 코드가 "0"이 남는 버그 수정
4.4.17. POST 요청을 Redirect할 때 필터 커넥션을 종료하는 버그 수정
4.4.18. WebSocket.send() 시 발생하는 버그 수정
4.4.19. RequestLevelPing 사용 시 HTH이 다운될 수 있는 버그 수정
4.4.20. TCPGW 절에만 SSL을 설정한 경우 SSL initialize가 안되는 버그 수정
4.4.21. URLRewrite 기능과 ReverseProxy를 동시에 사용할 경우 발생하는 버그 수정
4.4.22. ReverseProxyGroup 설정 시 *SSL.Options="StdEnvVars"이 적용되지 않는 버그 수정
4.4.23. 환경설정 내 옵션에 '$' 설정 시 적용되지 않는 버그 수정
4.4.24. JSV compression을 실행하는 중 HTH가 다운되는 버그 수정
4.4.25. Filter process가 기동 시 다운되는 버그 수정
4.4.26. Indexname page를 processing할 때 HTH가 다운되는 버그 수정
4.4.27. wsadmin > restat 명령어 수행 시 count가 초기화되지 않는 버그 수정
4.4.28. JEUS에서 지속적으로 reconnect 할 때 HTH가 다운되는 버그 수정
4.4.29. patchinfo 오류 사항 수정
4.4.30. REVERSE_PROXY와 URLRewrite가 동일한 Vhost에 연관된 경우 발생하는 버그 수정
4.4.31. SVRGROUP을 설정하지 않은 경우 EXPIRES 절이 적용되지 않는 버그 수정

본 장에서는 WebtoB 5 Fix#2의 신규 기능과 이전 버전에서 변경된 기능, 버그 패치에 대해서 설명한다.

4.1. 신규 기능

4.1.1. Scale-out 발생을 인지할 수 있는 admin 명령 추가 및 graceful connection 처리

  • WebtoB가 Cloud 환경에서 WebtoB가 scale-in/out된 경우를 처리할 수 있는 기능을 추가하였다.

    아래와 같이 wsadmin > cfg -d 명령으로 해당 커넥션 정보를 확인할 수 있다.

    [예 4.1] *DOMAIN절로 모니터링할 수 있는 정보 추가

    $>wsadmin
    --- Welcome to WebtoB Admin (Type "quit" to leave) ---
    $$1 qpsx2 (wsadm) [2017-09-11T13:27:46]: cfg -d
        DOMAIN: Name = webtob1,
             DomainId = 0,
             MaxSvc = 512,
             NHthChkTime(nct) = 30,
             CloudFriendWebServers(cfws) = 1,
             CloudFriendJsvServers(cfjs) = 1,
             CloudConnectionBalance(ccb) = 50,
             CloudDasAddress = "192.168.1.1:9736" 

4.1.2. WebtoB graceful down 구현 (wsdown -G)

  • wsdown -G 명령을 추가하여 graceful down일 경우 HTH의 모든 클라이언트 FD가 close될 때까지 기다렸다가 HTH를 다운하도록 한다. timeout seconds 지나면 자동 close되도록 한다.

    [예 4.2] wsdown -G (timeout_sec) 명령

    $>wsdown -G 10
    
    WSDOWN for node(qpsx1) is starting: 
            WSDOWN: HTL downed: Fri Jul 20 04:14:04 2018
            WSDOWN: HTH downed: Fri Jul 20 04:14:04 2018
            WSDOWN: WSM downed: Fri Jul 20 04:14:04 2018
            WSDOWN: Graceful Down 

4.1.3. JEUS scale-out 시 세션 재분배

  • WebtoB에서는 연결된 각 JEUS 별로 session count를 알고 있다가 JEUS가 증가하면 해당 세션들을 재분배한다. 기존의 sticky로 처리되던 것을 session id로 hashing하여 각 JEUS 서버로 분배하고 평균치에 근접할 경우 다시 sticky로 처리되도록 하였다.

4.1.4. Cloud 환경을 위한 WSM과 JEUS의 DAS 통신 프로토콜 기능

  • Cloud 환경에서 WebtoB-JEUS의 Auto Scale을 위해 WebtoB-JEUS 서로간의 이벤트를 notify해줄 수 있어야 하는데 이를 위해 WSM과 DAS 간에 서로 통신할 수 있는 프로토콜을 추가하였다.

    다음과 같이 JEUS의 DAS ip와 port를 설정(설정방법 1)하거나, 환경변수에 해당 값을 설정(설정방법 2)할 수도 있다.

    • 설정방법 1)

      *DOMAIN.CloudDasAddress="Das.host.com:9736" 
    • 설정방법 2)

      *DOMAIN.CloudDasAddress="$(DASURL)" 

    *DOMAIN.CloudServiceGroupId 설정으로 Cloud 환경에서 업무(서비스)별로 WebtoB를 구분할 수 있다.

    [예 4.3] *DOMAIN.CloudDasAddress 및 CloudServiceGroupId 설정

    *DOMAIN
    webtob1      CloudDasAddress = "192.168.1.1:9736",    #"$DASURL", $ENV
                 CloudServiceGroupId = "group1" 

  • 관련이슈 : IMS-14 9295

4.1.5. SSL 절에 DHParameter 설정

  • 2048bit의 Diffie-Hellman group을 사용하기 위해서 SSL절에 DHParameter 설정을 추가하였다.

    다음과 같이 2048 bit의 dhparams.pem을 생성하여 *SSL.DHParameter에 dhparams.pem의 위치를 설정해 주어야 한다.

    [예 4.4] WBSSL 명령으로 2048 bit의 dhparams.pem 생성

    $>wbssl dhparam -out dhparams.pem 2048

    [예 4.5] *SSL.DHParameter 설정

    *SSL
    ssl      ...
                DHParameter = = "$(WEBTOBDIR)/ssl/dhparams.pem"
             ...
    

  • 관련이슈 : IMS-123759

4.1.6. NODE 절에 ExcludeAllowHeaderOnError 설정

  • 기존에는 4xx로 응답하는 경우 "Allow"를 응답 헤더(Response Header)에 포함하였으나, 해당 내용이 보안 취약점 사항이 될 수 있어 클라이언트 에러 4xx 응답에 "Allow" 헤더가 포함되지 않도록 하는 옵션을 추가하였다.

    [예 4.6] *NODE.Options="ExcludeAllowHeaderOnError" 설정

    *NODE
    webtob      WEBTOBDIR = "/home/webtob5",
                SHMKEY = 54800,
                Options = "ExcludeAllowHeaderOnError"
    

  • 관련이슈 : IMS-131070

4.1.7. AUTHENT 절에 ACCESS 절을 사용할 수 있게 하는 기능

  • *AUTHENT 절을 사용할 때 특정 IP 대역에 대해서 사용하고자 하는 요구가 있어, *AUTENT 절에 AccessName을 설정하여 *ACCESS 절을 함께 사용할 수 있도록 기능을 추가하였다.

    [예 4.7] *AUTHENT.AccessName 설정

    *AUTHENT
    auth1           Type = Basic, 
                    UserFile = "/home/server/webtob/auth/auth1.pass",
                    AccessName = access1
    
    *ACCESS
    access1         Order = "allow,deny",
                    Allow = "192.168.0.0/255.255.0.0"
    
    *SVRGROUP
    htmlg           SVRTYPE = HTML, AuthentName = auth1
    jsvg            SVRTYPE = JSV 

  • 관련이슈 : IMS-137456

4.1.8. SVRGROUP 절에 UserAgentRegExp 설정 추가

  • USER-AGENT에 따라 특정 JEUS로 요청을 보내도록 기능을 추가하였다.

    *SVRGROUP 절에 UserAgentRegExp 항목을 추가하여 해당 User Agent로 들어온 요청에 대해서는 해당 서버로 보내도록 하는 기능을 설정할 수 있다.

    [예 4.8] *SVRGROUP.UserAgentRegExp 설정

    *SVRGROUP
    jsvg           SVRTYPE = JSV, UserAgentRegExp = "(FireFox|Opera|Chrome|Safari)"
    jsvg2          SVRTYPE = JSV, UserAgentRegExp = "Whale" 
    
    *SERVER
    MyGroup        SVGNAME = jsvg, MinProc = 5, MaxProc = 10
    MyGroup2       SVGNAME = jsvg2, MinProc = 5, MaxProc = 10 

  • 관련이슈 : IMS-136851, IMS-139916

4.1.9. REVERSE_PROXY 절에 DynamicServerAddress 설정

  • Reverse Proxy에서 도메인으로 설정된 ServerAddress의 IP가 동적으로 변경되어 연결이 끊기는 경우에 다시 DNS Resolution을 시도할 수 있도록 *REVERSE_PROXY.Options="DynamicServerAddress"을 추가 하였다.

    [예 4.9] *REVERSE_PROXY.Options="DynamicServerAddress" 설정

    *REVERSE_PROXY
    jsp_url
                   ReverseProxyGroupName="jeus_rpg",
                   ServerAddress = "192.168.1.1:5580",
                   Options = "DynamicServerAddress"

  • 관련이슈 : IMS-138268

4.1.10. JEUS WebSocket 연동을 위한 Selector 역할 지원

  • 기존에는 WebSocket을 사용하는 경우 WebtoB에 Reverse Proxy를 설정하고 JEUS에서 HTTP Listener를 사용해 왔다. ReverseProxy 설정이 아닌 기존의 WebtoB-JEUS 간의 연동을 통해 WebSocket을 사용할 수 있도록 기능을 추가하였다.

    WebSocket 사용을 위해서는 아래와 같이 SERVER 절에 WSProc 설정을 통해 WebSocket 전용 커넥션을 받을 수 있도록 설정해야 한다.

    [예 4.10] *SERVER.WSProc 설정

    *SERVER
    MyGroup        SVGNAME = jsvg, MinProc = 10, MaxProc = 20, WSProc = 1 

    참고

    본 기능은 JEUS 8 Fix#2 버전부터 지원이 가능하다.

4.1.11. SSL 절에 SSLServerCipherPref 설정

  • Apache의 SSLHonorCipherOrder나 nginx의 ssl_prefer_server_ciphers와 유사한 기능으로 *SSL.SSLServerCipherPref를 설정하여 RequiredCiphers에 등록된 순서대로 사용할지 여부를 결정할 수 있다.

    [예 4.11] *SSL.SSLServerCipherPref 설정

    *SSL
    ssl        CertificateFile = "$(WEBTOBDIR)/ssl/server.crt",
               CertificateKeyFile = "$(WEBTOBDIR)/ssl/server.key",
               RequiredCiphers = "ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA256",
               PassPhraseDialog="exec:$(WEBTOBDIR)/ssl/pass.sh",
               SSLServerCipherPref = Y 

  • 관련이슈 : IMS-143514

4.1.12. Trial License 추가

  • JEUS와 같이 최대 접속 가능한 User 수가 5개로 제한되어 있는 Trial License를 추가하였다.

  • WebtoB 5 Fix#2 Installer로 설치할 때 Trial License를 포함하여 설치된다.

4.1.13. NODE 절에 UpperDirRestrict 설정

  • 기존에는 '../' 사용을 통한 상위 디렉터리 접근에 대하여 URL Rewrite 설정을 통하여 제한하도록 하였으나, *NODE.UpperDirRestrict 설정을 통하여 상위 디렉터리 접근에 대하여 제한할 수 있는 기능을 추가하였다. (기본값: N)

    다음과 같이 UpperDirRestrict = Y로 설정할 경우 Request URI에 상위 디렉터리로 접근하려는 '../'가 포함되어 있으면 "403 Forbidden"으로 응답하도록 한다.

    [예 4.12] *NODE.UpperDirRestrict 설정

    *NODE
    webtob      WEBTOBDIR = "/home/webtob5",
                SHMKEY = 54800,
                UpperDirRestrict = Y 

  • 관련이슈 : IMS-125134

4.1.14. REVERSE PROXY(GROUP) 절에서 ACCESS 절을 사용할 수 있게 하는 기능

  • *REVERSEPROXY 절을 사용할 때 특정 IP 대역에 대해서 access control할 수 있도록 *REVERSEPROXY 절에 AccessName을 설정하여 *ACCESS 절을 함께 사용할 수 있도록 기능을 추가하였다.

    [예 4.13] *REVERSEPROXY(GROUP).AccessName 설정

    *REVERSE_PROXY
    jsp_url
                   ReverseProxyGroupName="jeus_rpg",
                   ServerAddress = "192.168.1.1:5580",
                   AccessName = access1
    
    *ACCESS
    access1         Order = "allow,deny",
                    Allow = "192.168.0.0/255.255.0.0"
    

  • 관련이슈 : IMS-149202

4.2. 추가기능

4.2.1. Access Log 포맷에 "%A" 설정 추가

  • Access Log 포맷에 서버의 IP를 기록할 수 있는 "%A" 설정을 추가하였다.

    [예 4.14] Access Log 포맷에 "%A" 설정 추가

    *LOGGING
    log1        Format = "%h %A %l %u %t \"%r\" %s %b", 
                FileName = "C:/TmaxSoft/WebtoB5/log/access.log",
                Option = "sync"
    

  • 관련이슈 : IMS-121596

4.2.2. SERVER 절에 AllServers 설정 추가

  • 기존 JEUS 요청(JSV 타입)에 대한 필터 처리가 필요한 경우 FILTERS 프로세스에서 처리하던 방식이었으나, HTMLS 요청(HTML 타입 등)에 대한 필터 처리에 대해서도 FILTERS 프로세스에서 처리할 수있는 옵션을 추가하였다.

    [예 4.15] *SERVER(filters).Options="AllServers" 설정

    *FILTER         
    sm_filter     RealPath = "/home/webtob5/config/filter/wbSmISAPI.so"
    
    *SVRGROUP       
    filterg  SVRTYPE=filter, filter="sm_filter"
    
    *SERVER         
    filters SVGNAME="filterg", Minproc=1, Maxproc=40, Options="AllServers"
    

  • 관련이슈 : IMS-121825

4.2.3. JEUS 요청 분배 시 threshold를 고려한 요청 분배 기능 추가

  • 기존에는 JEUS 요청에 대해 WebtoB에서 RR 방식으로 분배하고 있다. 이때 각각 ms에서 설정한 threshold 이상의 스레드가 running 상태라면 아직 threshold 이하의 스레드가 running 상태인 ms에게 우선적으로 요청을 할당하도록 변경하였다.

    [예 4.16] wsadmin > st -j 로 모니터링 시 threshold 컬럼 추가

    $>wsadmin
    --- Welcome to WebtoB Admin (Type "quit" to leave) ---
    
    $$13 qpsx1 (wsadm) [2017-05-25T10:50:23]: st -j
    HTH 0(18696): RDY
       -------------------------------------------------------------------------------- 
       svr_name  jengineno  threshold   cons       reqs      count      avg   jengineid 
       -------------------------------------------------------------------------------- 
       MyGroup         0          -        10          0          0     0.0000  amV1c19kb21haW4vc2VydmVyMQ==(jeus_domain/server1)
    

  • 관련이슈 : IMS-129440, IMS-131069

4.2.4. Filters process가 응답이 없는 경우 kill하는 기능 추가

  • 클라이언트가 이미 연결이 끊어진 상황에서 timeout이 지나도록 Filters process가 응답이 없는 경우 HTH가 Filters process를 kill하도록 하는 기능을 추가하였다.

  • 관련이슈 : IMS-136392

4.2.5. NODE 절에 CheckUrlJsvExcept 설정 추가

  • *NODE.CheckUrlJsvExcept = Y로 설정하면 JEUS에 전달되는 요청에 대해서는 CheckUrl 설정이 동작하지 않도록 기능 추가하였다.

    [예 4.17] *NODE.CheckUrlJsvExcept = Y설정

    *NODE
    webtob          WEBTOBDIR = "/home/webtob5",
                    SHMKEY = 54800,
                    CheckURL = Y,
                    CheckURLTo = "euc-kr",
                    CheckURLFrom = "utf-8",
                    CheckUrlJsvExcept = Y
    

  • 관련이슈 : IMS-139327

4.2.6. PUT 메소드를 통해 2GB 이상 파일을 받을 수 있도록 기능 추가

  • 기존에는 PUT 메소드를 통해 요청이 들어온 경우 Content-Length가 2GB(INT_MAX) 이상인 경우 처리가 불가하였으나 2GB 이상의 파일도 처리가 가능하도록 기능을 추가하였다.

4.2.7. dual SSL 인증서 설정 기능 추가

  • dual SSL 인증서(ecdhe-rsa와 ecdhe-ecdsa)를 설정할 수 있도록 기능을 추가하였다.

    아래와 같이 두 개 이상의 인증서를 *SSL.CertificateFile 및 CertificateKeyFile에 콤마(,)로 구분하여 설정한다.

    [예 4.18] *SSL.CertificateFile 및 CertificateKeyFile 설정

    *SSL
    ssl1            CertificateFile = "$(WEBTOBDIR)/ssl/server.crt,$(WEBTOBDIR)/ssl/server-ecc.crt",
                    CertificateKeyFile = "$(WEBTOBDIR)/ssl/server.key, $(WEBTOBDIR)/ssl/server-ecc.key"
    

  • 관련이슈 : IMS-152131

4.2.8. REVERSE 설정 시 DNS resolution 관련 기능 추가

  • *REVERSE_PROXY.Options="DynamicServerAddress"를 설정하는 경우 DNS 갱신 시점에 발생할 수 있는 요청 지연 현상 개선을 위한 기능을 추가하였다.

    *ReverseProxy.ConnectRetryCount는 설정된 내부 서버와 TCP에 연결 실패하는 경우 DNS resolution을 다시 실행 하는 횟수를 설정하며, *ReverseProxy.ConnectTimeout은 내부 서버와 TCP 연결을 시도 한 후 일정 시간 동안 접속 요구에 대한 응답이 없으면 연결을 재시도 하도록 시간을 설정한다.

    [예 4.19] *ReverseProxy.ConnectRetryCount 및 ConnectTimeout 설정

    *REVERSE_PROXY
    jsp_url
                   ReverseProxyGroupName="jeus_rpg",
                   ServerAddress = "192.168.1.1:5580",
                   Options = "DynamicServerAddress",
                   ConnectRetryCount = 10,
                   ConnectTimeout = 5,
    

  • 관련이슈 : IMS-162352

4.2.9. RequestLevelPing 실패한 경우 에러 코드 변경 기능 추가

  • *SERVER.RequestLevelPing에 실패할 때 반환하는 status code를 *NODE.TimeoutStatus에 설정한 error code로 변경할 수 있도록 하는 기능을 추가하였다.

    기존에는 RequestLevelPing이 실패하는 경우 accesslog에 503 에러 응답하였으나, *NODE.CheckPingTimeoutStatus = 512로 설정하면 해당 에러가 남게 된다.

    [예 4.20] *NODE.CheckPingTimeoutStatus설정

    *NODE
    webtob          WEBTOBDIR = "/home/webtob5",
                    SHMKEY = 54800,
                    CheckPingTimeoutStatus = 512
    
    *SERVER
    MyGroup         SVGNAME = jsvg, MinProc = 30, MaxProc = 30, RequestLevelPing=Y
    

  • 관련이슈 : IMS-162786

4.2.10. TCPGW에 대한 모니터링 기능 추가

  • 기존에는 TCPGW에 대한 모니터링 정보를 wsadmin > ci 로 확인할 수 있었으나, 아래와 같이 wsadmin > st -tcpgw 명령으로 현재 커넥션 정보를 확인할 수 있도록 기능을 추가하였다.

    [예 4.21] wsadmin > st -tcpgw 기능 추가

    $>wsadmin
    --- Welcome to WebtoB Admin (Type "quit" to leave) ---
    
    $$10 tmaxsoft (wsadm) [2018-07-20T20:43:29]: st -tcpgw s* 
    
    ------------------------------------------------------------------------- 
     hth (tcpgwi)tcpgwname count avg cons remote_ipaddr:port 
    ------------------------------------------------------------------------- 
       0 ( 1/ 0) sw_jeus2 0 0.0000 0 192.168.1.14:18088 
       0 ( 1/ 1) sw_jeus2 0 0.0000 0 192.168.1.14:28088 
       0 ( 1/ 2) sw_jeus2 0 0.0000 0 192.168.1.14:38088 
       0 ( 1/ 3) sw_jeus2 0 0.0000 0 192.168.1.14:48088 
       0 ( 1/ 4) sw_jeus2 0 0.0000 0 192.168.1.14:58088
    

  • 관련이슈 : IMS-167446

4.3. 변경기능

4.3.1. WBSSL 버전 업그레이드

  • WBSSL의 버전을 기존의 "WBSSL 2.3.0_B0"에서 "WBSSL 2.3.1_B2"로 업그레이드하였다.

    $>wbssl version
    WBSSL 2.3.1 B2 30 Mar 2018

4.3.2. Reverse Proxy 사용하는 경우 설정 옵션 적용 변경

  • ReverseProxy를 사용하는 경우 *NODE(*VHOST).Method 설정에 지원하지 않는 메소드에 대해 응답하는 문제를 수정하였다.

  • 관련이슈 : IMS-120109

4.3.3. 405 응답에 대해 ERRORDOCUMENT 설정된 동작으로 응답할 수 있게 변경

  • 307로 redirect되고 난 후에 앞선 요청과 동일한 메소드로 요청이 올 경우를 고려하여 마치 GET 메소드 요청인 것처럼 처리하도록 변경하였다. 이때 요청 URL이 ERRORDOCUMENT에 설정한 url과 같은 경우 405 응답이 바로 나가지 않고 ERRORDOCUMET 설정된 url로 응답하게 된다.

  • 관련이슈 : IMS-120109

4.3.4. NODE절 이름의 최대 길이를 32에서 128으로 변경

  • 기존에는 NODE 절의 이름을 기존에는 32자까지 입력할 수 있었으나 Cloud 환경의 VM의 hostname이 31자를 넘어가는 경우가 있어 NodeName을 최대 127자까지 입력 가능하도록 변경하였다.

  • 관련이슈 : IMS-124789

4.3.5. Cloud 환경에서 MS가 scale-in된 경우 통계정보 삭제

  • *DOMAIN.CloudDasAddress 설정을 사용하는 경우 특정 MS로부터 WebtoB와의 모든 연결이 끊어진 경우, 즉 Cloud 환경에서 MS가 scale-in된 경우 통계정보(wsadmin> st -j)에서 해당 jengineid(no)를 제거하도록 변경하였다.

  • 관련이슈 : IMS-124997

4.3.6. JENGINEID의 최대 길이를 64에서 128으로 변경

  • wsadmin > st -j로 확인하는 경우 조회되는 Encryption된 Server Name의 길이가 길어서 잘리는 경우가 있어 JENGINEID의 최대 길이를 기존 64에서 128로 변경하였다.

  • 관련이슈 : IMS-132832

4.3.7. REVERSE PROXY 절의 ServerAddress 최대 길이를 48에서 96으로 변경

  • *REVERSEPROXY.ServerAddress를 ELB의 Domain 이름으로 설정할 때 길이 제한으로 인해 wscfl이 실패하는 경우가 발생하여 ServerAddress의 최대 size를 기존 48에서 96으로 변경하였다.

  • 관련이슈 : IMS-137224

4.3.8. wsmkpw default password encryption 변경

  • wsmkpw를 통해 password를 생성하는 경우 encrypt할 방식을 선택하게 되는데, 기존에는 default로 생성할 때 8글자에 제한을 두어서 8자 이상 입력하여도 최초 8자까지만 password로 사용하였다. 이에 기본값을 MD5로 변경하고 기존 기본값이었던 CRYPT 방식을 선택할 경우 8글자 초과의 password는 입력 받을 수 없도록 수정하였다(MD5는 글자 제한 없음).

  • 관련이슈 : IMS-150340

4.3.9. RequestLevelPing의 경우 aq_count를 증가시키지 않게 변경

  • *SERVER.RequestLevelPing을 설정한 경우 wsadmin > st -s로 정보를 확인할 때 실제 큐잉된 request와 구분할 수 없어 RequestLevelPing 요청의 경우 aq_count를 증가시키지 않도록 변경되었다.

  • 관련이슈 : IMS-156689

4.3.10. WJP 헤더의 메시지 길이가 유효하지 않은 경우 서버 연결을 닫을 수 있게 변경

  • JEUS로부터 읽은 헤더의 메시지 길이에 이상한 값이 들어 있는 경우, HTH가 restart될 수 있는 이슈가 있어 해당의 경우 서버 연결을 닫는 방어 코드를 넣어 restart되지 않도록 수정하였다.

  • 관련이슈 : IMS-153787

4.3.11. JEUS로부터 받은 알 수 없는 메시지를 graceful하게 drop하도록 변경

  • JEUS가 알 수 없는 메시지를 보내는 것은 JEUS의 known bug이나 낮은 버전의 JEUS를 사용하는 경우 WebtoB가 해당 커넥션을 끊는데, WebtoB에서 해당 메시지를 graceful 하게 drop하도록 수정하였다.

  • 관련이슈 : IMS-117370

4.3.12. webtob.pid 파일 권한을 640으로 변경

  • WebtoB를 기동하는 경우 생성되는 webtob.pid 파일이 기존에는 IPCPERM 0777로 설정할 때 파일 권한이 666으로 생성되었으나, 640으로 변경하였다.

  • 관련이슈 : IMS-162827

4.4. 버그 패치

4.4.1. pipelined request가 SSL pending된 경우 처리 못하는 버그 수정

  • SSL 연결된 클라이언트 커넥션에서 pipelined request가 들어온후 SSL pending된 경우 앞선 요청 처리후 해당 버퍼를 free해버리는 버그를 수정하였다.

4.4.2. JEUS 요청 처리 중 JSV 커넥션이 비정상적으로 종료될 때 pipelined SSL 처리 버그 수정

  • JEUS에 요청을 처리하는 중 JSV 커넥션이 비정상적으로 종료될 때 SSL 처리하는 도중 HTH가 다운될 수 있는 버그를 수정하였다.

4.4.3. WebtoB scale-out되는 경우 JSV 커넥션이 정상 종료되지 않는 버그 수정

  • Cloud 환경에서 WebtoB가 scale-out된 경우에 기존에 맺고 있던 JSV 커넥션이 정상적으로 분배되지 않는 버그를 수정하였다.

  • 관련이슈 : IMS-124997

4.4.4. Reverse Proxy 사용 중 core 발생하거나 HTH가 다운될 수 있는 버그 수정

  • Reverse Proxy 사용 중 클라이언트가 대용량의 바디가 있는 요청을 chunked로 보내고 있는 상황에서 chunk data가 CRLF로 끝나지 않은 Request Error가 발생하면서 400 error를 보내주는데 해당 시점에 Reverse Proxy 서버 연결을 clear해주지 못하여 발생하는 버그를 수정하였다.

  • 관련이슈 : IMS-129710

4.4.5. TCPGW에서 SSL 처리 시 발생하는 버그 수정

  • *TCPGW에 *SSL 설정을 통한 응답 처리가 정상적이지 않는 버그를 수정하였다.

  • 관련이슈 : IMS-132851

4.4.6. 필터를 사용하는 경우 Memory leak이 발생하는 버그 수정

  • ISAPI 필터를 사용하여 POST 요청을 처리할 때 Response Header의 필터에서 정의한 헤더를 추가하는 과정에서 Memory leadk (메모리릭)이 발생할 수 있는 버그를 수정하였다.

  • 관련이슈 : IMS-133609

4.4.7. ReverseProxy 사용 중 Chunked 요청 처리 중 발생하는 버그 수정

  • size가 큰 chunked request를 Reverse Proxy에서 처리할 때 뒷단의 서버로 전달하는 과정보다 클라이언트가 보내는 속도가 더 빨라서 Flow control이 필요한 경우 chunked offset이 깨질 수 있는 버그를 수정하였다.

  • 관련이슈 : IMS-136341

4.4.8. URLRewrite 사용 시 HEADERS 절 내용이 포함되지 않는 버그 수정

  • URLRewrite 설정을 타고 redirect 응답할 경우 *HEADERS 설정이 적용되지 않는 버그를 수정하였다.

  • 관련이슈 : IMS-138490

4.4.9. wsdown 시 잘못된 값 입력할 경우 발생하는 버그 수정

  • WebtoB를 종료하는 경우(wsdown) 잘못된 값(예:Y, N 등)을 입력할 경우 잘못된 값 입력에 대한 오류 메시지가 제공되지 않고 기능 실행이 중단되는 버그를 수정하였다.

4.4.10. Response Header에 LF(\n)만 있는 경우에 발생하는 버그 수정

  • Response Header의 line 단위를 구분할 때 기존 CRLF(\r\n) 뿐만 아니라 LF(\n)만 있는 경우에도 요청 처리가 가능하도록 수정하였다.

  • 관련이슈 : IMS-139916

4.4.11. TCPGW 서버 중 다운된 서버로 요청이 들어오는 버그 수정

  • *TCPGW.ServerAddress 커넥션이 fail 또는 timeout이 발생하는 경우 해당 socket(fd)에 유효성을 체크하는 로직을 수정하였다.

  • 관련이슈 : IMS-138818

4.4.12. 비정상값이나 경계값을 초과하는 입력값에 대한 버그 수정

  • *NODE.Port 설정값이 0인 경우 등 매뉴얼 상의 범위에 벗어난 값을 입력하였을 경우 잘못된 입력값에 대한 오류 메시지가 제공되지 않으며, 정상적으로 wscfl이 되는 버그를 수정하였다.

  • 관련이슈 : IMS-140277

4.4.13. Default JSV 서버가 설정되지 않은 경우 Reverse Proxy가 정상적으로 처리되지 않는 버그 수정

  • 특정 Vhost로 요청이 들어올 경우 예를 들어 test.jsp 해당 Vhost로 처리할 수 있는 JSV Server(Default)가 설정되어 있지 않은 경우 REVERSE_PROXY를 통해 응답이 되지 않고, 503 에러가 발생하는 버그를 수정하였다.

  • 관련이슈 : IMS-140087

4.4.14. FD size값이 잘못 노출되는 버그 수정

  • hth -v 및 wsboot -v으로 확인하는 경우 조회되는 FD 값이 8192로 노출되는 버그를 수정하였다.

  • 관련이슈 : IMS-153001

4.4.15. AccessLogThread를 설정한 경우 Access Log가 이전 날짜의 파일에 남는 버그 수정

  • *HTH_THREAD.AccessLogThread = Y로 설정하여 사용하는 환경에서 특정 HTH로의 요청이 없을 경우 Access Log 파일에 대한 FD가 close되지 않을 수 있는 버그를 수정하였다.

  • 관련이슈 : IMS-143449

4.4.16. Response Header에 LF(\n)가 있는 경우에 Access Log에 응답 코드가 "0"이 남는 버그 수정

  • Response Header의 line 단위를 구분할 때 LF(\n)가 있는 경우에 Response status line의 응답 코드 파싱에 실패하여 0으로 남게 되는데 해당 요청 처리가 가능하도록 수정하였다.

  • 관련이슈 : IMS-143445

4.4.17. POST 요청을 Redirect할 때 필터 커넥션을 종료하는 버그 수정

  • 필터를 통한 POST 요청에 대한 바디 처리를 위해 302 Redirect를 한 후 필터 커넥션은 그대로 유지한 채 클라이언트가 보내고 있는 Request Body를 받아서 버려준 후에 클라이언트 커넥션만 끊어주고 필터는 그대로 사용할 수 있도록 수정하였다.

  • 관련이슈 : IMS-143843

4.4.18. WebSocket.send() 시 발생하는 버그 수정

  • WebtoB 5 버전에서 Reverse proxy를 통한 WebSocket 업그레이드 이후 'websocket flag'가 초기화되는 버그를 수정하였다.

  • 관련이슈 : IMS-148638

4.4.19. RequestLevelPing 사용 시 HTH이 다운될 수 있는 버그 수정

  • RequestLevelPing을 사용하는 경우 JEUS로부터 PING에 대한 PONG이 오지않아 클라이언트 연결과 해당 JSV 연결을 끊었으나, 이후 JEUS로부터 reconnect가 되고 이전 요청을 다시 처리하고자 하면서 HTH가 다운되는 버그를 수정하였다.

  • 관련이슈 : IMS-148767

4.4.20. TCPGW 절에만 SSL을 설정한 경우 SSL initialize가 안되는 버그 수정

  • TCPGW에만 SSL을 설정하여 사용하는 경우 SSL 초기화되는 작업을 진행하지 않는 버그를 수정하였으며, 클라이언트와 SSL Handshake가 완료된 이후 뒷단의 서버와 연결하도록 수정하였다.

4.4.21. URLRewrite 기능과 ReverseProxy를 동시에 사용할 경우 발생하는 버그 수정

  • URLRewrite와 ReverseProxy를 사용할 경우 504 응답이 오는 버그로, URPRewrite + ReverseProxy를 동시에 사용할 경우 Http 헤더를 재작성하게 되는데 버퍼 관리 부분에 버그가 있어 이를 수정하였다.

  • 관련이슈 : IMS-150379

4.4.22. ReverseProxyGroup 설정 시 *SSL.Options="StdEnvVars"이 적용되지 않는 버그 수정

  • Default JSV 서버가 설정되지 않은 경우 Reverse Proxy가 정상적으로 처리되지 않는 버그를 수정하면서 발생한 side-effect로 *ReverseProxyGroup을 설정 하는 경우에도 stdEnvVars가 적용되도록 수정하였다.

  • 관련이슈 : IMS-150532

4.4.23. 환경설정 내 옵션에 '$' 설정 시 적용되지 않는 버그 수정

  • 설정을 환경변수('$'로 시작)로 적용하도록 변경하면서 발생한 side-effect로 환경변수 설정 외에도 RegExp나 SetHostHeader 설정에서 '$'를 인식할 수 있도록 수정하였다.

  • 관련이슈 : IMS-152421

4.4.24. JSV compression을 실행하는 중 HTH가 다운되는 버그 수정

  • JSV compression을 실행하는 도중 상태가 변경될 수 있는 문제로 HTH 다운될 수 있는 버그를 수정하였다.

  • 관련이슈 : IMS-153164

4.4.25. Filter process가 기동 시 다운되는 버그 수정

  • WebtoB 4.1 버전에서는 발생하지 않고, WebtoB 5에서만 발생한 문제로 Filter process가 기동할 때 다운될 수 있는 문제를 수정하였다.

  • 관련이슈 : IMS-153986

4.4.26. Indexname page를 processing할 때 HTH가 다운되는 버그 수정

  • Indexname="index.php"로 설정한 후 SSL로 슬래시(/) 요청 처리 후 NonSSL로 동일 요청을 보냈을 경우 앞선 요청에서 사용한 버퍼의 포인터가 남아있는 문제로 인해 core가 발생할 수 있는 버그를 수정하였다.

  • 관련이슈 : IMS-152091

4.4.27. wsadmin > restat 명령어 수행 시 count가 초기화되지 않는 버그 수정

  • wsadmin > restat -a를 입력하는 경우 wsadmin > st -s로 보이는 htmls count가 초기화되지 않는 문제 및 스레드 정보가 초기화되지 않는 버그를 수정하였다.

  • 관련이슈 : IMS-156670

4.4.28. JEUS에서 지속적으로 reconnect 할 때 HTH가 다운되는 버그 수정

  • JEUS와의 커넥션을 관리하기 위한 객체를 shared memory에 할당해 놓은 것 보다 더 많이 할당하여 overflow된 인덱스를 접근하면서 발생한 버그를 수정하였다.

  • 관련이슈 : IMS-155395

4.4.29. patchinfo 오류 사항 수정

  • 최신 WebtoB 4.1.9.1에 수정된 버그 패치 중 WebtoB 5 버전에 미포함된 패치에 대해 추가 적용 및 patchinfo 내용 중 오타로 인해 잘못 작성된 부분을 수정하였다.

  • 관련이슈 : IMS-160414

4.4.30. REVERSE_PROXY와 URLRewrite가 동일한 Vhost에 연관된 경우 발생하는 버그 수정

  • (IMS-140087)에서 수정된 이후 발생하는 side-effect로 *VHOST와 *ReverseProxy에서 동일하게 설정된 경우 기존에는 URI에서 매칭되었다. 해당 내용 수정 이후 ReverseProxy 설정에 따라 정상적인 응답을 하지 못하는 버그를 수정하였다.

  • 관련이슈 : IMS-147271

4.4.31. SVRGROUP을 설정하지 않은 경우 EXPIRES 절이 적용되지 않는 버그 수정

  • WebtoB 5 버전부터 HTMLS가 제외되었음에도 *EXPIRES 절을 사용하기 위해서는 HTML 서버 그룹을 기본값로 설정해야 하였으나, *SVRGROUP 절에 HTML 서버를 설정하지 않은 경우에도 EXPIRES 설정이 정상적으로 동작하도록 수정하였다.

  • 관련이슈 : IMS-164680