自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

高可用,少不了影子節(jié)點(diǎn)!

開發(fā) 架構(gòu)
無論你后端的服務(wù)部署的多么復(fù)雜,最后都會(huì)聚焦到網(wǎng)關(guān)和負(fù)載均衡上。比如nginx、HAProxy,更有甚者用上了LVS。但這些負(fù)載均衡組件,又是如何能保證它的高可用呢?

[[402051]]

本文轉(zhuǎn)載自微信公眾號(hào)「小姐姐味道」,作者小姐姐養(yǎng)的狗。轉(zhuǎn)載本文請(qǐng)聯(lián)系小姐姐味道公眾號(hào)。

現(xiàn)在的服務(wù),都要求7x24小時(shí)不間斷運(yùn)行。就憑這一點(diǎn),就可以看出機(jī)器,比大多數(shù)996社畜能熬。

無論你后端的服務(wù)部署的多么復(fù)雜,最后都會(huì)聚焦到網(wǎng)關(guān)和負(fù)載均衡上。比如nginx、HAProxy,更有甚者用上了LVS。但這些負(fù)載均衡組件,又是如何能保證它的高可用呢?

這不得不提一下Keepalived這個(gè)組件。使用它,你可以為你的服務(wù),做一個(gè)影子節(jié)點(diǎn)。使用虛IP漂移的方式,你的服務(wù)宕機(jī)的時(shí)候,影子節(jié)點(diǎn)就能夠瞬間頂上去,能為原服務(wù)的替身。

但大多數(shù)時(shí)候,它就靜靜的呆在哪里,什么都不做。真的像一個(gè)影子一樣。

1. 小小體驗(yàn)一把!

在開始之前,可以使用yum一鍵安裝。keepalived雖然古老但是一直保持更新,最新的版本是2.2.2,讓人用起來非常放心。

  1. yum install keepalived -y 

首先,看一下自己機(jī)器的網(wǎng)卡。由于我這里用的是虛擬機(jī),然后有多塊的網(wǎng)卡,我們選用的是名字叫做enp0s8的一塊網(wǎng)卡去做接下來的操作。在命令行輸入ip addr就可以找到它。

為了避免額外信息的干擾,我們做了一個(gè)干干凈凈的配置文件,它的位置在/etc/keepalived/keepalived.conf。這個(gè)配置文件的意思是,我們將對(duì)enp0s8這塊網(wǎng)卡,再分配一個(gè)192.168.56.128的地址。使得后端的服務(wù),能夠通過這個(gè)ip地址訪問,也能夠通過原來的ip地址訪問。

  1. global_defs { 
  2.     vrrp_version 3 
  3. vrrp_instance VI_1 { 
  4.     interface                  enp0s8 
  5.     priority                   101 
  6.     virtual_router_id          51 
  7.     advert_int                 1 
  8.     accept 
  9.     garp_master_refresh        5 
  10.     garp_master_refresh_repeat 1 
  11.     virtual_ipaddress { 
  12.         192.168.56.128 
  13.     } 

為了模擬后端的服務(wù),我們使用python命令簡單的啟動(dòng)了一個(gè)小服務(wù)。

  1. python -m SimpleHTTPServer 

然后,把keepalived啟動(dòng)。

  1. systemctl start keepalived 

此時(shí),通過這個(gè)新加的ip地址,我們能夠訪問后端的服務(wù)了。

同時(shí),我們?cè)俅尾榭捶?wù)器的網(wǎng)卡,發(fā)現(xiàn)被綁定的網(wǎng)卡上,已經(jīng)多了一個(gè)虛擬地址。這很好啊,證明了我們第一步操作非常的棒。

2. 讓vip做一下漂移!

事實(shí)證明,每塊網(wǎng)卡上,是可以綁定多個(gè)ip地址的。只不過我們平常使用的方式就是綁定一個(gè),所以養(yǎng)成了一個(gè)不正確的直觀印象。

我們成功的通過keepalived,讓網(wǎng)卡多了一個(gè)地址。但漂移體現(xiàn)在何方呢?又該如何去做?

為了達(dá)到這個(gè)目的,我們對(duì)剛才的8000端口,做一個(gè)高可用的判定。

  1. n=`netstat -ltpn | grep 8000 | wc -l` 
  2.  
  3. if [ $n -eq '0' ]; then 
  4.  echo "start up server" 
  5.  nohup python -m SimpleHTTPServer &  
  6. fi 

把上面的腳本,保存成check.sh,然后放在root目錄下。它將在8000端口不再監(jiān)聽的時(shí)候,重新把它啟動(dòng)。

