keepalived में जोड़ें गए IP पते का समस्या जब संख्या 20 से अधिक हो जाती है
सर्वर
Published: 2016-05-16

यह सामग्री Qiita से स्थानांतरित की गई है।

किसी स्थान पर keepalived का उपयोग करके, VRRP संरचना + LVS के साथ लोड बैलेंसर के रूप में उपयोग किया जा रहा है।
यह लोड बैलेंसर निम्नलिखित संरचना के अनुसार कई IP पतों (SSL प्रमाणपत्र के कारण आदि) को सेटअप और संचालन कर रहा है।

इस दौरान, जोड़ें गए IP पतों के बीच संचार का एक दुखद स्थिति उत्पन्न हुई।

keepalived लोड बैलेंसर की संरचना (DSR संरचना)

VIP के लिए SSL के लिए उपयोग करने के लिए IP पता को राउटर से स्थिर मार्ग के माध्यम से रूट किया गया है,
Aur IP पतों को जोड़ा गया है। (आवश्यकतानुसार जोड़ा जा रहा है)

→ इस कारण से लोड बैलेंसर के keepalived पर जोड़ने वाले IP पतों की संख्या धीरे-धीरे बढ़ती जा रही है।
※सुविधाजनकता के लिए निजी IP पते का उपयोग किया गया है।

20 से अधिक IP पतों को VRRP में सेट करने में समस्या

  • सेटिंग फ़ाइल में 21 IP पतों को सेट किया गया है (※ कॉन्फ़िगरेशन उदाहरण है)
vrrp_instance BOND0 {
    state MASTER
    interface bond0 
    virtual_router_id 100 
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.4 dev bond0
        192.168.2.1 dev bond0
        192.168.2.2 dev bond0
        192.168.2.3 dev bond0
        192.168.2.4 dev bond0
        192.168.2.5 dev bond0
        192.168.2.6 dev bond0
        192.168.2.7 dev bond0
        192.168.2.8 dev bond0
        192.168.2.9 dev bond0
        192.168.2.10 dev bond0
        192.168.2.11 dev bond0
        192.168.2.12 dev bond0
        192.168.2.13 dev bond0
        192.168.2.14 dev bond0
        192.168.2.15 dev bond0
        192.168.2.16 dev bond0
        192.168.2.17 dev bond0
        192.168.2.18 dev bond0
        192.168.2.19 dev bond0
        192.168.2.20 dev bond0
    }
}
  • 21 IP पतों को सेट करने के बाद भी कम क्यों हैं!!
# ip addr show bond0 | grep "inet 192"
    inet 192.168.1.4/32 scope global bond0
    inet 192.168.2.1/32 scope global bond0
    inet 192.168.2.2/32 scope global bond0
    inet 192.168.2.3/32 scope global bond0
    inet 192.168.2.4/32 scope global bond0
    inet 192.168.2.5/32 scope global bond0
    inet 192.168.2.6/32 scope global bond0
    inet 192.168.2.7/32 scope global bond0
    inet 192.168.2.8/32 scope global bond0
    inet 192.168.2.9/32 scope global bond0
    inet 192.168.2.10/32 scope global bond0
    inet 192.168.2.11/32 scope global bond0
    inet 192.168.2.12/32 scope global bond0
    inet 192.168.2.13/32 scope global bond0
    inet 192.168.2.14/32 scope global bond0
    inet 192.168.2.15/32 scope global bond0
    inet 192.168.2.16/32 scope global bond0
    inet 192.168.2.17/32 scope global bond0
    inet 192.168.2.18/32 scope global bond0
    inet 192.168.2.19/32 scope global bond0

वास्तव में, यह keepalived के दस्तावेज़ में लिखा गया है…
http://www.keepalived.org/pdf/UserGuide.pdf

virtual_ipaddress { # Block limited to 20 IP addresses
    @IP
    @IP
    @IP
}

20 IP पतों की सीमा! यह स्पष्ट रूप से लिखा हुआ है, शर्मनाक है!

20 से अधिक IP पतों को सेट करने का तरीका

  • सेटिंग फ़ाइल में virtual_ipaddress_excluded का उपयोग करके अतिरिक्त IP पतों को सेट करें (※ कॉन्फ़िगरेशन उदाहरण है)
vrrp_instance BOND0 {
    state MASTER
    interface bond0 
    virtual_router_id 100 
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.4 dev bond0
    }
    virtual_ipaddress_excluded {
        192.168.2.1 dev bond0
        192.168.2.2 dev bond0
        192.168.2.3 dev bond0
        192.168.2.4 dev bond0
        192.168.2.5 dev bond0
        192.168.2.6 dev bond0
        192.168.2.7 dev bond0
        192.168.2.8 dev bond0
        192.168.2.9 dev bond0
        192.168.2.10 dev bond0
        192.168.2.11 dev bond0
        192.168.2.12 dev bond0
        192.168.2.13 dev bond0
        192.168.2.14 dev bond0
        192.168.2.15 dev bond0
        192.168.2.16 dev bond0
        192.168.2.17 dev bond0
        192.168.2.18 dev bond0
        192.168.2.19 dev bond0
        192.168.2.20 dev bond0
    }
}
  • सफलतापूर्वक 20 से अधिक IP पतों को सेट करने में सफल रहें।
# ip addr show bond0 | grep "inet 192"
    inet 192.168.1.4/32 scope global bond0
    inet 192.168.2.1/32 scope global bond0
    inet 192.168.2.2/32 scope global bond0
    inet 192.168.2.3/32 scope global bond0
    inet 192.168.2.4/32 scope global bond0
    inet 192.168.2.5/32 scope global bond0
    inet 192.168.2.6/32 scope global bond0
    inet 192.168.2.7/32 scope global bond0
    inet 192.168.2.8/32 scope global bond0
    inet 192.168.2.9/32 scope global bond0
    inet 192.168.2.10/32 scope global bond0
    inet 192.168.2.11/32 scope global bond0
    inet 192.168.2.12/32 scope global bond0
    inet 192.168.2.13/32 scope global bond0
    inet 192.168.2.14/32 scope global bond0
    inet 192.168.2.15/32 scope global bond0
    inet 192.168.2.16/32 scope global bond0
    inet 192.168.2.17/32 scope global bond0
    inet 192.168.2.18/32 scope global bond0
    inet 192.168.2.19/32 scope global bond0
    inet 192.168.2.20/32 scope global bond0