JavaScript is required to for searching.
탐색 링크 건너뛰기
인쇄 보기 종료
Oracle Solaris 11 패키지 저장소 복사 및 만들기     Oracle Solaris 11 Information Library (한국어)
search filter icon
search icon

문서 정보

머리말

1.  이미지 패키징 시스템 패키지 저장소

2.  IPS 패키지 저장소 복사

3.  저장소에 대한 액세스 제공

4.  로컬 IPS 패키지 저장소 유지 관리

로컬 저장소 업데이트

저장소 등록 정보 확인 및 설정

로컬 저장소 사용자 정의

여러 저장소 서버 인스턴스를 사용하여 여러 저장소 제공

저장소 서버 Apache 구성

저장소 서버에 대한 캐싱 구성

카탈로그 속성 파일에 대한 캐시 고려 사항

검색을 위한 캐시 고려 사항

웹 프록시 뒤에서 저장소 서버 실행

권장되는 일반 Apache 구성 설정

Apache 구성 예

단순 접두어가 지정된 프록시 구성

하나의 도메인 아래의 다중 저장소

로드 밸런싱된 구성

완전한 로드 밸런싱 예

저장소 서버 Apache 구성

이 절에서는 Apache 웹 서버 인스턴스 뒤에서 저장소 서버를 실행하여 얻을 수 있는 다음과 같은 이점에 대해 설명합니다.

저장소 서버에 대한 캐싱 구성

캐싱 프록시 뒤에서 저장소 서버를 설정하는 최소 구성이 필요합니다. 카탈로그 속성 파일 및 저장소 검색 결과(아래 설명 참조)를 제외하고는 제공된 모든 파일이 고유하고, 따라서 필요한 경우 무제한으로 안전하게 캐시할 수 있습니다. 또한 모든 저장소 응답에는 캐시 파일이 실수로 사용되지 않는 것을 방지하기 위해 적합한 HTTP 헤더를 포함합니다.

Apache를 캐싱 프록시로 구성하는 방법에 대한 자세한 내용은 Caching Guide를 참조하십시오.

CacheRoot 지시어를 사용하여 디렉토리가 캐시된 파일을 포함하도록 지정합니다. 지정된 디렉토리를 Apache 프로세스가 쓸 수 있는지 확인합니다. Apache가 이 디렉토리에 쓸 수 없는 경우 명시적인 오류 메시지가 출력되지 않습니다.

CacheRoot /tank/proxycache

Apache는 특정 디렉토리에 대해 캐싱을 사용으로 설정합니다. 다음 지시어에 표시된 것처럼 저장소 서버가 서버에서 모든 컨텐츠를 캐시하도록 해야 할 수 있습니다.

CacheEnable disk /

CacheMaxFileSize 지시어를 사용하여 캐시할 최대 파일 크기를 설정합니다. 1MB의 Apache 기본값은 대부분의 저장소에서 너무 작을 수 있습니다. 다음 지시어는 캐시되는 파일의 최대 크기를 1GB로 설정합니다.

CacheMaxFileSize 1000000000

기본 파일 시스템에서 성능을 최적화하기 위해 디스크 내장 캐시의 디렉토리 구조를 조정합니다. ZFS 데이터 집합에서 다중 디렉토리 레벨은 하나의 디렉토리에 있는 파일 수보다 성능에 더 많은 영향을 줍니다. 따라서 각 디렉토리에 파일 수가 많은 하나의 디렉토리 레벨을 구성하십시오. CacheDirLevelsCacheDirLength 지시어를 사용하여 디렉토리 구조를 제어합니다. CacheDirLevels를 1로 설정합니다. CacheDirLength를 디렉토리 수와 디렉토리당 파일 수 간에 적절한 균형을 이룰 수 있는 값으로 설정합니다. 아래에 설정된 값 2는 4096개의 디렉토리를 생성합니다. 자세한 내용은 Disk-based Caching 설명서를 참조하십시오.

CacheDirLevels 1
CacheDirLength 2

카탈로그 속성 파일에 대한 캐시 고려 사항

저장소 카탈로그 속성 파일(catalog.attrs)에는 저장소 카탈로그의 현재 상태가 포함됩니다. 이 파일은 캐싱을 보장하도록 충분히 클 수 있습니다. 하지만 백엔드 저장소의 카탈로그가 변경된 경우 이 파일이 사용되지 않을 수 있습니다. 다음 두 가지 방법 중 하나를 사용하여 이 문제를 해결할 수 있습니다.

검색을 위한 캐시 고려 사항

패키지 저장소를 검색하면 요청에 따라 사용자 정의 응답이 생성됩니다. 따라서 검색 결과는 캐시하는 데 적합하지 않습니다. 저장소 서버는 검색 결과가 캐시에서 사용되지 않는 것을 방지하기 위해 적합한 HTTP 헤더를 설정합니다. 하지만 캐싱으로 얻을 수 있는 예상되는 대역폭 절감 효과는 크지 않습니다. 다음 httpd.conf 파일 부분은 검색 결과를 캐시하지 않도록 지정하는 방법을 보여 줍니다.

