溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

keepalived+lvs配置詳解

發(fā)布時(shí)間:2020-07-23 08:20:33 來源:網(wǎng)絡(luò) 閱讀:641 作者:linux阿輝 欄目:網(wǎng)絡(luò)安全

安裝:

tar -zxvf keepalived-1.2.2.tar.gz

yum list all |grep "ipvsadm"

yum -y install kernel-devel openssl-develpopt-devel ipvsadm libnl libnl-devel

service iptables stop

setenforce 0

./configure --prefix=/--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64 && make&& make install

添加系統(tǒng)服務(wù):

chkconfig --add keepalived   添加后可以使用service、chkconfig工具管理keepalived服務(wù)

chkconfig keepalived on            on級(jí)別為2、3、4

chkconfig --list keepalived        查看23、4級(jí)別是否開啟

 

 

 

全局配置文件:

global_defs {

  notification_email {

    acassen@firewall.loc

    failover@firewall.loc

    sysadmin@firewall.loc

   }

  notification_email_from Alexandre.Cassen@firewall.loc

  smtp_server 192.168.1.1

  smtp_connect_timeout 30

  router_id LVS_master

}         

 

 

vrrp_script check_httpd {

#vrrp_script模塊專門用于對(duì)集群中服務(wù)資源進(jìn)行監(jiān)控(HA集群監(jiān)控)。于此模塊一起使用的還有track_script模塊,track_script模塊主要是調(diào)用vrrp_script模塊。還可以檢查端口、shell語句檢查、腳本檢查。在附錄下面演示

script “killall –O httpd”

#killall –O httpd 查看httpd服務(wù)返回狀態(tài),如果是零則表示運(yùn)行正常,為1則表示運(yùn)行異常。

interval 2

#檢查的時(shí)間間隔,單位為秒。

}

 

Vrrp配置(keepalived高可用配置)實(shí)例:

vrrp_instance VI_1 {

#標(biāo)識(shí),vrrp實(shí)例開始的標(biāo)識(shí)

state MASTER

#定義主備角色masterbackup

interface eth0

#指定監(jiān)聽網(wǎng)卡

virtual_router_id51

#虛擬路由標(biāo)識(shí),此標(biāo)識(shí)主備不許相同。

priority 100

#優(yōu)先級(jí)。數(shù)字越大優(yōu)先級(jí)越高,在同一個(gè)vrrp-instancemaster必須比backup優(yōu)先級(jí)大

advert_int 1

#設(shè)置masterbackup之間同步檢查的時(shí)間間隔,單位是秒

   authentication {

       auth_type PASS

       auth_pass 1111

         #設(shè)定masterbackup驗(yàn)證類型(AH、PASS)和密碼,主備密碼一致才能通信。

}

 

notify_master “/etc/keep/master.sh”

notify_backup “/etc/keep/backup.sh”

notify_fault “/etc/keep/fault.sh”

#指定當(dāng)keepalived進(jìn)入master、backupfault狀態(tài)時(shí)執(zhí)行到腳本。腳本舉例在附錄下。

 

track_script {

         check_httpd

}

#調(diào)用vrrp_script模塊,check_httpdvrrp_script模塊后面跟的名字。

 

   virtual_ipaddress { 

       192.168.1.250

#虛擬地址,可以設(shè)置多個(gè)。它是以ip address add的方式加入地址。

    }

#nopreempt

#不搶占功能,此功能只能用在state狀態(tài)是backup的節(jié)點(diǎn)上,而且這個(gè)節(jié)點(diǎn)優(yōu)先級(jí)要高于其他節(jié)點(diǎn)

#preempt_delay 300

#搶占延遲時(shí)間,單位是秒。例如:網(wǎng)絡(luò)有抖動(dòng)master節(jié)點(diǎn)向backup節(jié)點(diǎn)發(fā)送探測(cè)包不及時(shí)實(shí)際master節(jié)點(diǎn)沒有問題,無需主備切換。重啟服務(wù)或重啟系統(tǒng)也是如此。

}

————————————————vrrp配置附錄—————————————————

-----------------------------------vrrp配置附錄--------------------------------------------


notify_master “/etc/keep/master.sh” 腳本實(shí)例如下:

#!/bin/bash

logfile=/var/log/keep/keep-http-statsu.log

echo “[MASTER]” >>$logfile

date >> $logfile

backup.shfault.sh 略過。

 

端口檢查:

vrrp_script check_httpd {

script “</dev/tcp/127.0.0.1/80”

#這個(gè)方式是定義了對(duì)本機(jī)的80端口的狀態(tài)檢查。

interval 2

#檢查的時(shí)間間隔,單位為秒。

fall 2

#表示檢查到失敗的最大次數(shù)

rise 1

#表示檢查到一次成功,則認(rèn)為節(jié)點(diǎn)恢復(fù)正常。

}

 

shell語句檢查:

vrrp_script check_httpd {

script “if [ -f /var/run/httpd/httpd.pid ];hten exit 0; else exit 1; fi”

# 檢查pid文件是否存在,如果返回0表示正常,返回1則表示異常。

interval 2

#檢查的時(shí)間間隔,單位為秒。

fall 2

#表示檢查到失敗的最大次數(shù)

rise 1

#表示檢查到一次成功,則認(rèn)為節(jié)點(diǎn)恢復(fù)正常。

}

 

vrrp_script需要track_script模塊調(diào)用我在演示時(shí)省略,但是不要忘記在vrrp_instance配置實(shí)例中調(diào)用。

