En espérant que quelqu'un puisse aider à confirmer si cela suppose de fonctionner? J'essaie d'acheminer 3 trafic de sous-domaine vers le même hôte haproxy;
Voici ma configuration
haproxy avec une interface ip 10.10.10.100 et nom DNS haproxy01.mydomain.com
3 enregistrements CNAME qui lui sont associés; sub1.mydomain.com, sub2.mydomain.com et sub3.mydomain.com
tout le trafic entrant est destiné au port 443.
Il existe deux serveurs d'applications principaux qui acceptent le trafic sur trois ports 8081, 8082, 8083, disons;
sub1.mydomain.com pour 8081 sub2.mydomain.com pour 8082 et sub3.mydomain.com pour 8083
L'application nécessite un passage SSL pour le trafic du port 8081 uniquement, je pense donc que je dois utiliser le mode tcp pour cela, l'autre trafic pour 8082 et 8083 est également SSL, mais il peut être terminé au Haproxy, mais pour les tests, je suis allé avec tous les TCP mode.
Ma section de configuration pour y parvenir est ci-dessous;
#Application Setup
frontend mytraffic
bind *:443
mode tcp
acl host_sub1 hdr(host) -i sub1.mydomain.com
acl host_sub2 hdr(host) -i sub2.mydomain.com
acl host_sub3 hdr(host) -i sub3.mydomain.com
use_backend sub1_nodes if host_sub1
use_backend sub2_nodes if host_sub2
use_backend sub3_nodes if host_sub3
option tcplog backend sub1_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8081 check
server node2 10.10.10.102:8081 check
backend sub2_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8082 check
server node2 10.10.10.102:8082 check
backend sub3_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8083 check
server node2 10.10.10.102:8083 check
# APPLICATION SETUP END
Lorsque j'essaie d'accéder aux serveurs d'applications via HAproxy, par exemple pour le trafic 8082, il lance ce sont les journaux;
haproxy localhost [6097]: xxxx: 51241 [20 / mars / 2015: 12: 19: 38.720] mytraffic mytraffic / -1 / -1 / 0 0 SC 0/0/0/0/0 0/0
apprécier une certaine direction concernant cette configuration.
PS Je ne peux pas intégrer d'image pour plus de clarté ici car c'est mon premier post :-(
Réponses:
Avec le mode TCP, HAProxy ne décodera pas la requête HTTP, donc vos
acl
lignes ne feront rien et le frontend ne pourra jamais correspondre à un backend, comme le montrent les journaux que vous avez entrés:mytraffic/<NOSRV>
signifie qu'il n'a pas pu choisir un backend ou serveur.Vous devez diviser les 3 sous-domaines en 2 frontaux différents, chacun avec ses propres adresses IP car ils se connectent tous sur le port 443. L'un pour le passage, l'autre pour la terminaison SSL et la commutation de contenu à l'aide
mode http
. La mise en garde ici étant que si vous deviez ajouter un 4ème sous-domaine (sub4.mydomain.com) qui nécessitait également un passthrough, vous auriez alors besoin d'un 3ème frontend et d'une IP.Vous devez également créer différents enregistrements CNAME ou A dans DNS afin que les bons sous-domaines pointent vers les bonnes adresses IP.
Compte tenu de cette configuration DNS:
La configuration HAproxy ressemblerait à ceci:
la source
ca-file
etverify optional
de l'bind
instruction. Si vous faisiez cela, vous pourriez avoir un seul frontend lié à une IP, puis basculer le contenu vers les backends appropriés comme requis par l'en- tête de l' hôte . Pour confirmer que l'authentification mutuelle a fonctionné, vous pouvez créer un type aclacl ClientSSLValid ssl_c_verify 0
, puis l'ajouter comme autre condition à lause_backend
déclaration commeuse_backend sub1_nodes if host_sub1 ClientSSLValid