JavaScript is required to for searching.
Omitir V�nculos de navegaci�n
Salir de la Vista de impresi�n
Copia y creación de repositorios de paquetes de Oracle Solaris 11     Oracle Solaris 11 Information Library (Español)
search filter icon
search icon

Información del documento

Prefacio

1.  Depósitos de paquetes de Image Packaging System

2.  Copia de depósitos de paquetes de IPS

3.  Cómo proporcionar acceso al depósito

4.  Mantenimiento del depósito de paquetes de IPS local

Actualización del depósito local

Comprobación y definición de las propiedades del depósito

Personalización del depósito local

Cómo servir varios depósitos con instancias de servidor de varios depósitos

Configuración Apache para el servidor de depósitos

Configuración del almacenamiento en antememoria para el servidor de depósitos

Consideraciones de la antememoria para el archivo de atributos del catálogo

Consideraciones de la antememoria para la búsqueda

Ejecución del servidor de depósitos detrás de un proxy web

Valores de configuración Apache genéricos recomendados

Ejemplos de configuración Apache

Configuración de proxy con prefijo simple

Varios depósitos en un mismo dominio

Configuraciones con equilibrio de carga

Ejemplo de equilibrio de carga completo

Configuración Apache para el servidor de depósitos

En esta sección se explica la ejecución del servidor de depósitos detrás de una instancia del servidor web Apache, que ofrece las siguientes ventajas:

Configuración del almacenamiento en antememoria para el servidor de depósitos

Se requiere una mínima configuración para configurar el servidor de depósitos detrás de un proxy de almacenamiento en antememoria. Con la excepción del archivo de los atributos del catálogo y los resultados de búsqueda del depósito, que se analizan más adelante, todos los archivos servidos son únicos, por lo que es seguro almacenarlos en antememoria por tiempo indefinido en caso de necesidad. Asimismo, todas las respuestas contienen los encabezados HTTP adecuados para garantizar que los archivos de la antememoria no caduquen por error.

Consulte Caching Guide (Guía de almacenamiento en antememoria) de Apache para obtener más información sobre la configuración Apache como proxy de almacenamiento en antememoria.

Utilice la directiva CacheRoot para especificar el directorio que va a contener los archivos almacenados en antememoria. Asegúrese de que el directorio especificado se pueda escribir en el proceso de Apache. No se muestra ningún mensaje de error explícito si Apache no puede escribir en este directorio.

CacheRoot /tank/proxycache

Apache permite habilitar el almacenamiento en antememoria para directorios específicos. Quizá desee que su servidor de depósitos almacene en antememoria todo el contenido del servidor, como se muestra en la siguiente directiva.

CacheEnable disk /

Utilice la directiva CacheMaxFileSize para establecer el tamaño máximo de los archivos que se van a almacenar en antememoria. Puede que el valor predeterminado de 1 MB de Apache sea demasiado pequeño para la mayoría de los depósitos. La siguiente directiva establece 1 GB como tamaño máximo para el archivo almacenado en antememoria.

CacheMaxFileSize 1000000000

Ajustar la estructura del directorio de la antememoria en disco para obtener el mejor rendimiento con el sistema de archivos subyacente. En un conjunto de datos ZFS, el rendimiento se ve más afectado si hay varios niveles de directorios que si hay un gran número de archivos en un mismo directorio. Por lo tanto, configure un solo nivel de directorio con un gran número de archivos en cada directorio. Utilice las directivas CacheDirLevels y CacheDirLength para controlar la estructura de directorios. Establezca CacheDirLevels en 1. Establezca CacheDirLength en un valor que proporcione un buen equilibrio entre el número de directorios y el número de archivos por directorio. El valor de 2 establecido a continuación genera 4096 directorios. Consulte la documentación Disk-based Caching (Almacenamiento en antememoria basado en disco) para obtener más información.

CacheDirLevels 1
CacheDirLength 2

Consideraciones de la antememoria para el archivo de atributos del catálogo

En el archivo de atributos del catálogo del depósito (catalog.attrs) contiene el estado actual del catálogo del depósito. Puede que el tamaño de este archivo justifique el almacenamiento en antememoria. Sin embargo, este archivo caduca si el catálogo del depósito en segundo plano ha cambiado. Puede utilizar uno de los dos métodos siguientes para solucionar este problema.

Consideraciones de la antememoria para la búsqueda

La búsqueda de un depósito de paquetes genera respuestas personalizadas que se basan en la solicitud. Por lo tanto, los resultados de la búsqueda no son apropiados para almacenarlos en antememoria. El servidor de depósitos establece los encabezados HTTP apropiados a fin de asegurar que los resultados de búsqueda no caduquen en una antememoria. Sin embargo, el ahorro de ancho de banda derivado del uso del almacenamiento en antememoria es reducido. El siguiente archivo httpd.conf parcial muestra cómo especificar que no se almacenen en antememoria los resultados de búsqueda.

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

Ejecución del servidor de depósitos detrás de un proxy web

El servidor de depósitos pkg(5) permite proporcionar acceso a un depósito en la red local o en Internet con facilidad. Sin embargo, el servidor de depósitos no admite que se sirvan varios depósitos en un solo nombre de dominio o prefijos sofisticados. Para alojar varios depósitos en un solo nombre de dominio, ejecute el servidor de depósitos detrás de un proxy web. La ejecución del servidor de depósitos detrás de un proxy web también puede mejorar el rendimiento del servidor mediante la habilitación del equilibrio de la carga en varios depósitos y del almacenamiento del contenido.

