SNAT vs PBR untuk Server Load Balancing

8

Dalam konfigurasi SLB satu tangan, SNAT digunakan untuk memaksa lalu lintas kembali melewati SLB. Ini memiliki satu negatif: hanya bahwa log web tidak dapat menangkap IP klien yang sebenarnya kecuali diteruskan dalam header XFF (X-Forwarded-For) dan server web dapat login.

Alternatifnya adalah dengan menggunakan PBR (kebijakan berbasis routing) untuk mendapatkan kembali-lalu lintas kembali ke SLB, tapi saya mencoba untuk menghindari PBR kecuali tidak ada solusi lain / lebih baik Pada platform 6500E dengan SUP720 / PFC3B - dan saya tahu khususnya Versi iOS bisa menjadi faktor juga - apakah PBR menambahkan latensi apa pun dibandingkan melakukan SNAT dengan asumsi PBR semuanya dilakukan dalam perangkat keras? Jika PBR dilakukan dalam perangkat keras dengan hanya menggunakan perintah yang didukung olehnya hari ini, mungkinkah meningkatkan iOS di masa depan dapat mengubah PBR untuk dilakukan dalam perangkat lunak / proses-switched?

Saat ini, load-balancers kami memiliki sebagian besar server web VLAN tepat di belakangnya - default g / w menunjuk ke SLB - dan server lain seperti SQL dalam VLAN non-SLB. Namun, lalu lintas web-sql ini mentransformasikan SLB. Tujuan kami adalah untuk menghindari melintasi SLB dan hanya menjaga lalu lintas SQL terpisah, dan masih mempertahankan klien yang sebenarnya dalam log web. Saya lebih suka untuk tidak memperkenalkan kompleksitas pemecahan masalah dengan PBR dan mungkin perubahan ini dari perangkat keras ke perangkat lunak diproses di masa depan. Singkatnya XFF dan SNAT yang disebutkan sebelumnya, apakah PBR satu-satunya pilihan di sini dan apa cara terbaik untuk menjaga PBR tetap terkonfigurasi?

generalnetworkerror
sumber
Saya tidak 100% yakin saya mengerti topologi, apakah server Anda memiliki dua antarmuka dan Anda perlu SNAT sehingga server dapat memiliki rute statis tunggal untuk mengembalikan lalu lintas 'produksi' ke antarmuka yang menghadap ke SLB? Tetapi konfigurasi SNAT dalam 1: N menyiratkan status, yang selalu harus dihindari, PBR tidak memiliki kewarganegaraan sehingga skalanya jauh lebih baik.
ytti
3
Biasanya, saya menyarankan agar desain load-balancer satu-lengan (atau Anda dapat menyebutnya load-balancer pada tongkat), dan gunakan subnet sisi depan untuk VIP yang seimbang, dan subnet sisi belakang untuk server kolam renang. Server default melalui antarmuka sisi belakang pada load-balancer. Ini sepenuhnya menghilangkan kebutuhan untuk SNAT atau PBR.
Mike Pennington
Selain komentar saya tentang topologi load-balancer ... bisakah Anda menambahkan beberapa diagram untuk referensi, karena beberapa pertanyaan tidak jelas ketika Anda tidak yakin seperti apa gambaran yang lebih besar.
Mike Pennington
@ytti, topologi saat ini memiliki SLB inline dengan g / w default server yang menunjuk ke SLB - NIC / server tunggal. Kami memiliki apa yang dijelaskan oleh Mike dengan sisi klien dan sisi server VLAN pada dua antarmuka SLB sekarang, tetapi ini adalah pertanyaan tentang pindah ke topologi yang berbeda seperti satu-bersenjata sehingga server untuk lalu lintas SQL tidak harus melintasi SLB dan kami memilih untuk tidak menambah kerumitan pada server seperti NIC ganda dengan rute statis server, dll. Memahami latensi SNAT vs PBR adalah kunci serta desain lain yang saya lewatkan (seperti Pengembalian Server Langsung yang dijelaskan dalam jawaban ).
generalnetworkerror
Server apa itu? Di Linux (atau * BSD) sangat mudah untuk diatur sehingga paket dikembalikan ke antarmuka dari mana asalnya, yang berguna dalam pengaturan SLB (kami menggunakan ini untuk menghubungkan server secara berlebihan ke dua kotak SLB yang terputus, VIP adalah ECMPd sehingga keduanya panas, tetapi bisa juga dari vendor yang berbeda karena mereka tidak mengetahui satu sama lain).
ytti

