সাবডোমেন সেটআপ সহ হ্যাপ্রোক্সি সেটআপ


8

কারও আশা করা নিশ্চিত হয়ে সাহায্য করতে পারে যদি এটি কাজ করে? আমি একই হাইপ্রক্সি হোস্টে 3 টি সাবডোমেন ট্র্যাফিক রুট করার চেষ্টা করছি;

এখানে আমার সেটআপ

একটি ইন্টারফেস আইপ 10.10.10.100 এবং ডিএনএসের নাম haproxy01.mydomain.com সহ হ্যাপ্রোক্সি

এর সাথে যুক্ত 3 সিএনএম রেকর্ডস; sub1.mydomain.com, sub2.mydomain.com এবং sub3.mydomain.com

সমস্ত আগত ট্র্যাফিক 443 বন্দরের জন্য।

দুটি ব্যাক এন্ড অ্যাপ্লিকেশন সার্ভার রয়েছে যা 8081, 8082, 8083 তিনটি বন্দরটিতে ট্র্যাফিক গ্রহণ করে;

8081 এর জন্য sub1.mydomain.com 8082 এর জন্য sub2.mydomain.com এবং 8083 এর জন্য sub3.mydomain.com

অ্যাপ্লিকেশনটির কেবলমাত্র 8081 ট্র্যাফিকের জন্য এসএসএল পাস হওয়া দরকার তাই আমি বিশ্বাস করি যে এর জন্য আমি টিসিপি মোডটি ব্যবহার করেছি অন্যান্য ট্র্যাফিকটিও 8082 এবং 8083 এর জন্য এসএসএল হলেও এটি হ্যাপ্রোক্সিতে বন্ধ করা যেতে পারে তবে পরীক্ষার জন্য আমি সমস্ত টিসিপি দিয়ে গিয়েছিলাম মোড.

এটি অর্জনের জন্য আমার কনফিগারেশন বিভাগটি নীচে;

    #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

আমি যখন ৮৮৮৮ ট্র্যাফিকের জন্য উদাহরণস্বরূপ এইচএপ্রক্সির মাধ্যমে অ্যাপিকেশন সার্ভারগুলি অ্যাক্সেস করার চেষ্টা করি তখন এটি লগগুলি থাকে;

লোকালহোস্ট হ্যাপ্রোক্সি [6097]: এক্সএক্সএক্সএক্স: 51241 [20 / মার্চ / 2015: 12: 19: 38.720] মাইরাটিফিক মাইরাফেইটি / -1 / -1 / 0 0 এসসি 0/0/0/0/0 0/0

এই সেটআপ সম্পর্কে কিছু দিক প্রশংসা করুন।