Los ejemplos de esta sección utilizan el servidor web Apache como software de proxy. Sistema operativo Oracle Solaris 11 incluye el servidor web Apache y un archivo httpd.conf básico. Debe poder aplicar los principios que se muestran en estos ejemplos para cualquier software de servidor proxy.

Valores de configuración Apache genéricos recomendados

Los siguientes valores afectan el rendimiento y la seguridad.

Habilitar el filtro DEFLATE de Apache.

Los clientes HTTP pueden indicar al servidor que aceptan datos comprimidos en una solicitud HTTP. La habilitación del filtro DEFLATE de Apache puede reducir drásticamente el tamaño en línea de los metadatos, como catálogos y manifiestos. Los metadatos como catálogos y manifiestos suelen comprimirse un 90%.

AddOutputFilterByType DEFLATE text/html application/javascript text/css text/plain
No decodificar barras diagonales codificadas.

Los paquetes pueden contener barras diagonales codificadas para URL. Para asegurarse de que estas barras diagonales no se interpreten como delimitadores de directorio, establezca que Apache no los decodifique.

AllowEncodedSlashes NoDecode

Nota - Si se omite esta configuración, la funcionalidad de búsqueda se verá considerablemente afectada.


Permitir más solicitudes canalizadas.

Aumente el valor MaxKeepAliveRequests para permitir que los clientes extraigan un mayor número de solicitudes canalizadas sin cerrar la conexión. El valor predeterminado de Apache de 100 es demasiado bajo.

MaxKeepAliveRequests 10000
Establecer el tiempo de espera máximo de respuesta.

El tiempo de espera del proxy determina cuánto tiempo Apache espera la respuesta del depósito en segundo plano. Para la mayoría de las operaciones, 30 segundos es suficiente. Las búsquedas que arrojan una gran cantidad de resultados pueden llevar bastante más tiempo. Quizá desee asignar un valor de tiempo de espera mayor para dichas búsquedas.

ProxyTimeout 30
Deshabilitar el proxy de reenvío.

Asegúrese de que el proxy de reenvío esté deshabilitado.

ProxyRequests Off

Ejemplos de configuración Apache

En esta sección, se ilustran configuraciones con y sin equilibrio de carga de varios depósitos.

Configuración de proxy con prefijo simple

En este ejemplo, se muestra la configuración básica para un servidor de depósitos sin equilibro de carga. En este ejemplo, se conecta http://pkg.example.com/myrepo con internal.example.com:10000.

Consulte Cómo servir varios depósitos con instancias de servidor de varios depósitos para obtener instrucciones sobre la definición de otras propiedades que necesita y que no están descritas en este ejemplo.

Debe configurar el servidor de depósitos con una configuración pkg/proxy_base que mencione la URL en la que se puede acceder al servidor de depósitos. Utilice los comandos siguientes para establecer la configuración 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

El cliente pkg(5) abre 20 conexiones paralelas al servidor de depósitos cuando realiza operaciones de red. Asegúrese de que el número de subprocesos de depósitos coincida con las conexiones esperadas para el servidor en cualquier momento. Utilice los siguientes comandos para definir el número de subprocesos por depósito:

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

Utilice nocanon para suprimir la canonización de direcciones URL. Este valor es importante para que la búsqueda funcione correctamente. Además, limite el número de conexiones en segundo plano al número de subprocesos que el servidor de depósitos proporciona. El siguiente archivo httpd.conf parcial muestra cómo aplicar un proxy en un servidor de depósitos:

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

Varios depósitos en un mismo dominio

La principal razón para ejecutar el servidor de depósitos detrás de un proxy es que permite ejecutar varios depósitos en un mismo nombre de dominio con diferentes prefijos. El ejemplo de Configuración de proxy con prefijo simple puede ampliarse fácilmente para admitir varios depósitos.

En este ejemplo, tres prefijos diferentes de un nombre de dominio están conectados con tres depósitos de paquetes diferentes:

El servidor de depósitos pkg(5) es un servicio que se gestiona mediante SMF. Por lo tanto, para ejecutar varios servidores de depósitos en el mismo host, simplemente cree una nueva instancia de servicio:

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

Como en el ejemplo anterior, cada servidor de depósitos se ejecuta con 200 subprocesos.

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

Configuraciones con equilibrio de carga

Quizá desee ejecutar servidores de depósitos detrás de un equilibrador de carga de Apache. En este ejemplo, se conecta http://pkg.example.com/myrepo con internal1.example.com:10000 y internal2.example.com:10000.

Configure el servidor de depósitos con una configuración de proxy_base adecuada, como se muestra en Configuración de proxy con prefijo simple.

Limite el número de conexiones en segundo plano al número de subprocesos que cada depósito esté ejecutando dividido por el número de depósitos de la configuración del equilibrador de carga. De lo contrario, Apache abre más conexiones con un depósito que las que están disponibles, y las conexiones se detienen, lo cual puede reducir el rendimiento. Especifique el número máximo de conexiones paralelas a cada depósito con el parámetro max=. El siguiente ejemplo muestra dos depósitos que ejecutan 200 subprocesos cada uno. Consulte Configuración de proxy con prefijo simple para ver un ejemplo de cómo definir el número de subprocesos de los depósitos.

<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

Ejemplo de equilibrio de carga completo

En el siguiente ejemplo, se incluyen todas las directivas que debe agregar al archivo httpd.conf para un servidor de repositorio que aloja una configuración de servidor de depósito con carga equilibrada y con carga no equilibrada.

En este ejemplo, dos prefijos diferentes de un mismo nombre de dominio están conectados a tres depósitos de paquetes diferentes:

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