Jawaban:

6

apakah PBR menambahkan latensi saat melakukan SNAT dengan asumsi PBR semuanya dilakukan dalam perangkat keras?

Sup720 mendukung PBR dalam HW , latensi tambahan (jika ada) dapat diabaikan karena PBR tidak menambahkan antrian antarmuka lagi. Saya pikir PBR akan membuat segalanya lebih sulit daripada yang seharusnya (dan saya masih belum yakin apakah itu akan berhasil ... spesifikasi opsi itu tidak sepenuhnya jelas)

Singkatnya XFF dan SNAT yang disebutkan sebelumnya, apakah PBR satu-satunya pilihan di sini dan apa cara terbaik untuk menjaga PBR tetap terkonfigurasi?

PBR bukan satu-satunya pilihan. Opsi yang Anda usulkan agak tidak jelas, tetapi PBR biasanya tidak lebih dari cara yang lebih menarik untuk melakukan routing statis.

Biasanya ini adalah topologi terbaik untuk layanan beban-seimbang yang memerlukan kueri SQL ...

  • Letakkan VIP Anda di subnet sisi depan ... 172.16.1.0/24 dalam diagram
  • Masukkan kumpulan server Anda di subnet sisi belakang ... 172.16.2.0/24 dalam diagram
  • Letakkan pertanyaan SQL Anda di antarmuka lain ... 172.16.3.0/24 dalam diagram. Tambahkan antarmuka kedua ke semua server yang membutuhkan kueri SQL. Buat semua pertanyaan SQL Anda ke alamat pada subnet ini. Topologi ini berfungsi untuk Unix dan Windows, karena Anda hanya mengandalkan ARP atau rute host (tergantung pada preferensi Anda) untuk konektivitas SQL.

Diagram:

LB dengan jaringan kueri SQL

Topologi ini memiliki manfaat tambahan:

  • Ini memisahkan antarmuka SQL dari lalu lintas web, karena kueri SQL bersifat bursty dan mungkin menghasilkan lalu lintas web yang macet.
  • Ini menyediakan MTU yang berbeda untuk layanan beban-seimbang Anda (yang biasanya perlu tetap di 1500 atau lebih rendah, jika mereka transit internet) dan layanan SQL Anda (yang mendukung frame jumbo).

Topologi load-balancer satu-lengan adalah pilihan yang kurang diinginkan karena Anda akhirnya memotong throughput maksimal Anda menjadi dua karena topologi satu-bersenjata.

EDIT untuk pertanyaan tentang HW vs SW switching di Sup720

Ini adalah topik yang mendalam, tapi saya akan memberikan versi ringkasan ... Sup720 menerapkan ACL di setiap arah (masuk / keluar) dan ACL harus masuk ke dalam TCAM berdasarkan pada algoritma penggabungan apa pun yang dipilih platform. Feature Manager Sup720 (mis. Fm) bertanggung jawab untuk memediasi fitur ke dalam TCAM dan melaporkan apakah Anda memiliki adjacency punt (artinya SW switching), atau apakah kombinasi protokol dan arah dialihkan dalam HW. Untuk mengisolasi apakah

  1. Pertama, identifikasi semua antarmuka Layer3 ingress dan keluar yang lalu lintas PBR bisa transit
  2. Selanjutnya, periksa output dari show fm fie int <L3_intf_name> | i ^Interf|Result|Flow|Config(Anda harus melihat arah masuk dan keluar untuk semua antarmuka di Langkah 1 ). Lalu lintas Anda akan dialihkan HW jika nilai dalam CAPS cocok dengan nilai yang Anda lihat di bawah ini ... perhatikan bahwa output dari perintah yang saya gunakan sangat mirip dengan apa yang Anda lihat di show fm fie summary...