------------------------------------------------------------------------------------------

 

LVS負(fù)載均衡)配置實(shí)例:

virtual_server 192.168.1.250 {

#LVS配置實(shí)例已virtual_server表示開始

delay_loop 6

#設(shè)置健康檢查的間隔,單位是秒。

lb_algo rr

#負(fù)載調(diào)度算法,有rr(輪巡)、wrr(加權(quán)輪詢)、lcwlc、lblc、shdh

lb_kind NAT

#負(fù)載均衡機(jī)制,有NATTUN、DR

nat_mask255.255.255.0

#不知道是什么意思,后續(xù)在查。

persistence_timeout50

#同一IP的連接50秒內(nèi)被分配到同一臺(tái)realserver

persistence_granularity255.255.255.0

#此選項(xiàng)是配合persistence_timeout,如果后面寫的是4個(gè)255就代表單個(gè)ip,如果是255.255.255.0則代表客戶端所在的整個(gè)網(wǎng)段的請(qǐng)求都會(huì)分配到同一臺(tái)real_server上。

   protocol TCP

    #指定轉(zhuǎn)發(fā)協(xié)議類型有tcpudp

sorry_server192.168.1.120 80

#相當(dāng)一個(gè)備用節(jié)點(diǎn),當(dāng)所有real_server節(jié)點(diǎn)失效則啟用備用節(jié)點(diǎn)

real_server192.168.1.108 80 {

# real_server段的開始標(biāo)識(shí),后面跟著的是后端節(jié)點(diǎn)真實(shí)ip地址。Ip和端口用空格分開。

       weight 1

                   #權(quán)重。數(shù)值越大權(quán)重越高。為性能高的節(jié)點(diǎn)分配高權(quán)重。合理使用節(jié)點(diǎn)

                   notify_up/root/keepalived/keepup.sh

                   notify_down/root/keepalived/keepdown.sh

                   #表示在檢測(cè)到real_server節(jié)點(diǎn)是up或是down時(shí)執(zhí)行的腳本。

      HTTP_GET |SSL_GET {

                   #HttpSSL檢測(cè)方式實(shí)例

           url {

                            #可以指定多個(gè)URL

              path /index.html

                                     #后面跟詳細(xì)的路徑

              digestff20ad2481f97b1754ef3e12ecd3a9cc

                                     #SSl檢查后的摘要信息,這個(gè)摘要信息可以通過ganhash命令工具獲取。例如:ganhash -s192.168.1.108 –p 80 –u /。

                              status_code 200

                            #返回的結(jié)果是200狀態(tài)碼。

           }

                            connect_port80

                            #健康檢查的端口,如果不指定,默認(rèn)是real_server指定的端口

                            bindto192.168.1.108

                            #通過此地址發(fā)送請(qǐng)求檢查服務(wù)器健康狀態(tài)。

           connect_timeout 3

                            #無響應(yīng)時(shí)間,單位是秒。

           nb_get_retry 3

                            #重試次數(shù)

           delay_before_retry 3

                            #重試次數(shù)的間隔。

       }

    }

}

————————————————LVS配置附錄—————————————————

-------------------------------------lvs配置附錄------------------------------------------

 

 

除了HTTP_GET 、SSL_GET這兩個(gè)real_server健康狀態(tài)檢查外還有TCP_CHECK、MISC_CHECK、SMTP_CHECK這三個(gè)。

 

接下來演示TCP_CHECK(端口檢查)、MISC_CHECK(外部程序檢查也就是腳本檢查)

 

TCP_CHECK

                            connect_port80

                            #健康檢查的端口,如果不指定,默認(rèn)是real_server指定的端口

           connect_timeout 3

                            #無響應(yīng)時(shí)間,單位是秒。

           nb_get_retry 3

                            #重試次數(shù)

           delay_before_retry 3

                            #重試次數(shù)的間隔。

 

 

 

MISC_CHECK

misc_path “/usr/local/bin/script.sh 1.1.1.180 http://www.baidu.com”

#指定腳本的執(zhí)行路徑,后面可以帶參數(shù)。跟普通方式執(zhí)行腳本相同。

misc_timeout 5

#設(shè)定腳本的超時(shí)時(shí)間

! misc_dynamic

#表示不啟用節(jié)點(diǎn)動(dòng)態(tài)調(diào)整real_server權(quán)重。

#如果啟用并且返回碼是零則表示檢查正常,權(quán)重不變。如果是1則表示節(jié)點(diǎn)異常權(quán)重降為零。如果返回值是2-255之間的數(shù)字則用返回值減2。如:返回值是10,權(quán)重則是810-2

/usr/local/bin/script.sh 腳本如下:

cat/usr/local/bin/check_squidproxy.sh  1.1.1.1  80  http://www.baidu.com

#!/bin/bash

 if [ $#-ne 3 ];then

  echo"Warning: check_command error."

  exit 1

else

  PROXY_IP=$1

  PROXY_PORT=$2

  CHECK_URL=$3

  CMD=`/usr/bin/curl-I -x ${PROXY_IP}:${PROXY_PORT} "${CHECK_URL}" 2>/dev/null | grep"200 OK" | wc -l`

  if [ ${CMD} -ne 1];then

    echo"CRITCAL: check proxy ${PROXY_IP} failed."

    exit 1

  else

    echo"OK: check proxy ${PROXY_IP} OK."

    echo0

  fi

fi

 

 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI