JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Copie et création de référentiels de packages Oracle Solaris 11.1     Oracle Solaris 11.1 Information Library (Français)
search filter icon
search icon

Informations document

Préface

1.  Référentiels de packages Image Packaging System

2.  Copie de référentiels de packages IPS

3.  Fourniture d'un accès au référentiel

4.  Mise à jour du référentiel de packages IPS local

Mise à jour du référentiel local

Vérification et définition des propriétés du référentiel

Personnalisation du référentiel local

Traitement de plusieurs référentiels à l'aide de plusieurs instances de serveur de dépôt

Configuration Apache du serveur de dépôt

Configuration de la mise en cache pour le serveur de dépôt

Considérations relatives au cache pour le fichier d'attributs de catalogue

Considérations relatives au cache pour la recherche

Exécution du serveur de dépôt derrière un proxy Web

Paramètres de configuration Apache générique recommandés

Exemples de configuration Apache

Configuration de proxy à préfixe simple

Plusieurs référentiels sous un nom de domaine

Configurations à charge équilibrée

Fin de l'exemple à charge équilibrée

Configuration Apache du serveur de dépôt

Cette section décrit l'exécution du serveur de dépôt derrière une instance du serveur Web Apache afin de bénéficier des avantages suivants :

Configuration de la mise en cache pour le serveur de dépôt

Une configuration minimale est nécessaire pour définir le serveur de dépôt derrière un proxy de mise en cache. A l'exception du fichier des attributs de catalogue et des résultats de recherche du référentiel, qui sont décrits ci-dessous, tous les fichiers servis sont uniques et peuvent donc être mis en cache indéfiniment si nécessaire. En outre, toutes les réponses de dépôt contiennent les en-têtes HTTP appropriés pour s'assurer que les fichiers dans le cache ne deviennent pas obsolètes par inadvertance.

Reportez-vous au Caching Guide (Guide de mise en cache) Apache pour plus d'informations sur la configuration d'Apache en tant que proxy de mise en cache.

Utilisez la directive CacheRoot pour spécifier le répertoire qui contiendra les fichiers mis en cache. Assurez-vous que le répertoire spécifié est accessible en écriture par le processus Apache. Aucun message d'erreur explicite n'est sorti si Apache ne peut pas écrire dans ce répertoire.

CacheRoot /tank/proxycache

Apache vous permet d'activer la mise en cache pour des répertoires donnés. Vous souhaiterez peut-être que votre serveur de référentiel mette en cache tout le contenu sur le serveur, comme indiqué dans la directive suivante.

CacheEnable disk /

Utilisez la directive CacheMaxFileSize pour définir la taille maximale des fichiers à mettre en cache. La valeur par défaut de 1 Mo d'Apache risque d'être trop faible pour la plupart des référentiels. La directive suivante définit la taille maximale de fichiers mis en cache à 1 Go.

CacheMaxFileSize 1000000000

Ajustez la structure de répertoires de la mise en cache sur disque pour des performances optimales avec le système de fichiers sous-jacent. Dans un jeu de données ZFS, la présence de plusieurs niveaux de répertoires affecte davantage les performances que le nombre de fichiers dans un répertoire. Configurez donc un niveau de répertoire avec un grand nombre de fichiers dans chaque répertoire. Utilisez les directives CacheDirLevels et CacheDirLength pour contrôler la structure de répertoires. Définissez CacheDirLevels sur 1. Définissez CacheDirLength sur une valeur permettant d'obtenir un bon équilibre entre le nombre de répertoires et le nombre de fichiers par répertoire. La valeur 2 définie ci-dessous générera 4 096 répertoires. Reportez-vous à la documentation Disk-based Caching (Mise en cache sur disque) Apache pour plus d'informations.

CacheDirLevels 1
CacheDirLength 2

Considérations relatives au cache pour le fichier d'attributs de catalogue

