基于keepalived的VRRP協議實現DR模型下的高可用集群

基于keepalived的VRRP協議實現DR模型下的高可用集群

環境及配置前提說明

4臺虛擬服務器都為centos6.8.

主機1,ip:192.168.25.140 做后端RS1,80端口向外部提供web服務

主機2,ip:192.168.25.141 做后端RS2,80端口向外部提供web服務

ip:192.168.25.142為lo:0接口的VIP地址,80端口定義為集群服務端口

注意:兩臺作為DR模型的RS主機需要先配置其內核參數

主機3,ip:192.168.25.138 做keepalived集群主機1,做主模型的,負責調度,192.168.25.142為VIP地址,80端口定義為集群服務端口

主機4,ip:192.168.25.139 做keepalived集群主機2,做備模型的,負責調度,192.168.25.142為VIP地址,80端口定義為集群服務端口

1、給兩臺后端RS主機安裝webserver,這里以httpd為例,并且為其編輯測試主頁,并且配置兩臺RS主機的內核參數,定義其arp級別,以及為其lo:0接口設置vip地址

]# yum install httpd -y
]# vim /var/www/html/index.html
<h1>RS 1</h1>
<h1>RS 2</h1>
]# vim set_arp.sh 使用腳本的方式來配置內核參數和lo接口的vip地址 
    #/!bin/bash
    #
    vip='192.168.25.142' #vip地址
    vport='80' #vip端口
    netmask='255.255.255.255' #vip掩碼
    iface='lo:0' #vip接口

    case $1 in
    start)
            echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
            echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
            echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
            echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

            ifconfig $iface $vip netmask $netmask broadcast $vip up #添加vip地址到lo:0接口
            route add -host $vip dev $iface #添加路由
            ;;
    stop)
            ifconfig $iface down

            echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
            echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
            echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
            echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
            ;;
    esac
]# ./set_arp.sh start

2、為兩臺keepalived主機編輯配置文件

]# yum install keepalived -y 安裝keepalived
]# cp -a keepalived.conf{,.bak} 先備份
]# vim keepalived.conf 編輯配置文件
]# openssl rand -hex 4 生成8位密碼
2.1節點1配置如下
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 172.0.0.1
   smtp_connect_timeout 30
   router_id node1
   vrrp_mcast_group4 224.0.100.19
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 1
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass cb77b8da
    }
    virtual_ipaddress {
        192.168.25.142/32 dev eth0 #此處寫DR模型中的VIP地址
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 2
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 020c3694
    }
    virtual_ipaddress {
        192.168.25.142/32 dev eth0 #此處寫DR模型中的VIP地址
    }
}

virtual_server 192.168.25.142 80 { #此處寫DR模型中的VIP地址
    delay_loop 3
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 192.168.25.140 80 { #此處寫DR模型中的RS1地址
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
    real_server 192.168.25.141 80 { #此處寫DR模型中的RS2地址
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}
2.2節點2配置如下;
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server 172.0.0.1
   smtp_connect_timeout 30
   router_id node2
   vrrp_mcast_group4 224.0.100.19
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 1
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass cb77b8da
    }
    virtual_ipaddress {
        192.168.25.142/32 dev eth0 #此處寫DR模型中的VIP地址
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 2
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 020c3694
    }
    virtual_ipaddress {
        192.168.25.142/32 dev eth0 #此處寫DR模型中的VIP地址
    }
}

