.. _env: 3장. 설정구조 ****************** 이 장에서는 설정구조와 변경된 설정을 적용하는 방법에 대해 설명한다. 구조를 정확히 이해해야 빠르게 서버를 배치할 수 있을뿐만 아니라 장애상황을 유연하게 극복할 수 있다. .. note:: - `[동영상 강좌] 해보자! STON Edge Server - Chapter 2. 설정하기 `_ - `[동영상 강좌] 해보자! STON Edge Server - Chapter 3. 가상호스트 만들기 `_ 설정은 크게 전역(server.xml)과 가상호스트(vhosts.xml)로 나뉜다. .. figure:: img/conf_files.png :align: center 2개의 .xml파일이 전부입니다. 2개의 XML파일로 대부분의 서비스를 구성한다. 여러 TXT파일에는 가상호스트별 예외조건을 설정하는데, 특정기능의 목록을 작성하는데 사용된다. 기능설명을 위해 다음처럼 완전한 형태의 XML을 예시하는 것은 굉장히 번거롭다. :: ON 때문에 다음과 같이 축약하여 설명한다. :: # server.xml - ON .. note:: 라이센스(license.xml)는 설정이 아니다. .. _api-conf-reload: 설정 Reload ==================================== 설정 변경 후 관리자가 명확하게 API를 호출해야 한다. 시스템과 성능 관련설정을 제외한 대부분의 설정은 서비스 중단없이 즉시 적용된다. :: http://127.0.0.1:10040/conf/reload 설정이 변경될 때마다 :ref:`admin-log-info` 에 변경사항이 기록된다. .. _api-conf-reload-mode: Reload 동작방식 ------------------------------------ ``v2.8.0`` 부터 설정 Reload의 상세 동작방식을 지원한다. :: # Shared - `` (기본: Exclusive)`` - ``Exclusive (기본)`` 전체 가상호스트를 상호배제적으로 설정변경 처리한다. .. figure:: img/reload_exclusive.png :align: center 모든 설정이 한번에 Exclusive (상호배제)상태에서 로딩된다. - ``Shared`` 변경된 가상호스트만 상호배제적으로 설정변경 처리한다. .. figure:: img/reload_shared.png :align: center ``Exclusive`` 상태 들어가기 전 변경 필요한 가상호스트만 추려서 로딩한다. server.xml 전역설정 ==================================== 실행파일과 같은 경로에 존재하는 server.xml이 전역설정 파일이다. XML형식의 텍스트파일이다. :: # server.xml ... ... ... 우선 전역설정의 구조와 간단한 기능위주로 설명한다. :ref:`access-control` 나 :ref:`snmp` 등 전역설정에 위치하지만 덩치가 큰 기능들에 대해서는 각 주제를 다루는 장에서 설명한다. .. toctree:: :maxdepth: 2 .. _env-host: 관리자 설정 ------------------------------------ 관리목적의 기능을 설정한다. :: # server.xml - stream_07 admin@example.com 192.168.1.1 192.168.2.1-255 192.168.3.0/24 192.168.4.0/255.255.255.0 - ```` 서버 이름을 설정한다. 이름이 입력되지 않으면 시스템 이름을 사용한다. - ```` 관리자 정보(메일 또는 이름)를 설정한다. 이 항목은 SNMP 조회목적으로만 사용된다. - ```` 관리용도로 사용할 매니저 포트와 ACL(Access Control List)을 설정한다. ACL은 IP, IP범위, BitMask, Subnet 이상 네 가지 형식을 지원한다. 접속한 세션이 Allow로 접근이 허가된 IP가 아니면 접속을 차단한다. API를 호출하는 IP가 ```` 목록에 반드시 설정되어야 한다. 접근조건에 따라 접근권한(Role)을 설정할 수 있다. 접근권한이 없는 요청에 대해서는 **401 Unauthorized** 로 응답한다. ```` 조건에 ``Role`` 속성을 명시적으로 선언하지 않을 경우 ```` 의 ``Role`` 속성이 적용된다. - ``Admin`` 모든 API호출이 가능하다. - ``User`` :ref:`api_monitoring` , :ref:`api-graph` API만 호출할 수 있다. - ``Looker`` :ref:`api-graph` API만 호출할 수 있다. 기타 다음과 같은 자잘한 관리목적의 속성을 가진다. - ``HttpMethod`` - ``ON (기본)`` :ref:`caching-purge-http-method` 호출시 ACL을 검사한다. - ``OFF`` :ref:`caching-purge-http-method` 호출시 ACL을 검사하지 않는다. - ``UploadMultipartName`` :ref:`api-conf-upload` 의 변수명을 설정한다. .. _env-cache-storage: Storage 구성 ------------------------------------ Caching된 콘텐츠를 저장할 Storage를 구성한다. :: # server.xml - /user/cache1 /user/cache2 /user/cache3 - ```` 콘텐츠를 저장할 디스크를 설정한다. 하위 ```` 개수제한은 없다. 디스크는 장애가 가장 많이 발생하는 장비이기 때문에 명확한 장애조건을 설정할 것을 권장한다. ``DiskFailSec (기본: 60초)`` 동안 ``DiskFailCount (기본: 10)`` 만큼 디스크 작업이 실패하면 해당 디스크는 자동으로 배제된다. 배제된 디스크 상태는 "Invalid"로 명시된다. 모든 디스크가 배제될 수도 있는데 이 때의 동작방식은 ``OnCrash`` 속성으로 설정한다. - ``hang (기본)`` 복구하지 않는다. 정상동작을 보장할 수 없다. - ``bypass`` 모든 요청을 원본서버로 바이패스 한다. 디스크가 복구되면 즉시 STON이 서비스를 처리한다. - ``selfkill`` STON을 종료시킨다. 각 디스크마다 최대 캐싱용량을 ``Quota (단위: GB)`` 속성으로 설정할 수 있다. .. note:: v2.7.23부터 ``QuotaUnit (기본: size)`` 속성을 이용해 비율로 설정이 가능하다. :: /cache1 위 설정은 전체 디스크 공간 중 90%를 Quota로 설정한다. 유효범위 1~100% 를 넘도록 설정한 경우 Quota는 무시된다. 굳이 설정하지 않더라도 항상 디스크가 꽉 차지 않도록 LRU(Least Recently Used) 알고리즘에 의해 오래된 콘텐츠를 자동으로 삭제한다. 특별히 호환성에 문제가 있는 파일시스템은 없다. 그러므로 관리자가 친숙한 파일 시스템을 사용해도 성능에 큰 영향은 없다. .. note:: v2.5.0부터 디스크 없이 동작하는 :ref:`adv_topics_memory_only` 가 지원된다. .. _env-cache-resource: 메모리 제한 ------------------------------------ 사용할 최대 메모리와 컨텐츠 적재비율을 설정한다. :: # server.xml - 100 50 - `` (기본: 100%)`` 시스템 메모리에서 STON이 사용할 최대 메모리를 비율로 설정한다. 예를 들어 16GB장비에서 이 수치를 50(%)으로 설정하면 시스템 메모리가 8GB인 것처럼 동작한다. 특히 :ref:`filesystem` 등을 통해 다른 프로세스와 연동할 때 유용하다. - `` (기본: 50%)`` STON은 디스크에서 로딩된 Body 데이터를 메모리에 최대한 Caching하여 서비스 품질을 향상시킨다. 서비스 형태에 따라 이 비율을 조절하여 품질을 최적화한다. .. figure:: img/bodyratio1.png :align: center ContentMemoryRatio를 통해 메모리비율을 설정한다. 예를 들어 게임 다운로드처럼 파일 개수는 많지 않지만 Contents크기가 큰 서비스의 경우 File I/O 부하가 부담스럽다. 이런 경우 ```` 를 높여서 보다 많은 Contents데이터가 메모리에 상주할 수 있도록 설정하면 서비스 품질을 높일 수 있다. .. figure:: img/bodyratio2.png :align: center ContentMemoryRatio를 높이면 I/O가 감소한다. .. _env-etc: 기타 Caching 설정 ------------------------------------ 기타 Caching서비스의 기반동작을 설정한다. :: # server.xml - 0 delete 0.0.0.0 30 - ```` 하루에 한 번 시스템 최적화를 수행한다. 최적화의 대부분은 디스크정리 작업으로 I/O 부하가 발생한다. 서비스 품질저하를 방지하기 위해 최적화는 조금씩 점진적으로 수행된다. - ``