<LocationMatch ".*/search/\d/.*">
        Header set Cache-Control no-cache
</LocationMatch>

웹 프록시 뒤에서 저장소 서버 실행

pkg(5) 저장소 서버는 로컬 네트워크 또는 인터넷에서 저장소에 대한 액세스를 쉽게 제공할 수 있게 해줍니다. 하지만 저장소 서버는 하나의 도메인 이름 또는 정교한 접두어 아래에서 여러 저장소를 제공하도록 지원하지 않습니다. 하나의 도메인 이름 아래에서 여러 저장소를 호스트하려면 웹 프록시 뒤에서 저장소 서버를 실행하십시오. 웹 프록시 뒤에서 저장소 서버를 실행하면 여러 저장소 간에 로드 밸런싱을 사용으로 설정하고 컨텐츠 캐싱을 사용으로 설정하여 서버의 성능을 향상시킬 수도 있습니다.

이 절의 예에서는 Apache 웹 서버를 프록시 소프트웨어로 사용합니다. Oracle Solaris 11 OS에는 Apache 웹 서버 및 기본 httpd.conf 파일이 포함됩니다. 이 예에 표시된 원칙을 모든 프록시 서버 소프트웨어에 적용할 수 있어야 합니다.

권장되는 일반 Apache 구성 설정

다음 설정은 성능과 보안에 영향을 줍니다.

Apache DEFLATE 필터를 사용으로 설정합니다.

HTTP 클라이언트는 HTTP 요청에서 압축된 데이터를 수신할 수 있음을 서버에 알릴 수 있습니다. Apache DEFLATE 필터를 사용으로 설정하면 카탈로그 및 매니페스트와 같은 메타 데이터의 전송 크기를 크게 줄일 수 있습니다. 카탈로그 및 매니페스트와 같은 메타 데이터는 종종 90%까지 압축됩니다.

AddOutputFilterByType DEFLATE text/html application/javascript text/css text/plain
인코딩된 슬래시를 디코딩하지 않습니다.

패키지는 URL 인코딩된 슬래시를 포함할 수 있습니다. 이러한 슬래시가 디렉토리 구분 기호로 해석되지 않도록 하려면 Apache에 이를 디코딩하지 않도록 지시합니다.

AllowEncodedSlashes NoDecode

주 - 이 설정을 생략하면 검색 기능에 부정적인 영향을 줄 수 있습니다.


더 많은 파이프라인된 요청을 허용합니다.

클라이언트가 연결을 닫지 않고도 더 많은 수의 파이프라인된 요청을 수행하도록 허용하려면 MaxKeepAliveRequests 값을 늘립니다. Apache의 기본값인 100은 너무 낮은 값입니다.

MaxKeepAliveRequests 10000
응답의 최대 대기 시간을 설정합니다.

프록시 시간 초과는 백엔드 저장소가 응답할 때까지 Apache가 기다리는 시간을 설정합니다. 대부분의 작업에서는 30초 정도가 적합합니다. 검색할 때 결과 수가 너무 많으면 시간이 상당히 오래 걸릴 수 있습니다. 이러한 검색을 수용하기 위해서는 시간 초과 값을 더 높게 설정해야 할 수 있습니다.

ProxyTimeout 30
전달 프록싱을 사용 안함으로 설정합니다.

전달 프록싱이 사용 안함으로 설정되었는지 확인합니다.

ProxyRequests Off

Apache 구성 예

이 절에서는 다중 저장소, 로드 밸런싱되지 않은 설정 및 로드 밸런싱된 설정을 보여 줍니다.

단순 접두어가 지정된 프록시 구성

이 예에서는 로드 밸런싱되지 않은 저장소 서버에 대한 기본 구성을 보여 줍니다. 이 예에서는 http://pkg.example.com/myrepointernal.example.com:10000에 연결합니다.

이 예제에 설명되지 않은 다른 등록 정보 설정에 대한 지침은 여러 저장소 서버 인스턴스를 사용하여 여러 저장소 제공을 참조하십시오.

저장소 서버를 액세스할 수 있는 URL의 이름을 지정하는 pkg/proxy_base 설정을 사용하여 저장소 서버를 구성해야 합니다. 다음 명령을 사용하여 pkg/proxy_base를 설정합니다.

# svccfg -s pkg/server add repo
# svccfg -s pkg/server:repo addpg pkg application
# svccfg -s pkg/server:repo "setprop pkg/proxy_base = astring: http://pkg.example.com/myrepo"
# svcadm refresh pkg/server:repo
# svcadm enable pkg/server:repo

pkg(5) 클라이언트는 네트워크 작업을 수행할 때 저장소 서버에 대해 20개의 병렬 연결을 엽니다. 저장소 스레드 수가 특정 시점에 서버에 대한 예상 연결 수와 일치하는지 확인합니다. 다음 명령을 사용하여 저장소당 스레드 수를 설정합니다.