Le fichier d'attributs de catalogue du référentiel (catalogue.attrs) contient l'état actuel du catalogue du référentiel. Ce fichier peut être assez important pour garantir la mise en cache. Toutefois, ce fichier devient obsolète si le catalogue du référentiel d'arrière-plan a changé. Vous pouvez utiliser l'une des deux méthodes suivantes pour résoudre ce problème.

Considérations relatives au cache pour la recherche

La recherche d'un référentiel de packages génère des réponses personnalisées en fonction de la demande. Par conséquent, les résultats de recherche ne sont pas bien adaptés à la mise en cache. Le serveur de dépôt définit les en-têtes HTTP appropriés pour s'assurer que les résultats de recherche ne deviennent pas obsolètes dans un cache. Cependant, les économies de bande passante attendues de la mise en cache sont faibles. Le fichier httpd.conf partiel suivant montre comment spécifier de ne pas mettre en cache les résultats de recherche.

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

Exécution du serveur de dépôt derrière un proxy Web

Le serveur de dépôt pkg(5) vous permet de facilement fournir l'accès à un référentiel dans le réseau local ou sur Internet. Cependant, le serveur de dépôt ne prend pas en charge l'utilisation de plusieurs référentiels sous un nom de domaine ou des préfixes sophistiqués. Pour héberger plusieurs référentiels sous un seul nom de domaine, exécutez le serveur de dépôt derrière un proxy Web. L'exécution du serveur de dépôt derrière un proxy Web permet également d'améliorer les performances du serveur en activant l'équilibrage de charge sur plusieurs dépôts et en permettant la mise en cache du contenu.

Les exemples de cette section utilisent le serveur Web Apache en tant que logiciel proxy. Le système d'exploitation Oracle Solaris 11.1 inclut le serveur Web Apache dans le package web/server/apache-22 et un fichier de base httpd.conf dans /etc/apache2/2.2. Pour activer le serveur Web Apache, activé le service service svc:/network/http:service apache22. Consultez la page Apache HTTP Server Version 2.2 Documentation pour plus d'informations.

Vous devriez pouvoir appliquer les principes présentés dans ces exemples à n'importe quel logiciel de serveur proxy.

Paramètres de configuration Apache générique recommandés

Les paramètres suivants ont une incidence sur les performances et la sécurité.

Activez le filtre Apache DEFLATE.

Les clients HTTP peuvent indiquer au serveur qu'ils acceptent les données compressées dans une demande HTTP. L'activation du filtre Apache DEFLATE peut considérablement réduire la taille sur le réseau de métadonnées telles que les catalogues et manifestes. Les métadonnées telles que les catalogues et manifestes sont souvent compressés à 90 %.

AddOutputFilterByType DEFLATE text/html application/javascript text/css text/plain
Ne décodez pas les barres obliques codées.

Les packages peuvent contenir des barres obliques codées par URL. Pour s'assurer que ces barres obliques ne sont pas interprétées comme des séparateurs de répertoire, demandez à Apache de ne pas les décoder.

AllowEncodedSlashes NoDecode

Remarque - L'omission de ce paramètre a un effet très négatif sur la fonctionnalité de recherche.


Autorisez davantage de demandes en attente.

Augmentez la valeur MaxKeepAliveRequests pour permettre aux clients d'effectuer un plus grand nombre de demandes en attente sans fermer la connexion. La valeur Apache par défaut de 100 est trop faible.

MaxKeepAliveRequests 10000
Définissez le temps d'attente maximal pour la réponse.

Le délai d'attente du proxy définit la durée pendant laquelle Apache attend la réponse du dépôt d'arrière-plan. Pour la plupart des opérations, une durée de 30 secondes est satisfaisante. Les recherches livrant un très grand nombre de résultats peuvent être bien plus longues. Vous pouvez souhaiter définir une valeur de délai d'attente plus longue afin de vous adapter à de telles recherches.

ProxyTimeout 30
Désactivez la création de proxy de transfert.

Vérifiez que la création de proxy de transfert est désactivée.