পিএস আমি এখানে কোনও চিত্র পরিষ্কার করার জন্য এম্বেড করতে পারি না কারণ এটি আমার প্রথম পোস্ট :-(


লগ বার্তা সম্পূর্ণ ছিল না; মার্চ 20 12:19:38 লোকালহোস্ট হ্যাপ্রোক্সি [6097]: এক্সএক্সএক্সএক্স: 51241 [20 / মার্চ / 2015: 12: 19: 38.720] মাইরাটিফেই মাইটিফেইটি / <এনওএসআরভি> -1 / -1 / 0 0 এসসি 0/0/0 / 0/0 0/0
গ্লোবাল লার্নিং

NOSRV এর অর্থ এটি উপযুক্ত ব্যাকএন্ড খুঁজে পেল না। আপনি কি পরিসংখ্যান পৃষ্ঠা বা সকেট অ্যাক্সেস করতে পারেন এবং এইচএপ্রাক্সি ভাবেন কী ব্যাকেন্ডস রয়েছে তা দেখতে পারেন?
জিম জি।

হ্যাপ্রোক্সি এবং অ্যাপ্লিকেশন সার্ভারগুলির মধ্যে সংযোগ আছে কিনা তাও পরীক্ষা করে দেখুন। যদি এনসি: এনসি
ভি 10.10.10.101

হ্যাপ্রোক্সি মনিটরিং ড্যাশবোর্ডের সর্বশেষ চেক সমস্ত নোড আপ রিপোর্ট করে। আমি হ্যাপ্রোক্সি কনসোল থেকে সমস্ত বন্দরগুলির এই অ্যাপ্লিকেশন সার্ভারগুলিতে সংযোগটিও নিশ্চিত করেছি।
গ্লোবাল লার্নিং

@ এইচডি হ্যাঁ সংযোগ দুটি নোডেই ভাল।
গ্লোবাল লার্নিং

উত্তর:


11

টিসিপি মোডের সাহায্যে, HAProxy এইচটিটিপি অনুরোধটি ডিকোড করবে না, সুতরাং আপনার aclলাইনগুলি কোনও কিছুই করবে না এবং আপনার প্রবেশ করা লগগুলির দ্বারা দেখানো হয়েছে যে অগ্রভাগ কখনই কোনও ব্যাকএন্ডের সাথে মেলে না সক্ষম হতে পারে: এর mytraffic/<NOSRV>অর্থ এটি কোনও বাছাই করতে সক্ষম ছিল না ব্যাকএন্ড বা সার্ভার।

আপনাকে 3 টি সাবডোমেনকে 2 টি পৃথক সীমানায় বিভক্ত করতে হবে, প্রত্যেকে নিজের আইপি দিয়ে যেহেতু তারা 443 বন্দরটিতে সংযুক্ত রয়েছে One একটি পাসথ্রুটির জন্য, অন্যটি এসএসএল সমাপ্তির জন্য এবং সামগ্রী ব্যবহার করে স্যুইচিংয়ের জন্য mode http। এখানে সতর্কতামূলক বিষয় হচ্ছে যে আপনি যদি একটি চতুর্থ সাবডোমেন (sub4.mydomain.com) যোগ করতে চান যা পাসথ্রুও প্রয়োজন, আপনার তখন একটি তৃতীয় সীমান্ত এবং আইপি দরকার।

আপনাকে ডিএনএসে আলাদা আলাদা সিএনএম বা এ রেকর্ড তৈরি করতে হবে যাতে ডান সাবডোমেনগুলি সঠিক আইপিগুলিতে নির্দেশ করে।

এই ডিএনএস কনফিগারেশনটি দেওয়া হয়েছে:

10.10.10.100        A         haproxy01-cs.mydomain.com
10.10.10.101        A         haproxy01-pt1.mydomain.com
10.10.10.102        A         haproxy01-pt2.mydomain.com
sub1.mydomain.com   CNAME     haproxy01-pt1.mydomain.com
sub2.mydomain.com   CNAME     haproxy01-cs.mydomain.com
sub3.mydomain.com   CNAME     haproxy01-cs.mydomain.com
sub4.mydomain.com   CNAME     haproxy01-pt2.mydomain.com

এইচএপ্রসি কনফিগারেশনটি দেখতে এরকম কিছু দেখবে:

#Application Setup 
frontend ContentSwitching

  bind 10.10.10.100:443
  mode  http
  option httplog
  acl host_sub2 hdr(host) -i sub2.mydomain.com
  acl host_sub3 hdr(host) -i sub3.mydomain.com
  use_backend sub2_nodes if host_sub2
  use_backend sub3_nodes if host_sub3

frontend PassThrough1
  bind 10.10.10.101:443
  mode  tcp
  option tcplog
  use_backend sub1_nodes     

frontend PassThrough2
  bind 10.10.10.102:443
  mode  tcp
  option tcplog
  use_backend sub4_nodes

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 http
  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 http
  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

backend sub4_nodes
  mode tcp
  balance roundrobin
  stick-table type ip size 200k expire 30m
  stick on src
  server node1 10.10.10.101:8084 check
  server node2 10.10.10.102:8084 check

প্রকৃতপক্ষে, আমার এখানে থাকা আইপিগুলি কোনও অর্থবোধ করে না (আমি সামনের প্রান্তগুলির জন্য 10.10.10.101-102 ব্যবহার করেছি যেখানে আপনি তাদের নোডগুলিতে অর্পণ করেছেন), তবে এটি কীভাবে প্রদর্শিত হবে তার ধারণা পাবেন get
গ্রেগল

@ গ্রিল - আপনাকে ধন্যবাদ আমি এটি চেষ্টা করতে যাচ্ছি এবং ফলাফল সঙ্গে বৃত্তাকার। আমি টিসিপি মোডটি ব্যবহার করার আগে এবং এসিএল ব্যবহার সম্পর্কে চিন্তিত ছিলাম।
গ্লোবাল লার্নিং

ধন্যবাদ গ্রেগল এটা কাজ করে। একটি শেষ প্রশ্ন আমি যদি করতে পারি? ক্লায়েন্ট -> হ্যাপ্রোক্সি এবং হ্যাপ্রোক্সি -> ব্যাকএন্ড সার্ভারের কাছে এসএসএল পাওয়া (যেমন এটি শেষ হতে পারে তবে ব্যাকএন্ডে একটি নতুন শুরু করতে পারে), এটি করার প্রস্তাবিত উপায় কী? এসসিএল টিসিপি মোড দিয়ে যেতে হবে? 8081 ট্র্যাফিকের জন্য আমি পাসথ্রুটি চেয়েছিলাম কারণ অ্যাপ্লিকেশন এবং ক্লায়েন্টের সাথে পারস্পরিক অনুমোদনের অধিবেশন প্রয়োজন। বাকি বন্দরগুলি 8082 এবং 8083 ট্র্যাফিকের জন্য এসএসএল প্রয়োজন তবে এটির জন্য পারস্পরিক প্রমাণীকরণের প্রয়োজন নেই। (এই মুহুর্তে আমি পাসথ্রু পদ্ধতির সাথে গিয়েছিলাম)।
গ্লোবাল লার্নিং

ঠিক আছে, HAProxy বিবৃতিতে বিকল্পগুলি ca-fileএবং verify optionalবিকল্পগুলি ব্যবহার করে ক্লায়েন্ট শংসাপত্র চেক করতে পারে bind। যদি আপনি এটি করেন, তবে আপনার এক আইপিতে আবদ্ধ একক ফ্রন্টএন্ড থাকতে পারে এবং তারপরে সামগ্রী হোস্ট শিরোলেখ দ্বারা প্রয়োজনীয় উপযুক্ত ব্যাকেন্ডে স্যুইচ করতে পারে । পারস্পরিক প্রমাণীকরণ কাজ করেছে তা নিশ্চিত করার জন্য আপনি একটি এসিএল তৈরি করতে পারেন acl ClientSSLValid ssl_c_verify 0, তারপরে এটিকে use_backendবিবৃতিতে অন্য শর্ত হিসাবে যুক্ত করুনuse_backend sub1_nodes if host_sub1 ClientSSLValid
গ্রেগল

এখানে সরবরাহ করার চেয়ে আরও বিশদ সহ এখানে এবং এখানে কীভাবে এটি করা যায় সেখানে শালীন লেখার আপ রয়েছে ।
গ্রেগএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.