Tx.Core01#sh fm fie int Vl220 | i ^Interf|Result|Flow|Config
Interface Vl220:
 Flowmask conflict status for protocol IP : FIE_FLOWMASK_STATUS_SUCCESS      <--- in HW
 Flowmask conflict status for protocol OTHER : FIE_FLOWMASK_STATUS_SUCCESS   <--- in HW
 Flowmask conflict status for protocol IPV6 : FIE_FLOWMASK_STATUS_SUCCESS    <--- in HW
Interface Vl220 [Ingress]:
 FIE Result for protocol IP : FIE_SUCCESS_NO_CONFLICT                        <--- in HW
 Features Configured : V4_DEF   - Protocol : IP
 FIE Result for protocol OTHER : FIE_SUCCESS_NO_CONFLICT                     <--- in HW
 Features Configured : OTH_DEF   - Protocol : OTHER
 FIE Result for protocol IPV6 : FIE_SUCCESS_NO_CONFLICT                      <--- in HW
 Features Configured : V6_DEF   - Protocol : IPV6
Interface Vl220 [Egress]:
 No Features Configured
No IP Guardian Feature Configured
No IPv6 Guardian Feature Configured
No QoS Feature Configured
Tx.Core01#

Antarmuka di atas tidak menunjukkan keluaran jalan keluar, tapi itu tidak relevan ... hasilnya mirip dengan arah Ingress. Ricky Micky menulis penjelasan yang luar biasa tentang 'antarmuka sh fm fie' jika Anda ingin detail lebih lanjut tentang dinamika bank TCAM / hasil merger.

Mike Pennington
sumber
Saya sudah menghilangkan opsi desain ini karena memerlukan kedekatan L2 antara tingkat front-end dan tingkat back-end serta tidak menskalakan dengan baik untuk beberapa VLAN back-end kami dan karena potensi kebutuhan untuk menempatkan firewall (tidak transparan). ) antara tingkatan. Namun, itu masih merupakan pilihan yang sangat baik bagi mereka yang tidak memiliki masalah ini. Poin bagus tentang MTU.
generalnetworkerror
Kurang konsultasi dokumentasi PBR untuk versi IOS tertentu untuk mengetahui apakah fitur PBR yang diberikan memicu perlunya dilakukan dalam perangkat lunak, dapatkah ini ditentukan dalam IOS? Inilah yang saya maksudkan dengan "dikonfigurasi dengan ketat" untuk PBR agar tetap beroperasi di dalam perangkat keras.
generalnetworkerror
@generalnetworkerror, perangkat keras apa yang ingin Anda lakukan PBR? Jika Sup720 / Sup2T, tidak terlalu sulit untuk mengidentifikasi apakah Anda beralih di HW vs SW ... kami membutuhkan lebih banyak spesifik untuk membantu. Bahkan, jika Anda tidak keberatan dengan diagram tentang bagaimana konsep PBR ini bekerja akan sangat membantu
Mike Pennington
SUP720 / PFC3B ... mencari untuk melihat bagaimana Anda dapat menentukan dari CLI jika fitur PBR yang diberikan memaksa ini menjadi s / w switching
generalnetworkerror
@generalnetworkerror, sh fm fie summary... atau baca jawaban saya untuk info lebih lanjut ...
Mike Pennington
1

Jika penyeimbang beban Anda mendukungnya, Pengembalian Server Langsung juga akan melakukan apa yang Anda inginkan. Itu perlu didukung oleh penyeimbang beban Anda dan ada beberapa masalah sistem operasi. Ini melibatkan menempatkan 'loopback' antarmuka di setiap server yang semuanya memiliki alamat IP VIP, penyeimbang beban sementara memiliki alamat server nyata hanya menggunakan alamat MAC dari server nyata untuk meneruskan paket, karena server memiliki antarmuka loopback dengan VIP di dalamnya, server menerima paket.

Anda perlu membaca dokumen vendor LB spesifik dan tim server Anda harus dapat mengelola adaptor virtual (kami tidak menggunakan fitur ini karena kami tidak berpikir bahwa penyediaan server otomatis kami dapat mengelola adaptor MS loopback.

Tapi ini tidak menggunakan NAT di LB dan Anda tidak harus melakukan PBR.

fredpbaker
sumber