2011-08-30 48 views
23

के साथ डुप्लिकेट टीसीपी यातायात मुझे एक मशीन (पोर्ट) और दो अलग-अलग मशीनों (बंदरगाहों) से ट्रैफिक (डुप्लिकेट) भेजने की आवश्यकता है। मुझे टीसीपी सत्र की भी देखभाल करने की ज़रूरत है।प्रॉक्सी

शुरुआत में मैंने em-proxy का उपयोग किया, लेकिन ऐसा लगता है कि ओवरहेड काफी बड़ा है (यह सीपीयू का 50% से अधिक हो जाता है)। फिर मैंने haproxy स्थापित किया और मैं यातायात को पुनर्निर्देशित करने में कामयाब रहा (डुप्लिकेट नहीं)। ओवरहेड उचित है (5% से कम)। विशिष्ट पते पर सुनने -
: बंदरगाह और जो कुछ भी आप दो अलग अलग मशीनों पर भेज पाते हैं: बंदरगाहों और उनमें से एक से जवाब त्यागने

समस्या यह है कि मैं haproxy कॉन्फ़िग फ़ाइल में कह सकते हैं नहीं पीछा कर रहा है।

इसके लिए एम-प्रॉक्सी कोड काफी सरल है, लेकिन ऐसा लगता है कि EventMachine बहुत अधिक ओवरहेड उत्पन्न करता है।

इससे पहले कि मैं हैप्रोक्सी कोड में खोदूं और बदलने की कोशिश करें (डुप्लिकेट ट्रैफिक) मैं चाहूंगा कि वहां कुछ ऐसा ही है?

धन्यवाद।

+0

आखिरकार आपने यह कैसे किया? – Marenz

+0

+1, आप इसे हल करने के बारे में कैसे गए? –

+0

इस https://lyft.github.io/envoy/ –

उत्तर

8

iptables प्रयोगात्मक ROUTE target के बारे में कैसे?

http://www.netfilter.org/projects/patch-o-matic/pom-external.html#pom-external-ROUTE

जो तुम चलो होगा की तरह कुछ के साथ यातायात दर्पण:: यह मिरर यातायात के लिए एक "टी" का विकल्प है

iptables -A PREROUTING -t mangle -p tcp --dport 80 -j ROUTE --gw 1.2.3.4 --tee 
iptables -A POSTROUTING -t mangle -p tcp --sport 80 -j ROUTE --gw 1.2.3.4 --tee

दूसरी मशीन एक ही सबनेट पर होना करने के लिए और होगा की आवश्यकता होगी या तो लक्ष्य आईपी पते (और arps के जवाब नहीं) पर सुनने की जरूरत है या संतोषजनक सुनें।

20

मैंने इस उद्देश्य के लिए सिर्फ प्रॉक्सी बनाई है।

https://github.com/chrislusf/teeproxy

प्रयोग

./teeProxy -l :8888 -a localhost:9000 -b localhost:9001 

टी-प्रॉक्सी एक रिवर्स प्रॉक्सी है। प्रत्येक आने वाले अनुरोध के लिए, यह अनुरोध 2 में क्लोन करता है और फिर उन्हें 2 सर्वरों पर अग्रेषित करता है। सर्वर a के परिणाम सामान्य रूप से लौटा दिए जाते हैं, लेकिन सर्वर b से परिणाम अनदेखा किए जाते हैं।

टीई-प्रॉक्सी GET, POST, और अन्य HTTP विधियों दोनों को संभालता है।

+0

को आजमा सकते हैं यह संग्रह अब मौजूद नहीं है। –

+5

रेपो का नाम बदल दिया गया है: https://github.com/chrislusf/teeproxy –

+0

उबंटू 'apt-get gccgo-go' इंस्टॉल करने के बाद बस रेपो क्लोन करने वालों के लिए एक नोट और फिर 'teeproxy.go' बनाएं – rsilva4

1

https://github.com/agnoster/duplicator आज़माएं।

मैंने teeproxy की कोशिश की लेकिन जीईटी के अलावा कुछ अनुरोधों के साथ अजीब परिणाम प्राप्त हुए।