keepalived實(shí)驗(yàn)

keepalived實(shí)現(xiàn)lvs調(diào)度

實(shí)驗(yàn)?zāi)康模?/h2>

用keepalived實(shí)現(xiàn)使用lvs的dr模式來做調(diào)度,調(diào)度算法使用rr模式方便測試。

實(shí)驗(yàn)環(huán)境:

網(wǎng)卡均為eth0沥曹,保證集群中每臺(tái)服務(wù)器的時(shí)間時(shí)相同的髓帽,用ntpdate可以同步奄薇,然后關(guān)閉selinux和iptables。

虛擬ip為172.16.10.1和172.16.10.2(雙主模型抗愁,所以需要兩個(gè)虛擬ip)
兩臺(tái)調(diào)度器ip地址分別為172.16.200.101和172.16.200.102
兩臺(tái)節(jié)點(diǎn)ip地址為172.16.10.3和172.16.10.4

實(shí)驗(yàn)過程:

2.配置節(jié)點(diǎn)服務(wù)器馁蒂,設(shè)置arp響應(yīng)級別和虛擬ip,將這些配置寫到一個(gè)腳本中呵晚,方便管理,如下(注意沫屡,這里要實(shí)現(xiàn)雙主模型饵隙,而且是DR模型,所以節(jié)點(diǎn)主機(jī)和調(diào)度器的vip要一致沮脖,而雙主模型需要兩個(gè)前端的虛擬IP金矛,所以節(jié)點(diǎn)主機(jī)也需要配置兩個(gè)VIP):
在兩個(gè)節(jié)點(diǎn)的/root目錄下,創(chuàng)建文件lvs.sh,然后寫入腳本
vim lvs.sh

#!/bin/bash
vip=172.16.10.2
vip2=172.16.200.100
mask=255.255.255.255
iface="lo:0"
iface2="lo:1"
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/lo/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    
    ifconfig $iface $vip netmask $mask broadcast $vip up
    ifconfig $iface2 $vip2 netmask $mask broadcast $vip2 up
    route add -host $vip dev $iface 
    route add -host $vip2 dev $iface2 
    ;;
stop)
    ifconfig $iface down
    ifconfig $iface2 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/lo/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    ;;
esac

bash lvs.sh start #執(zhí)行腳本勺届,加上start參數(shù)
執(zhí)行完成后可以用ip a l命令來查看兩個(gè)虛擬ip有沒有創(chuàng)建成功驶俊。
3.在兩臺(tái)調(diào)度器上執(zhí)行如下操作:

yum -y install keepalived nginx #安裝keepalived和nginx
echo "sorry form 172.16.10.1" > /usr/share/nginx/html/index.html #這里安裝nginx是為了實(shí)現(xiàn)sorry服務(wù)器,當(dāng)節(jié)點(diǎn)都出問題時(shí)免姿,調(diào)度器的nginx會(huì)放回echo的內(nèi)容饼酿。調(diào)度器2上echo的是 172.16.10.2,這樣方便區(qū)分是由哪個(gè)調(diào)度器工作的
service nginx start
ifconfig eth0:0 172.16.10.2 netmask 255
.255.255.255 broadcast 172.16.10.2 up #在eth0上添加vip
我們可以先裝個(gè)ipvsadm,手動(dòng)配置lvs來測試以下胚膊,合適了再去配置keepalived

yum -y install ipvsadm
ipvsadm -A -t 172.16.10.2:80 -s rr
ipvsadm -a -t 172.16.10.2:80 -r 172.16.10.3 -g
ipvsadm -a -t 172.16.10.2:80 -r 172.16.10.4 -g
然后訪問172.16.10.2就可以調(diào)度到后端的兩個(gè)節(jié)點(diǎn)提供服務(wù),使用for i in {1..10};do curl http://172.16.10.2;done,就會(huì)發(fā)現(xiàn)3和4交替出現(xiàn)故俐。 ,將這個(gè)調(diào)度器的vip刪除紊婉,在另一臺(tái)節(jié)點(diǎn)上同樣上述操作药版,驗(yàn)證時(shí)候需要在客戶端先arp -d 172.16.10.2`將自己的arp緩存刪除,不然還是會(huì)去找之前的調(diào)度器的喻犁。
測試成功后槽片,我們就可以去部署keepalived了:
首先,將ipvsadm手動(dòng)做的lvs先清空株汉,這樣才會(huì)不影響keepalived配置筐乳,如下:

