কিয়ালাইভড ভিআরআরপি_স্ক্রিপ্ট ব্যর্থ হচ্ছে না


11

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

নীচে আমার কাছে একটি সার্ভারের জন্য আমার কনফিগারেশন রয়েছে। দুটির মধ্যে একমাত্র পৃথকীকরণ সংখ্যাটি মাস্টার 110 এবং পিছনে 109 হচ্ছে is

তবে আমি যখন /etc/init.d/ প্রসেস স্টপ ক্যালভালাইভড দিয়ে আমার প্রক্রিয়াটি বন্ধ করি তখন ব্যর্থ হয় না। আমি কেবল ভিআরআরপিএসস্ক্রিপ্ট পেয়েছি (chk_script) ব্যর্থ হয়েছে এবং অন্য কিছুই নয়। কোন ব্যর্থতা বা কিছুই।

vrrp_script chk_script {
script "/usr/local/bin/failover.sh"
interval 2
weight 2
}

vrrp_instance HAInstance {
state BACKUP
interface eth0
virtual_router_id 8
priority 109
advert_int 1
nopreempt
vrrp_unicast_bind 10.10.10.8
vrrp_unicast_peer 10.10.10.9
virtual_ipaddress {
  10.10.10.10/16 dev eth0
}
notify /usr/local/bin/keepalivednotify.sh
track_script {
  chk_script weight 20
}
}

এটি নীচে আমার chk_script। আমি যখন আমার স্ক্রিপ্ট হিসাবে কিলল -0 প্রক্রিয়া করি তখন একই সমস্যা ঘটে happens

!/bin/bash
SERVICE='process'
STATUS=$(ps ax | grep -v grep | grep $SERVICE)

if [ "$STATUS" != "" ]
then
    exit 0
else
    exit 1
fi

যে কেউ এই জন্য একটি ফিক্স জানেন না? ধন্যবাদ।


আপনার ব্যাকআপ দৃষ্টান্ত অগ্রাধিকার পরিবর্তন লক্ষ্য করে বা কিছু লগ করে? উভয় থেকে লগ সহায়ক হবে।
জিম জি।

না এটা না। মাস্টার চলে গেলে কেবল একবার পরিবর্তনটি লক্ষ্য করা যায়। যেমন যখন আমি কিপালাইভ করা বন্ধ করি। আমি নিরীক্ষণ করছি প্রক্রিয়া বন্ধ করা কেবলমাত্র VRRP_Script (chk_script) মাস্টারটিতে ব্যর্থ হয়েছে। দাসের উপর কিছুই নেই।
Nvasion

উত্তর:


13

আমার ঠিক একই সমস্যা ছিল তবে আমার সমস্যা ফায়ারওয়াল বা আমার ইথারনেট অ্যাডাপ্টারে নয় তবে চেক স্ক্রিপ্টের "ওজন" সেটিংসে ছিল।

এটি ছিল আমার কনফিগারেশন:

শ্রীরামকৃষ্ণ