# svccfg -s pkg/server:repo "setprop pkg/threads = 200"
# svcadm refresh pkg/server:repo
# svcadm restart pkg/server:repo

nocanon을 사용하여 URL의 정규화를 억제합니다. 이 설정은 검색이 올바르게 작동하게 하는 데 중요합니다. 또한 백엔드 연결 수를 저장소 서버가 제공하는 스레드 수로 제한합니다. 다음 httpd.conf 파일 부분은 하나의 저장소 서버를 프록시하는 방법을 보여 줍니다.

Redirect /myrepo http://pkg.example.com/myrepo/
ProxyPass /myrepo/ http://internal.example.com:10000 nocanon max=200

하나의 도메인 아래의 다중 저장소

프록시 뒤에서 저장소 서버를 실행하는 가장 중요한 이유는 하나의 도메인 이름에서 서로 다른 접두어로 여러 저장소를 쉽게 실행하기 위해서입니다. 단순 접두어가 지정된 프록시 구성의 예는 다중 저장소를 지원하도록 쉽게 확장해서 사용할 수 있습니다.

이 예에서는 하나의 도메인 이름에서 세 개의 서로 다른 접두어가 세 개의 서로 다른 패키지 저장소에 연결되어 있습니다.

pkg(5) 저장소 서버는 SMF 관리 서비스입니다. 따라서 동일한 호스트에서 여러 저장소 서버를 실행하려면 단순히 새로운 서비스 인스턴스를 만들기만 하면 됩니다.

# svccfg -s pkg/server add repo1
# svccfg -s pkg/server:repo1 addpg pkg application
# svccfg -s pkg/server:repo1 setprop pkg/property=value
# ...

이전 예와 같이 각 저장소 서버는 200개의 스레드로 실행됩니다.

Redirect /repo_one http://pkg.example.com/repo_one/
ProxyPass /repo_one/ http://internal.example.com:10000 nocanon max=200

Redirect /repo_two http://pkg.example.com/repo_two/
ProxyPass /repo_two/ http://internal.example.com:20000 nocanon max=200

Redirect /xyz/repo_three http://pkg.example.com/xyz/repo_three/
ProxyPass /xyz/repo_three/ http://internal.example.com:30000 nocanon max=200

로드 밸런싱된 구성

Apache 로드 밸런서 뒤에서 저장소 서버를 실행해야 할 수 있습니다. 이 예에서는 http://pkg.example.com/myrepointernal1.example.com:10000internal2.example.com:10000에 연결합니다.

단순 접두어가 지정된 프록시 구성에 표시된 것과 같이 적합한 proxy_base 설정을 사용하여 저장소 서버를 구성합니다.

각 저장소가 실행 중인 스레드 수를 로드 밸런서 설정에 있는 저장소 수로 나눈 값으로 백엔드 연결 수를 제한합니다. 그렇지 않으면 Apache가 저장소에 대해 사용 가능한 것보다 많은 수의 연결을 열고 작동이 정지되어 성능이 저하될 수 있습니다. max= 매개변수를 사용하여 각 저장소에 대한 최대 병렬 연결 수를 지정합니다. 아래의 예에서는 각각 200개의 스레드를 실행하는 두 개의 저장소를 보여 줍니다. 저장소 스레드 수를 설정하는 방법에 대한 예는 단순 접두어가 지정된 프록시 구성을 참조하십시오.

<Proxy balancer://pkg-example-com-myrepo>
        # depot on internal1
        BalancerMember http://internal1.example.com:10000 retry=5 max=100

        # depot on internal2
        BalancerMember http://internal2.example.com:10000 retry=5 max=100
</Proxy>

Redirect /myrepo http://pkg.example.com/myrepo/
ProxyPass /myrepo/ balancer://pkg-example-com-myrepo nocanon

완전한 로드 밸런싱 예

다음 예에서는 로드 밸런싱된 저장소 서버 설정 및 로드 밸런싱되지 않은 저장소 서버 설정을 호스트하는 저장소 서버에 대해 httpd.conf 파일에 추가하기 위해 필요한 모든 지시어가 포함되어 있습니다.

이 예에서는 하나의 도메인 이름에서 두 개의 서로 다른 접두어가 세 개의 서로 다른 패키지 저장소에 연결되어 있습니다.

AddOutputFilterByType DEFLATE text/html application/javascript text/css text/plain

AllowEncodedSlashes NoDecode

MaxKeepAliveRequests 10000

ProxyTimeout 30

ProxyRequests Off

<Proxy balancer://pkg-example-com-repo_one>
        # depot on internal1
        BalancerMember http://internal1.example.com:10000 retry=5 max=100

        # depot on internal2
        BalancerMember http://internal2.example.com:10000 retry=5 max=100
</Proxy>

Redirect /repo_one http://pkg.example.com/repo_one/
ProxyPass /repo_one/ balancer://pkg-example-com-repo_one nocanon
Redirect /repo_two http://pkg.example.com/repo_two/
ProxyPass /repo_two/ http://internal.example.com:20000 nocanon max=200