virtual_server 192.168.25.142 80 { #此處寫DR模型中的VIP地址
    delay_loop 3
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 192.168.25.140 80 { #此處寫DR模型中的RS1地址
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
    real_server 192.168.25.141 80 { #此處寫DR模型中的RS2地址
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}
3進行訪問測試
curl http://192.168.25.142

基于keepalived的VRRP協議實現DR模型下的高可用集群

如上環境進行單主配置如下;

節點1配置
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 172.0.0.1
   smtp_connect_timeout 30
   router_id node1
   vrrp_mcast_group4 224.0.100.19
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 1
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass cb77b8da
    }
    virtual_ipaddress {
        192.168.25.142/32 dev eth0 #此處寫DR模型中的VIP地址
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

virtual_server 192.168.25.142 80 { #此處寫DR模型中的VIP地址
    delay_loop 3
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 192.168.25.140 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
    real_server 192.168.25.141 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}
節點2配置
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server 172.0.0.1
   smtp_connect_timeout 30
   router_id node2
   vrrp_mcast_group4 224.0.100.19
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 1
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass cb77b8da
    }
    virtual_ipaddress {
        192.168.25.142/32 dev eth0
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

virtual_server 192.168.25.142 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 192.168.25.140 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
    real_server 192.168.25.141 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}
測試

基于keepalived的VRRP協議實現DR模型下的高可用集群

為兩種模型添加sorry_server

前提條件,keepalived主機需要安裝web服務,使得sorry_server運行在keepalived主機上
]# yum install httpd -y 下載web服務
]# vim /var/www/html/index.html 編輯sorry_server主頁
    <h1>這是sorry_server1</h1>
    <h1>這是sorry_server2</h1>
]# service keepalived stop 停止keepalived服務
]# vim keepalived.conf 編輯keepalived主機配置文件,定義sorry_server,在virtual_server的各real_server之外添加
    sorry_server 127.0.0.1 80
]# service keepalived start 啟動服務
]# service httpd start 啟動sorry_server服務
]# curl http://192.168.25.142 在兩個RS都處于停機狀態下進行訪問測試,此時哪一個keepalived節點處于master地位則哪個節點響應

基于keepalived的VRRP協議實現DR模型下的高可用集群

基于keepalived的VRRP協議實現DR模型下的高可用集群

注意:此時如果一個keepalived主機掛了 只有另外一臺在線的話 可是可以正常進行調度工作的

keepalived調用外部的輔助腳本進行資源監控,并根據監控的結果狀態能實現優先動態調整示例;

基于keepalived的VRRP協議實現DR模型下的高可用集群

]# service keepalived start 啟動服務
]# touch down | rm -f down 在當前的主節點上的/etc/keepalived目錄下創建名為down的文件就可實現動態切換
注意:節點1和節點2都需要配置

原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/58161

(0)
M20-1馬星M20-1馬星
上一篇 2016-11-07
下一篇 2016-11-07

相關推薦

  • 第十二周作業

      1、描述一次完整的http請求處理過程 簡介?一次完整的HTTP請求過程從TCP三次握手建立連接成功后開始,客戶端按照指定的格式開始向服務端發送HTTP請求,服務端接收請求后,解析HTTP請求,處理完業務邏輯,最后返回一個HTTP的響應給客戶端,HTTP的響應內容同樣有標準的格式。無論是什么客戶端或者是什么服務端,大家只要按照HTTP的協議標準…

    2017-11-12
  • # Linux運維入門初步—–第二周

    標簽(空格分隔): Linux入門 linux 運維 — 寫作:N27_李偉 2017-7-13一、 Linux上常用的文件管理命令都有哪些,使用方法1. 文件類型的分類文件類型:– 普通文件類型d:目錄文件b:塊設備c:字符設備l:符號鏈接文件p:管道文件,pipes:套接字文件,socket例如: [root@loong ~]# …

    Linux干貨 2017-07-19
  • 函數定義、使用

        1、函數介紹         函數function是由若干條shell命令組成的語句塊,實現代碼重用和模塊化編程。           &nb…

    Linux干貨 2016-08-22
  • N25第一周博客作業

    本周加班很多,視頻未看完,下周補上

    Linux干貨 2016-12-04
  • Linux軟件管理(rpm,yum)

    Linux的應用程序安裝提供了兩中格式的軟件包:一種是軟件開發者直接提供的源碼包;另一種是發行版廠商提供事先編譯好打包的軟件包;用戶需要根據需要來選擇何種方式安裝軟件,作為系統管理運維人員,要想合理應用,必須熟悉這兩者之間的內在聯系以及各自的特性和差異; *軟件包管理工具)   — RPM軟件包管理工具  — YUM軟件包前端管理工具 軟…

    Linux干貨 2016-08-29
  • 馬哥教育網絡班22期第4周課程作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@MyCloudServer ~]# cp /etc/skel/ /home/tuser1  [root@MyCloudServer ~]# c…

    Linux干貨 2016-09-19
欧美性久久久久