我們對(duì)keepalived的配置文件,進(jìn)行一點(diǎn)點(diǎn)微小的改造。

  1. global_defs { 
  2.     vrrp_version 3 
  3.  
  4. vrrp_script check_server { 
  5.     script "/root/check.sh" 
  6.     interval 2 
  7.     weight -20 
  8.  
  9. vrrp_instance VI_1 { 
  10.     state BACKUP 
  11.     nopreempt 
  12.     interface                  enp0s8 
  13.     priority                   101 
  14.     virtual_router_id          51 
  15.     advert_int                 1 
  16.     accept 
  17.     garp_master_refresh        5 
  18.     garp_master_refresh_repeat 1 
  19.     
  20.     track_script { 
  21.     check_server 
  22.     } 
  23.     virtual_ipaddress { 
  24.         192.168.56.128 
  25.     } 

在配置文件中,我們加入了剛才的檢查腳本,它將每2秒鐘檢查一次,如果進(jìn)程死亡了,那就扶它起來。如果啟動(dòng)失敗了,則將權(quán)重降低20。

接下來,我們?cè)趖rack_script上,正式掛載上這個(gè)腳本。然后,使用非搶占模式nopreempt來啟動(dòng)keepalived。

做好這一切之后,我們?cè)贉?zhǔn)備一臺(tái)虛擬機(jī),然后做相同的配置。除了ip的不同,其他的都是一樣的。這次是一臺(tái)102的機(jī)器。

接下來,就可以試驗(yàn)vip的漂移了??梢宰鋈缦聹y試。

殺掉機(jī)器A的python進(jìn)程,vip:8000依然能夠訪問,python進(jìn)程會(huì)再次被拉起

殺掉機(jī)器A的keepalived進(jìn)程,vip:8000依然能訪問,此時(shí)虛擬ip能夠在B機(jī)器上查看。此所謂漂移。

重復(fù)這個(gè)過程,會(huì)發(fā)現(xiàn),除非機(jī)器A和B的keepalived同時(shí)死掉了,服務(wù)才無法訪問。這就很好的完成了高可用。

3. VRRP

當(dāng)然,弊端也是有的。

keepalived是基于vrrp實(shí)現(xiàn)的。它能夠做到高可用,但無法做到負(fù)載均衡(需要結(jié)合lvs等其他應(yīng)用)。同一時(shí)刻,只會(huì)有同一臺(tái)機(jī)器對(duì)外提供服務(wù),另外一臺(tái)會(huì)空跑,也叫做影子節(jié)點(diǎn),這是一種比較大的浪費(fèi)。

雖然如此,keepalived的應(yīng)用也非常廣泛,因?yàn)樗鼘?shí)在是太簡單了。典型的使用場景如下,但也有土豪公司會(huì)啟用多于1個(gè)的備份節(jié)點(diǎn)。所以keepalived通常會(huì)作為負(fù)載均衡器的高可用方案。

VRRP全稱Vritrual Router Redundancy Protocol(虛擬路由冗余協(xié)議)。從上面的示例可以看出,健康檢查和失敗切換是keepalived的兩大核心功能。它的一大特性,就是虛擬,虛擬就是邏輯概念的意思,這個(gè)路由器并不存在,而是分散在各個(gè)機(jī)器上的軟路由。

路由又分為主路由(master)和備份路由(backup),正常運(yùn)行時(shí),master會(huì)一直發(fā)送vrrp的廣播包,告訴別人自己還活著。在發(fā)生問題的時(shí)候,會(huì)通過選舉機(jī)制進(jìn)行選舉。一般情況下,只有一個(gè)backup則選無可選。

它的定期ICMP數(shù)據(jù)包,是工作在Layer3,也就是IP層的,使用tcpdump可以抓取到它的廣播數(shù)據(jù)。

End

Keepalived應(yīng)用非常廣泛,尤其對(duì)于入口端的高可用建設(shè),可以說是必備的。如果你喜歡這樣的影子如影隨從,或者想要體驗(yàn)替身的感覺,那么Keepalived正好適合你。

作者簡介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個(gè)人微信xjjdog0,歡迎添加好友,進(jìn)一步交流。

責(zé)任編輯:武曉燕 來源: 小姐姐味道
相關(guān)推薦

2021-01-08 13:00:12

CPU處理器軟件

2020-02-03 09:29:32

JavaScript代碼斷點(diǎn)

2023-10-14 15:36:14

PodKubernetes

2023-02-20 14:37:25

2017-07-06 12:58:13

算法MATLAB

2017-01-03 19:01:33

WIFI網(wǎng)絡(luò)信號(hào)路由器

2019-08-30 08:51:48

物聯(lián)網(wǎng)產(chǎn)品盈利物聯(lián)網(wǎng)

2022-10-27 15:03:23

2016-07-28 10:34:12

云計(jì)算

2017-09-14 18:33:29

Python編程語言開發(fā)

2023-07-10 08:50:49

ESLint格式化工具

2018-08-21 16:54:03

顯示器

2018-09-04 11:09:58

容災(zāi)災(zāi)備系統(tǒng)

2017-12-07 10:07:36

容災(zāi)備份

2010-09-06 13:30:47

DB2數(shù)據(jù)庫優(yōu)化

2018-03-13 09:00:01

IT架構(gòu)

2022-03-19 12:16:49

Redis高并發(fā)系統(tǒng)集群部署

2010-08-04 14:49:52

2019-12-16 14:53:44

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2025-03-31 10:40:52

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)