Citrix ADC

Cas d’utilisation 7 : Configurer l’équilibrage de charge en mode DSR à l’aide d’IP sur IP

Vous pouvez configurer une appliance Citrix ADC pour qu’elle utilise le mode DSR (Direct Server Return) sur les réseaux de couche 3 à l’aide d’un tunnel IP, également appelé configuration IP sur IP . Comme pour les configurations standard d’équilibrage de charge pour le mode DSR, cela permet aux serveurs de répondre directement aux clients au lieu d’utiliser un chemin de retour via l’appliance Citrix ADC. Cela améliore le temps de réponse et le débit. Comme pour le mode DSR standard, l’appliance Citrix ADC surveille les serveurs et effectue des vérifications de l’état des ports de l’application.

Avec la configuration IP sur IP, l’appliance Citrix ADC et les serveurs n’ont pas besoin d’être sur le même sous-réseau de couche 2. Au lieu de cela, l’appliance Citrix ADC encapsule les paquets avant de les envoyer au serveur de destination. Une fois que le serveur de destination reçoit les paquets, il les décapsule, puis envoie ses réponses directement au client. C’est souvent ce que l’on appelle L3DSR.

Pour configurer le mode L3-DSR sur votre appliance Citrix ADC :

  • Créez un serveur virtuel d’équilibrage de charge. Définissez le mode sur IPTUNNEL et activez le suivi sans session.
  • Créez des services. Créez un service pour chaque application principale et liez les services au serveur virtuel.
  • Configurez pour la décapsulation. Configurez une appliance Citrix ADC ou un serveur principal pour.

    Remarque :

    Lorsque vous utilisez une appliance Citrix ADC, la configuration de la décapsulation est un tunnel IP entre les appliances ADC, le backend exécutant L2DSR vers les vrais serveurs.

Configurer un serveur virtuel d’équilibrage de charge

Configurez un serveur virtuel pour traiter les demandes adressées à vos applications. Attribuez le type de service correspondant au service ou utilisez un type de ANY pour plusieurs services. Définissez la méthode de transfert sur IPTUNNEL et permettez au serveur virtuel de fonctionner en mode sans session. Configurez n’importe quelle méthode d’équilibrage de charge que vous souhaitez utiliser.

Pour créer et configurer un serveur virtuel d’équilibrage de charge pour DSR IP sur IP à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante pour configurer un serveur virtuel d’équilibrage de charge pour IP sur IP DSR et vérifier la configuration :

add lb vserver <name> serviceType <serviceType> IPAddress <ip> Port <port> -lbMethod <method> -m <ipTunnelTag> -sessionless [ENABLED | DISABLED]

show lb vserver <name>
<!--NeedCopy-->

Exemple :

Dans l’exemple suivant, nous avons sélectionné la méthode d’équilibrage de charge comme SourceIphash et configuré l’équilibrage de charge sans session.

add lb vserver Vserver-LB-1 ANY 1.1.1.80 * -lbMethod SourceIPHash -m IPTUNNEL -sessionless ENABLED
<!--NeedCopy-->

Pour créer et configurer un serveur virtuel d’équilibrage de charge pour IP sur IP DSR à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Créez un serveur virtuel et spécifiez le mode de redirection comme base de tunnel IP.

Configurer les services pour le DSR IP sur IP

Après avoir créé votre serveur à charge équilibrée, configurez un service pour chacune de vos applications. Le service gère le trafic entre l’appliance Citrix ADC et ces applications et permet à l’appliance Citrix ADC de surveiller l’intégrité de chaque application.

Affectez les services à utiliser le mode USIP et liez un moniteur de type IPTUNNEL au service pour une surveillance basée sur un tunnel.

Pour créer et configurer un service pour DSR IP sur IP à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour créer un service et éventuellement créer un moniteur et le lier au service :

add service <serviceName> <serverName> <serviceType> <port> -usip <usip>