vrrp_instance haproxy {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1

ব্যাকআপ:

vrrp_instance haproxy {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1

Check_script:

vrrp_script chk_haproxy {
   script "python /root/ha_check.py"
   interval 2     # check every 2 seconds
   weight 2
   rise 2
   fall 2

}

মাস্টার ভিআইপি প্রকাশ করতে অস্বীকার করার কারণটি হ'ল কারণ স্ক্রিপ্টটি ব্যর্থ হওয়া সত্ত্বেও, মাস্টার এখনও বেকআপ সার্ভার থেকে উচ্চ অগ্রাধিকার নম্বর পেয়েছিলেন। এটি ঘটেছিল কারণ চেক_স্ক্রিপ্টে "ওজন" সেটিংটি অগ্রাধিকার সংখ্যার মধ্যে "জিএপি" কভার করার পক্ষে পর্যাপ্ত ছিল না, যার অর্থ ব্যাকআপ সার্ভারের অগ্রাধিকার সংখ্যাটি মাস্টার সার্ভারের একের চেয়ে বেশি বৃদ্ধি করা। আমি আরও ব্যাখ্যা করব:

কিপলাইভডের ম্যানুয়াল অনুসারে, "ওজন" সেটিংয়ের একটি ধনাত্মক সংখ্যা চেকটি সফল হলে সেই সংখ্যাটিকে অগ্রাধিকারে যুক্ত করবে।
যদি চেক ব্যর্থ হয় তবে একটি নেতিবাচক সংখ্যা অগ্রাধিকার নম্বর থেকে সেই সংখ্যাটি বিয়োগ করবে।

সুতরাং, আমার কনফিগারেশন অনুযায়ী:

সার্ভারের অগ্রাধিকারগুলি স্ক্রিপ্টের পূর্ব ব্যর্থতা:
মাস্টার: 152
ব্যাকআপ: 100 ব্যর্থতা_আইপি
: মাস্টার

ব্যর্থআপ আইপি সঠিকভাবে মাস্টার সার্ভার দ্বারা "ধরা" আছে যেহেতু ব্যাকআপ সার্ভারের তুলনায় মাস্টারের উচ্চ অগ্রাধিকার রয়েছে (152> 100)

স্ক্রিপ্ট ব্যর্থতার পর সার্ভার অগ্রাধিকার:
মাস্টার সার্ভার: 148
ব্যাকআপ সার্ভার: 102
Failover_IP: এখনও মাস্টার

ব্যর্থ আইপি এখনও মাস্টার সার্ভারে রয়েছে কারণ ব্যাকআপের তুলনায় মাস্টার আবারও উচ্চতর অগ্রাধিকার পেয়েছেন (148> 102)। মাস্টার সার্ভার আইপি প্রকাশ করতে প্রত্যাখ্যান করেছিল এবং ঠিক তাই করেছে যেহেতু অন্য সার্ভারের চেয়ে তার অগ্রাধিকার বেশি।

আমার পরিস্থিতির সমাধানটি ছিল:

সমাধান -১: উভয় সার্ভারের অগ্রাধিকার নম্বরটি পরিবর্তন করুন যাতে তাদের "GAP" বেশি না পান।
উদাহরণস্বরূপ:
মাস্টার অগ্রাধিকার: 150
ব্যাকআপ অগ্রাধিকার: 149
চেক_স্ক্রিপ্ট ওজন: এটি যেমন (2)।

উপরের কনফিগারেশন সহ, যখন স্ক্রিপ্টটি সফল হয় (যার অর্থ সমস্ত ঠিক আছে) অগ্রাধিকারগুলি হবে:
মাস্টার: 152
ব্যাকআপ: 149
আইপি_লোকেশন: মাস্টার অন (152> 149)

যখন স্ক্রিপ্ট ব্যর্থ হয়:
মাস্টার: 150
ব্যাকআপ: 151
আইপি_লোকেশন: ব্যাকআপে (151> 150)

সমাধান - ২: স্ক্রিপ্টের ওজন সংখ্যা 2 থেকে -60 এ পরিবর্তন করুন


এটি দেখে মনে হচ্ছে যেন কোনওভাবেই ওজন নির্দিষ্ট করে দেওয়া হয়নি যে একটি ব্যর্থ ট্র্যাক_স্ক্রিপ্ট সরাসরি ত্রুটিযুক্ত অবস্থাটিকে ট্রিগার করবে
অস্কার

@ ন্যাভেশন: দয়া করে এই উত্তরটি গ্রহণ করুন কারণ আমিও আমার সমস্যা সমাধান করেছি।
অঙ্কুর সনি

4

আমার একই সমস্যা ছিল - ট্র্যাক_সক্রিপ্ট সহ দুটি সেন্টোস 7.1 সার্ভার, এবং মাস্টারটিতে vrrp_script ব্যর্থ হওয়ার ফলে কেবলমাত্র ভিওআরআরপিএসস্ক্রিপ্ট (chk_script) ব্যর্থ হয়েছে "ব্যর্থতা" নয়। ব্যাকআপ সার্ভারে, তবে আমি যতক্ষণ না মাস্টার সার্ভারে ট্র্যাক_স্ক্রিপ্টটি ব্যর্থ হ'ল ভার্চুয়াল আইপিটি ধরে রাখার চেষ্টা করেছিলাম সে সম্পর্কে অনেকগুলি বার্তা পেয়েছি।

আমার ক্ষেত্রে সমাধান: ভিআরআরপি প্যাকেট / মাল্টিকাস্ট প্যাকেটগুলির অনুমতি দেওয়ার জন্য মাস্টার সার্ভারে ফায়ারওয়াল (iptables) সঠিকভাবে কনফিগার করা হয়নি, একই সময়ে অন্য সার্ভারের ফায়ারওয়াল, ব্যাকআপ সঠিকভাবে কনফিগার করা হয়েছিল।

আমি নিম্নরূপে উভয় সার্ভারে একই iptables নিয়মগুলি প্রবেশ করিয়েছি:

iptables -A INPUT -i eth0 -d 224.0.0.0/8 -j ACCEPT
iptables -A INPUT -p vrrp -i eth0 -j ACCEPT

এটি সার্ভারগুলির মধ্যে একটিতে (ব্যাকআপ ভিআরআরপি সার্ভার) কাজ করেছে তবে মাস্টারটি নয় কারণ আমি ভুলে গিয়েছি যে মাস্টার সার্ভারে ইন্টারফেসটির নাম 'ইথ0' ছিল না, এইভাবে দুটি নিয়মের কোনও প্রভাব ছিল না।

এটি আমি যে আচরণটি পর্যবেক্ষণ করেছিলাম তা ব্যাখ্যা করেছে:

যদি কোনও ভার্চুয়াল_আউটার_আইডির জন্য রাখে যদি অন্য কোনও ভিআরআরপি স্পিকার দেখতে না পান তবে এটি এখনও নিজেকে নেতিবাচক ওজন পরিবর্তনের পরেও সর্বোচ্চ অগ্রাধিকারের সাথে এক হিসাবে বিশ্বাস করে (যদিও এটি নিজের চেয়ে বেশি অগ্রাধিকারের সাথে ভিআরআরপি বার্তাগুলি গ্রহণ করে না)। কারণ অন্যান্য স্পিকারের বিজ্ঞাপনগুলি ফায়ারওয়াল দ্বারা অবরুদ্ধ এবং এগুলি সম্পর্কে সচেতন করার জন্য রক্ষণশীল প্রক্রিয়াতে কখনই পৌঁছতে পারে না)। এজন্য আপনি এটি ভিআইপি প্রকাশ করতে দেখছেন না।

ব্যাকআপ সার্ভার, তবে, (এখন ব্যর্থ) মাস্টার এর বিজ্ঞাপনগুলি দেখতে সক্ষম হয়েছিল, সেই প্যাকেটগুলির নিজস্বতার চেয়ে কম মূল্যে হ্রাস পেয়েছে এবং নিজেকে মাস্টার হিসাবে ঘোষণা করেছিল এবং ভিআইপি দাবি করার জন্য কৃতজ্ঞ এআরপি প্রেরণ করে। সুতরাং আমরা এমন পরিস্থিতিতে পৌঁছে গেলাম যেখানে উভয় সার্ভার ভেবেছিল তাদের মাস্টার হিসাবে ভিআইপি পরিবেশন করা দরকার।

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

  • একটি ট্র্যাক_সক্রিপ্ট কোনও অফ-অফ সুইচ নয় ("যদি স্ক্রিপ্ট ঠিক আছে: ভিআইপি নির্বাচনের জন্য যোগ্য; যদি ঠিক না থাকে: ভিআইপি নির্বাচনের জন্য সম্পূর্ণ অযোগ্য") - এটি কেবল নির্বাচনে বিজয়ী হওয়ার সম্ভাবনা বাড়িয়ে / হ্রাস করে এবং যদি কেবল চালিয়ে যায় তবে নিজেকে কেবলমাত্র ভিআরআরপি স্পিকার হিসাবে পর্যবেক্ষণ করে এবং অন্যান্য স্পিকারের কোনও বার্তা কখনই গ্রহণ করে না, আসলেই নির্বাচনের খুব বেশি কিছু নেই - আপনি সর্বদা জয়ী হন।

0

আমি আপনার মতো একই পরিস্থিতিতে ডুবেছি এবং কিপালাইভড সম্পর্কে কিছু গবেষণা করেছি। প্রতিটি সার্ভারে কী ঘটছে তা ভাবতে দিন। ধরে নিই যে আপনি ম্যানুয়াল ফেইলব্যাক আর্কিটেকচারটি প্রয়োগ করতে চান,

1 ম ব্যাকআপ নোডে

যতবারই ট্র্যাক_স্ক্রিপ্ট ব্যর্থ হয় তার পতনের সময় এটি ২ য় ব্যাকআপ নোডে বিজ্ঞাপন প্রেরণ করে। পয়েন্টটি এখানে বিজ্ঞাপনের মধ্যে অগ্রাধিকার সেট। আপনার ক্ষেত্রে,

129 (109 + 20)

২ য় বেকআপ সার্ভারে প্রেরণ করা হয়।

২ য় বেকআপ সার্ভারে

এরপরে দ্বিতীয় বেকআপ নোডে।

আরএফসি অনুসারে ,

If the Priority in the ADVERTISEMENT is Zero, then:

  o  Set the Master_Down_Timer to Skew_Time
else:

  If Preempt_Mode is False, or If the Priority in the
  ADVERTISEMENT is greater than or equal to the local
  Priority, then:

    o Reset the Master_Down_Timer to Master_Down_Interval
  else:

    o Discard the ADVERTISEMENT
  endif
endif

যেহেতু, আপনি নোপ্রিম্পট সক্ষম করেছেন এবং উচ্চ অগ্রাধিকারের ভিআরআরপি গ্রহণ করেছেন, ২ য় বেকআপ নোড রাষ্ট্রের রূপান্তর পর্যায়ে যাচ্ছে না।

সমাধান

সুতরাং আপনি যদি রাষ্ট্রের রূপান্তর ২ য় নোডে ঘটতে চান তবে আপনি হয় করতে পারেন,

  1. সেট ওজন করার 0 1 ম ব্যাকআপ নোড উপর। এটি ২ য় ব্যাকআপ নোডে অগ্রাধিকার 0 বিজ্ঞাপন পাঠাবে । ডক ওজন 0 সম্পর্কে আরও বর্ণনা করে।

  2. ২ য় বেকআপ নোডে নোপ্রিম্পট বন্ধ করুন ।

  3. 1 ম ব্যাকআপ নোডে কমপক্ষে -2 এ ওজন সেট করুন।

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