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) |
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
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:
Mejora el rendimiento mediante el almacenamiento en antememoria del contenido y el equilibrio de la carga.
Permite alojar varios depósitos con un mismo nombre de dominio.
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
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.
No almacene este archivo en antememoria. Esta solución también funciona mejor si el servidor de depósitos se ejecuta en un entorno de alto ancho de banda en el que el tráfico adicional no es una consideración importante. El siguiente archivo httpd.conf parcial muestra cómo especificar que no se almacene en antememoria el archivo catalog.attrs:
<LocationMatch ".*/catalog.attrs"> Header set Cache-Control no-cache </LocationMatch>
Quite este archivo de la antememoria cuando se actualiza el catálogo del depósito en segundo plano.
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>
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.
Los siguientes valores afectan el rendimiento y la seguridad.
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
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.
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
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
Asegúrese de que el proxy de reenvío esté deshabilitado.
ProxyRequests Off
En esta sección, se ilustran configuraciones con y sin equilibrio de carga de varios depósitos.
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
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:
http://pkg.example.com/repo_one está conectado con internal.example.com:10000
http://pkg.example.com/repo_two está conectado con internal.example.com:20000
http://pkg.example.com/xyz/repo_three está conectado con internal.example.com:30000
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
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
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:
http://pkg.example.com/repo_one está conectado con internal1.example.com:10000 y internal2.example.com:10000
http://pkg.example.com/repo_two está conectado con internal1.example.com:20000
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