add monitor <monitorName> <monitorType> -destip <ip> -iptunnel <iptunnel>

bind service <serviceName> -monitorName <monitorName>
<!--NeedCopy-->

Exemple :

Dans l’exemple suivant, un moniteur de type IPTUNNEL est créé.

add monitor mon_DSR PING -destip 1.1.1.80 -iptunnel yes
add service svc_DSR01 2.2.2.100 ANY * -usip yes
bind service svc_DSR01 -monitorName mon_DSR
<!--NeedCopy-->

Une autre approche pour simplifier le routage au niveau du serveur et de l’appliance ADC consiste à configurer l’ADC et le serveur pour qu’ils utilisent une adresse IP provenant du même sous-réseau. Cela garantit que tout trafic ayant une destination d’un point de terminaison de tunnel est envoyé au-dessus du tunnel. Dans cet exemple, 10.0.1.0/30 est utilisé.

Remarque :

Le but du moniteur est de s’assurer que le tunnel est actif en atteignant le bouclage de chaque serveur via le tunnel IP. Si le service n’est pas en service, vérifiez si le routage IP externe entre ADC et le serveur est bon. Vérifiez également si les adresses IP internes sont accessibles via le tunnel IP. Des routes peuvent être requises sur le serveur, ou PBR est ajouté à ADC en fonction de l’implémentation choisie.

Exemple :

add ns ip 10.0.1.2 255.255.255.252 -vServer DISABLED
add netProfile netProfile_DSR -srcIP 10.0.1.2
add lb monitor mon_DSR PING -LRTM DISABLED -destIP 1.1.1.80 -ipTunnel YES -netProfile netProfile_DSR
<!--NeedCopy-->

Pour configurer un moniteur à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > Équilibrage de charge > Moniteurs.
  2. Créez un moniteur et sélectionnez Tunnel IP.

Pour créer et configurer un service pour IP sur IP DSR à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > Équilibrage de charge > Services.
  2. Créez un service et, dans l’onglet Paramètres, sélectionnez Utiliser l’adresse IP source.

Pour lier un service à un serveur virtuel d’équilibrage de charge à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante :

bind lb vserver <name> <serviceName>
<!--NeedCopy-->

Exemple :

bind lb vserver Vserver-LB-1 Service-DSR-1
<!--NeedCopy-->

Pour lier un service à un serveur virtuel d’équilibrage de charge à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Ouvrez un serveur virtuel et cliquez dans la section Services pour lier un service au serveur virtuel.

Utilisation de l’adresse IP du client dans l’en-tête externe des paquets de tunnel

Citrix ADC prend en charge l’utilisation de l’adresse IP source client-source comme adresse IP source dans l’en-tête externe des paquets de tunnel liés au mode de retour direct du serveur à l’aide du tunnel IP. Cette fonctionnalité est prise en charge pour le DSR avec IPv4 et le DSR avec les modes de tunneling IPv6. Pour activer cette fonctionnalité, activez le paramètre d’adresse IP source du client pour IPv4 ou IPv6. Ce paramètre est appliqué globalement à toutes les configurations DSR qui utilisent le tunneling IP.

Pour utiliser une adresse IP source client-source comme adresse IP source à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

  • set iptunnelparam -useclientsourceip [YES | NO]
  • show iptunnelparam

Pour utiliser l’adresse IP source du client comme adresse IP source à l’aide de l’interface graphique

  1. Accédez à Système > Réseau.
  2. Dans l’onglet Paramètres, cliquez sur Paramètres globaux du tunnel IPv4.
  3. Dans la page Configurer les paramètres globaux du tunnel IPv4, activez la case à cocher Utiliser l’adresse IP source client.
  4. Cliquez sur OK.

Pour utiliser l’adresse IP source du client comme adresse IP source à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

  • set ip6tunnelparam -useclientsourceip [YES | NO]
  • show ip6tunnelparam

