Berharap seseorang dapat membantu mengonfirmasi jika ini berhasil? Saya mencoba untuk merutekan 3 lalu lintas subdomain ke host haproxy yang sama;
Ini pengaturan saya
haproxy dengan satu antarmuka ip 10.10.10.100 dan nama dns haproxy01.mydomain.com
3 catatan CNAME yang terkait dengannya; sub1.mydomain.com, sub2.mydomain.com dan sub3.mydomain.com
semua lalu lintas masuk adalah untuk port 443.
Ada dua server aplikasi back end yang menerima lalu lintas di tiga port 8081, 8082, 8083, katakanlah;
sub1.mydomain.com untuk 8081 sub2.mydomain.com untuk 8082 dan sub3.mydomain.com untuk 8083
Aplikasi ini memerlukan melewati SSL untuk hanya port 8081 lalu lintas jadi saya percaya saya harus menggunakan mode tcp untuk itu lalu lintas lain untuk 8082 dan 8083 juga SSL tetapi dapat diakhiri di Haproxy tetapi untuk pengujian saya pergi dengan semua TCP mode.
Bagian konfigurasi saya untuk mencapai ini di bawah;
#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
Ketika saya mencoba mengakses server aplikasi melalui HAproxy misalnya untuk lalu lintas 8082 itu melempar ini adalah log;
localhost haproxy [6097]: xxxx: 51241 [20 / Mar / 2015: 12: 19: 38.720] mytraffic mytraffic / -1 / -1 / 0 0 SC 0/0/0/0/0/0 0/0
menghargai beberapa arahan terkait pengaturan ini.
PS Saya tidak bisa menyematkan gambar untuk kejelasan di sini karena ini adalah posting pertama saya :-(
Jawaban:
Dengan mode TCP, HAProxy tidak akan men-decode permintaan HTTP, jadi
acl
baris Anda tidak akan melakukan apa pun dan frontend tidak akan pernah bisa mencocokkan backend, seperti yang ditunjukkan oleh log yang Anda masukkan:mytraffic/<NOSRV>
berarti ia tidak dapat memilih backend atau server.Anda harus membagi 3 subdomain menjadi 2 frontend yang berbeda, masing-masing dengan IP mereka sendiri karena semuanya terhubung pada port 443. Satu untuk passthrough, yang lain untuk terminasi SSL dan menggunakan alih konten
mode http
. Peringatan di sini adalah bahwa jika Anda menambahkan subdomain ke-4 (sub4.mydomain.com) yang juga memerlukan passthrough, Anda akan memerlukan frontend ke-3 dan IP.Anda juga perlu membuat catatan CNAME atau A yang berbeda di DNS sehingga subdomain yang tepat menunjuk ke IP yang tepat.
Dengan konfigurasi DNS ini:
Konfigurasi HAproxy akan terlihat seperti ini:
sumber
ca-file
dan pernyataan tersebut. Jika Anda melakukannya, Anda bisa memiliki satu frontend terikat ke satu IP, dan kemudian konten beralih ke backend yang sesuai seperti yang dipersyaratkan oleh header host . Untuk mengonfirmasi bahwa otentikasi mutual berfungsi, Anda dapat membuat acl like , lalu menambahkannya sebagai syarat lain pada pernyataan sepertiverify optional
bind
acl ClientSSLValid ssl_c_verify 0
use_backend
use_backend sub1_nodes if host_sub1 ClientSSLValid