ProxyRequests Off

Exemples de configuration Apache

Cette section illustre plusieurs configurations de référentiel, à charge équilibrée ou non équilibrée.

Configuration de proxy à préfixe simple

Cet exemple montre la configuration de base pour un serveur de dépôt à charge non équilibrée. Cet exemple connecte http://pkg.example.com/myrepo à internal.example.com:10000.

Reportez-vous à la section Traitement de plusieurs référentiels à l'aide de plusieurs instances de serveur de dépôt pour obtenir des instructions sur la définition d'autres propriétés dont vous avez besoin et qui ne sont pas abordées dans cet exemple.

Vous devez configurer le serveur de dépôt avec un paramètre pkg/proxy_base qui nomme l'URL à laquelle le serveur de dépôt est accessible. Utilisez les commandes suivantes pour définir pkg/proxy_base :

$ svccfg -s pkg/server add repo
$ 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

Le client pkg(5) ouvre 20 connexions simultanées vers le serveur de dépôt lorsque qu'il effectue des opérations de réseau. Assurez-vous que le nombre de threads de dépôt correspond à tout moment aux connexions au serveur attendues. Utilisez les commandes suivantes pour définir le nombre de threads par dépôt :

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

Utilisez le paramètre nocanon pour supprimer la canonisation d'URL. Ce paramètre est important pour que la recherche fonctionne correctement. En outre, limitez le nombre de connexions d'arrière-plan au nombre de threads fournis par serveur de dépôt. Le fichier httpd.conf partiel suivant montre comment mandater un serveur de dépôt :

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

Plusieurs référentiels sous un nom de domaine

La principale raison d'exécuter le serveur de dépôt derrière un proxy est que cela permet d'exécuter facilement plusieurs référentiels sous un seul nom de domaine avec des préfixes différents. L'exemple de la section Configuration de proxy à préfixe simple peut facilement être étendu pour prendre en charge plusieurs référentiels.

Dans cet exemple, trois préfixes différents d'un nom de domaine sont connectés à trois référentiels de packages différents :

Le serveur de dépôt pkg(5) est un service géré par SMF. Par conséquent, pour exécuter plusieurs serveurs de dépôt sur le même hôte, il vous suffit de créer une nouvelle instance de service :

$ svccfg -s pkg/server add repo1
$ svccfg -s pkg/server:repo1 setprop pkg/property=value
$ ...

Comme dans l'exemple précédent, chaque serveur de dépôt s'exécute avec 200 threads.

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

Configurations à charge équilibrée

Vous pouvez souhaiter exécuter des serveurs de dépôt derrière un équilibreur de charge Apache. Cet exemple connecte http://pkg.example.com/myrepo à internal1.example.com:10000 et internal2.example.com:10000.

Configurez le serveur de dépôt avec un paramètre proxy_base approprié comme illustré dans la section Configuration de proxy à préfixe simple.

Limitez le nombre de connexions d'arrière-plan au nombre de threads exécutés par chaque dépôt divisé par le nombre de dépôts dans la configuration de l'équilibreur de charge. Dans le cas contraire, Apache ouvre plus de connexions vers un dépôt qu'il n'y en a de disponibles et elles se bloquent, ce qui peut nuire aux performances. Spécifiez le nombre maximal de connexions simultanées vers chaque dépôt par le biais du paramètre max=. L'exemple ci-dessous montre deux dépôts, chacun exécutant 200 threads. Reportez-vous à la section Configuration de proxy à préfixe simple pour un exemple de la procédure de définition du nombre de threads de dépôt.

<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

Fin de l'exemple à charge équilibrée

L'exemple suivant inclut toutes les directives que vous devez ajouter au fichier httpd.conf pour un serveur de référentiel hébergeant une configuration de serveur de dépôt à charge équilibrée et non équilibrée.

Dans cet exemple, deux préfixes différents d'un nom de domaine sont connectés à trois référentiels de packages différents :

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