Pour utiliser l’adresse IP source du client comme adresse IP source à l’aide de l’interface graphique

  1. Accédez à Système > Réseau.
  2. Dans l’onglet Paramètres, cliquez sur Paramètres globaux du tunnel IPv6.
  3. Dans la page Configurer les paramètres globaux du tunnel IPv6, activez la case à cocher Utiliser l’adresse IP source du client.
  4. Cliquez sur OK.

Configuration de décapsulation

Vous pouvez configurer une appliance Citrix ADC ou un serveur principal en tant que décapsulation.

Décapsulation Citrix ADC

Lorsqu’une appliance Citrix ADC est utilisée comme décapsulation, un tunnel IP doit être créé dans l’appliance Citrix ADC. Pour plus de détails, voir Configuration des tunnels IP.

La configuration de la décapsulation Citrix ADC comprend les deux serveurs virtuels suivants :

  • Le premier serveur virtuel reçoit le paquet encapsulé et supprime l’encapsulation IP externe.
  • Le deuxième serveur virtuel dispose de l’adresse IP du service d’origine sur l’ADC frontal et utilise la traduction MAC pour transférer le paquet vers le serveur principal en utilisant l’adresse MAC des services liés. Cette configuration est généralement appelée L2DSR. Assurez-vous de désactiver ARP sur ce serveur virtuel.

Exemple de configuration :

L’illustration suivante montre une configuration de décapsulation à l’aide des appliances ADC.

Configuration de la décapsulation ADC

La configuration complète requise pour la configuration est la suivante.

Configuration ADC frontale :

add service svc_DSR01 2.2.2.80 ANY * -usip YES -useproxyport NO
add lb vserver vip_DSR_ENCAP ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED
bind lb vserver vip_DSR_ENCAP svc_DSR01
<!--NeedCopy-->

Configuration ADC back-end :

add ipTunnel DSR-IPIP 1.1.1.100 255.255.255.255 *

add service svc_DSR01_01 2.2.2.101 ANY * -usip YES -useproxyport NO
add service svc_DSR01_02 2.2.2.102 ANY * -usip YES -useproxyport NO
add service svc_DSR01_03 2.2.2.103 ANY * -usip YES -useproxyport NO

add lb vserver vs_DSR_DECAP ANY 2.2.2.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED -netProfile netProf_DSR_MBF_noIP

add ns ip 1.1.1.80 255.255.255.255 -type VIP -arp DISABLED -snmp DISABLED
add lb vserver vs_DSR_Relay ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m MAC -sessionless ENABLED

bind lb vserver vs_DSR_DECAP svc_DSR01_01
bind lb vserver vs_DSR_DECAP svc_DSR01_02
bind lb vserver vs_DSR_DECAP svc_DSR01_03

bind lb vserver vip_DSR_Relay svc_DSR01_01
bind lb vserver vip_DSR_Relay svc_DSR01_02
bind lb vserver vip_DSR_Relay svc_DSR01_03

add netProfile netProf_DSR_MBF_noIP -MBF ENABLED
add lb monitor mon_DSR_MAC PING -netProfile netProf_DSR_MBF_noIP
bind service svc_DSR01_01 -monitorName mon_DSR_MAC
bind service svc_DSR01_02 -monitorName mon_DSR_MAC
bind service svc_DSR01_03 -monitorName mon_DSR_MAC
<!--NeedCopy-->

L’exemple suivant montre une configuration de test utilisant Ubuntu et les serveurs Red Hat exécutant apache2. Ces commandes sont configurées sur chaque serveur principal.

sudo ip addr add 1.1.1.80 255.255.255.255 dev lo
sudo sysctl net.ipv4.conf.all.arp_ignore=1
sudo sysctl net.ipv4.conf.all.arp_announce=2
sudo sysctl net.ipv4.conf.eth4.rp_filter=2 (The interface has the external IP with route towards the ADC)
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo ip link set dev lo arp on
<!--NeedCopy-->

Décapsulation du serveur back-end