ifconfig eth0:0 down
ipvsadm -C
然后配置keepliaved:
我們先來實(shí)現(xiàn)lvs的dr模式,使用主備模式

vim /etc/keepalived/keepalived.conf
#配置文件中有很多virtual_server段乔妈,我們只保留第一個(gè)蝙云,剩下的給注釋了就行
#下面分別為調(diào)度器1和調(diào)度器2的配置

調(diào)度器1的配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
    feng@mageedu.com
   }
   notification_email_from admin@mageedu.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node1
   vrrp_mcast_group4 224.224.224.224
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 16
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.10.2
    }
}

virtual_server 172.16.10.2 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.0.0
    protocol TCP
    sorry_server 127.0.0.1 80
    real_server 172.16.10.3 80 {
        weight 1
        HTTP_GET {
            url {
              path /
        status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.16.10.4 80 {
            weight 1
        HTTP_GET {
            url {
              path /
        status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 61
    priority 95
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.200.100
    }
}

virtual_server 172.16.200.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.0.0
    protocol TCP
    sorry_server 127.0.0.1 80
    real_server 172.16.10.3 80 {
        weight 1
        HTTP_GET {
            url {
              path /
        status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.16.10.4 80 {
            weight 1
        HTTP_GET {
            url {
              path /
        status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

第二臺(tái)調(diào)度器配置如下

! Configuration File for keepalived

global_defs {
   notification_email {
    feng@mageedu.com
   }
   notification_email_from admin@mageedu.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node2
   vrrp_mcast_group4 224.224.224.224
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 16
    priority 95
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.10.2
    }
}

virtual_server 172.16.10.2 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.0.0
    protocol TCP
    sorry_server 127.0.0.1 80
    real_server 172.16.10.3 80 {
        weight 1
        HTTP_GET {
            url {
              path /
        status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 1
        }
     }
    real_server 172.16.10.4 80 {
        weight 1
        HTTP_GET {
            url {
              path /
        status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}
vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 61
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.200.100
    }
}

virtual_server 172.16.200.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.0.0
    protocol TCP
    sorry_server 127.0.0.1 80
    real_server 172.16.10.3 80 {
        weight 1
        HTTP_GET {
            url {
              path /
        status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 1
        }
     }
    real_server 172.16.10.4 80 {
        weight 1
        HTTP_GET {
            url {
              path /
        status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}

完成后在將兩個(gè)調(diào)度器中的keepalived都啟動(dòng)(注意keepalived不能重啟,有時(shí)候配置會(huì)不生效路召,所以如果之前已經(jīng)啟動(dòng)了勃刨,那么關(guān)閉后在啟動(dòng))

service keepalived start
測試:
在測試主機(jī)上修改/etc/hosts文件,添加如下內(nèi)容

172.16.200.100test.io
172.16.10.2test.io
然后用一個(gè)小循環(huán)來測試:

[root@localhost named]# for i in {1..10};do curltest.io ;done
返回結(jié)果為172.16.10.3和172.16.10.4交替出現(xiàn)股淡,實(shí)驗(yàn)成功

nginx雙主模型高可用集群

1.在兩臺(tái)調(diào)度器上身隐,設(shè)置nginx服務(wù)配置文件,這里使用的nginx版本為1.10.2,所以配置文件可能有點(diǎn)細(xì)微差別

vim /etc/nginx/nginx.conf
在http上下文中定義組

 upstream webapp {
        server 172.16.10.3;
        server 172.16.10.4;
}
vim /etc/nginx/conf.d/test.conf    #注意:先將默認(rèn)的default去掉唯灵,要不測試會(huì)報(bào)錯(cuò)
server {
        listen 80 default;
        server_nametest.io;
        location / {
                proxy_pass http://webapp;
        }
}
nginx -t
nginx -s reload

2.在兩臺(tái)調(diào)度器上贾铝,修改keepalived配置文件:
先將vrrp_instance VI_1和vrrp_instance VI_2這兩個(gè)上下文中的virtual_server先注釋掉(virtual_server就是lvs的配置段,注釋掉以防和nginx段沖突)
然后在global段中定義nginx檢測功能,這段的意思就是當(dāng)檢測到nginx服務(wù)不存在時(shí),就將這個(gè)調(diào)度器的權(quán)重減去10垢揩,注意減去的權(quán)重不能小于主和備的差玖绿,不然減去之后主調(diào)度器的權(quán)重還是表備用的高,如下:

vrrp_script chk_nginx {
        script "killall -o nginx"
        interval 2
        weight -10
        fall 2
        rise 2
       }

然后在兩個(gè)vrrp_instance中,都調(diào)用nginx檢測功能:
在vrrp_instance VI_1和2中都加入這段內(nèi)容

 track_script {
        chk_nginx
        }

然后關(guān)閉keepalived,再啟動(dòng)進(jìn)行測試叁巨,兩個(gè)ip交替出現(xiàn)證明實(shí)驗(yàn)成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斑匪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锋勺,更是在濱河造成了極大的恐慌蚀瘸,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庶橱,死亡現(xiàn)場離奇詭異贮勃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)悬包,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門衙猪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人布近,你說我怎么就攤上這事垫释。” “怎么了撑瞧?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵棵譬,是天一觀的道長。 經(jīng)常有香客問我预伺,道長订咸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任酬诀,我火速辦了婚禮脏嚷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞒御。我一直安慰自己父叙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布肴裙。 她就那樣靜靜地躺著趾唱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜻懦。 梳的紋絲不亂的頭發(fā)上甜癞,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音宛乃,去河邊找鬼悠咱。 笑死蒸辆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乔煞。 我是一名探鬼主播吁朦,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼柒室,長吁一口氣:“原來是場噩夢啊……” “哼渡贾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雄右,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤空骚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后擂仍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囤屹,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年逢渔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肋坚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肃廓,死狀恐怖智厌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盲赊,我是刑警寧澤铣鹏,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站哀蘑,受9級特大地震影響诚卸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绘迁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一合溺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缀台,春花似錦棠赛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至依疼,卻和暖如春痰腮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背律罢。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工膀值, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棍丐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓沧踏,卻偏偏與公主長得像歌逢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子翘狱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Nginx+Keepalived實(shí)現(xiàn)站點(diǎn)高可用 公司內(nèi)部 OA 系統(tǒng)要做線上高可用秘案,避免單點(diǎn)故障,所以計(jì)劃使用2臺(tái)...
    meng_philip123閱讀 1,903評論 2 18
  • 一潦匈、高可用集群 (一)提升系統(tǒng)高可用性的解決方案:冗余(redundant) 工作模式active/passive...
    哈嘍別樣閱讀 1,725評論 2 5
  • 當(dāng)前大多數(shù)的互聯(lián)網(wǎng)系統(tǒng)都使用了服務(wù)器集群技術(shù)未舟,集群是將相同服務(wù)部署在多臺(tái)服務(wù)器上構(gòu)成一個(gè)集群整體對外提供服務(wù),這些...
    jiangmo閱讀 12,873評論 3 36
  • 我是微商掂为,頭像是我本人?我的店在手機(jī)上裕膀,我的貨都在我家?微信起于微,立于信菩掏,?微商時(shí)代賣的是產(chǎn)品魂角, 體現(xiàn)的是人品,...
    瑞瑞28閱讀 482評論 0 0
  • 今天與母親聊了相對于平時(shí)更多的話題 一如既往還是關(guān)于父親的 還是在說父親的不足之處 已經(jīng)記不清這是第幾次聽母親這樣...
    請輸入您的閱讀 242評論 0 0