Ubuntu 22.04
Sponsored Link

Keepalived : अधिसूचना स्क्रिप्ट सेट करें2023/10/11

 

अधिसूचना स्क्रिप्ट सेट करने के लिए, Keepalived की स्थिति बदलने पर किसी भी स्क्रिप्ट को निष्पादित करना संभव है।

यह उदाहरण निम्न प्रकार से पर्यावरण पर आधारित है।

                            VIP:10.0.0.30
+----------------------+          |          +----------------------+
|  [node01.srv.world]  |10.0.0.51 | 10.0.0.52|  [node02.srv.world]  |
|     Keepalived#1     +----------+----------+     Keepalived#2     |
|                      |                     |                      |
+----------------------+                     +----------------------+

[1]

बुनियादी Keepalived सेटिंग्स कॉन्फ़िगर करें, यहां देखें।

[2] उदाहरण के लिए, बुनियादी Keepalived सेटिंग्स के अलावा, अधिसूचना स्क्रिप्ट सेट करें।
# एक अधिसूचना स्क्रिप्ट बनाएं

root@node01:~#
vi /etc/keepalived/notify.sh
# नया निर्माण
#!/bin/bash

TYPE=$1
NAME=$2
ENDSTATE=$3

MASTER_STATE () {
    # जब Keepalived MASTER स्थिति में प्रवेश करता है तो कोई भी कार्रवाई यहां लिखें
    /usr/bin/echo "MASTER state for VRRP ${TYPE} ${NAME}" > /tmp/keepalive.stat
}

BACKUP_STATE () {
    # जब Keepalived BACKUP स्थिति में प्रवेश करता है तो कोई भी कार्रवाई यहां लिखें
    /usr/bin/echo "BACKUP state for VRRP ${TYPE} ${NAME}" > /tmp/keepalive.stat
}

FAULT_STATE () {
    # जब Keepalived FAULT स्थिति में प्रवेश करता है तो कोई भी कार्रवाई यहां लिखें
    /usr/bin/echo "FAULT state for VRRP ${TYPE} ${NAME}" > /tmp/keepalive.stat
}

case $ENDSTATE in
    "MASTER")
        MASTER_STATE
        exit 0
        ;;
    "BACKUP")
        BACKUP_STATE
        exit 0
        ;;
    "FAULT")
        FAULT_STATE
        exit 0
        ;;
    *)
        echo "${ENDSTATE} is unknown state for VRRP ${TYPE} ${NAME}"
        exit 1
        ;;
esac

root@node01:~#
chmod 755 /etc/keepalived/notify.sh
root@node01:~#
vi /etc/keepalived/keepalived.conf
global_defs {
    router_id node01
    notification_email {
        root@localhost
    }
    notification_email_from root@node01.srv.world
    smtp_server localhost
    smtp_connect_timeout 30
    # जोड़ना
    enable_script_security
    # एक उपयोगकर्ता निर्दिष्ट करें जो स्क्रिप्ट चलाता है
    # सुरक्षा कारणों से, इसे root का उपयोग नहीं करना चाहिए
    script_user root
}

vrrp_instance VRRP1 {
    state BACKUP
    nopreempt
    interface enp1s0
    virtual_router_id 101
    priority 200
    advert_int 1
    virtual_ipaddress {
        10.0.0.30/24
    }
    smtp_alert
    # जोड़ना
    # [notify] अनुभाग के लिए स्क्रिप्ट के लिए तर्क निर्दिष्ट करना असंभव है
    # [notify] के लिए, कुछ तर्क निम्नानुसार स्वचालित रूप से जोड़े जाते हैं
    # notify script.sh (INSTANCE|GROUP) (instance name) (ENDSTATE) (priority)
    notify /etc/keepalived/notify.sh

    # निम्नानुसार निर्दिष्ट करना भी संभव है
    # यहां तर्क निर्दिष्ट करना संभव है
    # notify_master "script.sh arg1 arg2 ..."
    # notify_backup "script.sh arg1 arg2 ..."
    # notify_fault  "script.sh arg1 arg2 ..."
}

root@node01:~#
systemctl restart keepalived
[3] ठीक है। जब Keepalived की स्थिति बदली जाएगी तो अधिसूचना स्क्रिप्ट के लिए क्रियाओं को सत्यापित करें।
# प्राथमिक नोड

root@node01:~#
cat /tmp/keepalive.stat

MASTER state for VRRP INSTANCE VRRP1
root@node01:~#
systemctl restart keepalived
root@node01:~#
cat /tmp/keepalive.stat

BACKUP state for VRRP INSTANCE VRRP1
मिलान सामग्री