Lorsque vous utilisez les serveurs principaux comme décapsulation, la configuration principale varie en fonction du type de système d’exploitation du serveur. Vous pouvez configurer un serveur principal en tant que décapsulation en procédant comme suit :

  1. Configurez une interface de boucle arrière avec IP pour IP de service.
  2. Créez une interface de tunnel.
  3. Ajouter un itinéraire via l’interface tunnel.
  4. Configurez les paramètres d’interface nécessaires pour le trafic.

Remarque :

Les serveurs du système d’exploitation Windows ne peuvent pas effectuer de tunnels IP en mode natif. Les commandes sont donc fournies à titre d’exemple pour les systèmes Linux. Toutefois, les plug-ins tiers sont disponibles pour les serveurs Windows OS, ce qui ne relève pas du champ d’application de cet exemple.

L’illustration suivante montre une configuration de décapsulation à l’aide des serveurs principaux.

Configuration de la décapsulation du serveur

Exemple de configuration :

Dans cet exemple, 1.1.1.80 est l’adresse IP virtuelle (VIP) Citrix ADC et 2.2.2.10-2.2.12 sont les adresses IP du serveur principal. L’adresse VIP est configurée dans l’interface de bouclage et un itinéraire est ajouté via l’interface du tunnel. Les moniteurs utilisent l’adresse IP du serveur et placent les paquets du moniteur sur le tunnel IP à l’aide des points de terminaison du tunnel.

La configuration complète requise pour la configuration est la suivante.

Configuration ADC frontale :

La configuration suivante crée un moniteur qui utilise le point de terminaison du tunnel comme source. Ensuite, envoyez des pings par tunnel à l’adresse IP du service.

add ns ip 10.0.1.2 255.255.255.252 -vServer DISABLED
add netProfile netProfile_DSR -srcIP 10.0.1.2
add lb monitor mon_DSR PING -LRTM DISABLED -destIP 1.1.1.80 -ipTunnel YES -netProfile netProfile_DSR
<!--NeedCopy-->

La configuration suivante crée un service VIP pour service qui utilise l’adresse IP source d’origine. Ensuite, transfère le trafic via un tunnel IP vers les serveurs back-end.

add service svc_DSR01 2.2.2.10 ANY * -usip YES -useproxyport NO
bind service svc_DSR01 -monitorName mon_DSR

add service svc_DSR02 2.2.2.11 ANY * -usip YES -useproxyport NO
bind service svc_DSR02 -monitorName mon_DSR

add service svc_DSR03 2.2.2.12 ANY * -usip YES -useproxyport NO
bind service svc_DSR03 -monitorName mon_DSR

add lb vserver vip_DSR_ENCAP ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED
bind lb vserver vip_DSR_ENCAP svc_DSR01
bind lb vserver vip_DSR_ENCAP svc_DSR02
bind lb vserver vip_DSR_ENCAP svc_DSR03
<!--NeedCopy-->

Configuration du serveur principal de chaque serveur :

Les commandes suivantes sont requises pour que le serveur principal reçoive le paquet IPIP, supprime l’encapsulation externe, puis réagisse depuis le bouclage à l’adresse IP du client d’origine. Cela garantit que les adresses IP du paquet reçu par le client correspondent aux adresses IP de la demande d’origine.

modprobe ipip
sudo ip addr add 1.1.1.80 255.255.255.255 dev lo
nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0
ifname tun0 remote 198.51.100.5 local 203.0.113.10
nmcli connection modify tun0 ipv4.addresses '10.0.1.1/30'
nmcli connection up tun0
sudo sysctl net.ipv4.conf.all.arp_ignore=1
sudo sysctl net.ipv4.conf.all.arp_announce=2
sudo sysctl net.ipv4.conf.tun0.rp_filter=2
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo ip link set dev lo arp off
<!--NeedCopy-->
Cas d’utilisation 7 : Configurer l’équilibrage de charge en mode DSR à l’aide d’IP sur IP