成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

高可用,少不了影子節點!

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

[[402051]]

本文轉載自微信公眾號「小姐姐味道」,作者小姐姐養的狗。轉載本文請聯系小姐姐味道公眾號。

現在的服務,都要求7x24小時不間斷運行。就憑這一點,就可以看出機器,比大多數996社畜能熬。

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

這不得不提一下Keepalived這個組件。使用它,你可以為你的服務,做一個影子節點。使用虛IP漂移的方式,你的服務宕機的時候,影子節點就能夠瞬間頂上去,能為原服務的替身。

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

1. 小小體驗一把!

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

  1. yum install keepalived -y 

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

為了避免額外信息的干擾,我們做了一個干干凈凈的配置文件,它的位置在/etc/keepalived/keepalived.conf。這個配置文件的意思是,我們將對enp0s8這塊網卡,再分配一個192.168.56.128的地址。使得后端的服務,能夠通過這個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.     } 

為了模擬后端的服務,我們使用python命令簡單的啟動了一個小服務。

  1. python -m SimpleHTTPServer 

然后,把keepalived啟動。

  1. systemctl start keepalived 

此時,通過這個新加的ip地址,我們能夠訪問后端的服務了。

同時,我們再次查看服務器的網卡,發現被綁定的網卡上,已經多了一個虛擬地址。這很好啊,證明了我們第一步操作非常的棒。

2. 讓vip做一下漂移!

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

我們成功的通過keepalived,讓網卡多了一個地址。但漂移體現在何方呢?又該如何去做?

為了達到這個目的,我們對剛才的8000端口,做一個高可用的判定。

  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端口不再監聽的時候,重新把它啟動。

我們對keepalived的配置文件,進行一點點微小的改造。

  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秒鐘檢查一次,如果進程死亡了,那就扶它起來。如果啟動失敗了,則將權重降低20。

接下來,我們在track_script上,正式掛載上這個腳本。然后,使用非搶占模式nopreempt來啟動keepalived。

做好這一切之后,我們再準備一臺虛擬機,然后做相同的配置。除了ip的不同,其他的都是一樣的。這次是一臺102的機器。

接下來,就可以試驗vip的漂移了。可以做如下測試。

殺掉機器A的python進程,vip:8000依然能夠訪問,python進程會再次被拉起

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

重復這個過程,會發現,除非機器A和B的keepalived同時死掉了,服務才無法訪問。這就很好的完成了高可用。

3. VRRP

當然,弊端也是有的。

keepalived是基于vrrp實現的。它能夠做到高可用,但無法做到負載均衡(需要結合lvs等其他應用)。同一時刻,只會有同一臺機器對外提供服務,另外一臺會空跑,也叫做影子節點,這是一種比較大的浪費。

雖然如此,keepalived的應用也非常廣泛,因為它實在是太簡單了。典型的使用場景如下,但也有土豪公司會啟用多于1個的備份節點。所以keepalived通常會作為負載均衡器的高可用方案。

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

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

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

End

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

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

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2020-02-03 09:29:32

JavaScript代碼斷點

2021-01-08 13:00:12

CPU處理器軟件

2023-10-14 15:36:14

PodKubernetes

2023-02-20 14:37:25

2017-07-06 12:58:13

算法MATLAB

2019-08-30 08:51:48

物聯網產品盈利物聯網

2017-01-03 19:01:33

WIFI網絡信號路由器

2022-10-27 15:03:23

2016-07-28 10:34:12

云計算

2017-09-14 18:33:29

Python編程語言開發

2023-07-10 08:50:49

ESLint格式化工具

2018-09-04 11:09:58

容災災備系統

2018-08-21 16:54:03

顯示器

2017-12-07 10:07:36

容災備份

2022-03-19 12:16:49

Redis高并發系統集群部署

2010-09-06 13:30:47

DB2數據庫優化

2018-03-13 09:00:01

IT架構

2010-08-04 14:49:52

2019-12-16 14:53:44

機器學習人工智能計算機

2025-03-31 10:40:52

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产成人精品在线 | 国产欧美精品一区 | 日韩精品二区 | 国产综合区 | 日日操视频 | 黄色毛片网站在线观看 | 国产精品久久久久久久久免费桃花 | 日韩欧美三区 | 国产精品欧美精品 | 亚洲综合婷婷 | 国产精品18久久久久久久 | 亚洲国产成人精品久久 | 欧美电影网 | 中文字幕韩在线第一页 | 亚洲精品久久久久久久不卡四虎 | 亚洲精选一区 | 欧美在线a| 日韩成人在线视频 | 欧美在线观看一区 | 欧美日韩国产一区二区三区 | 亚洲精品无 | 青草久久免费视频 | 久久综合久色欧美综合狠狠 | 久久免费小视频 | 98成人网 | 午夜av一区二区 | 一呦二呦三呦国产精品 | 国产乱人伦精品一区二区 | 日韩免费一区 | 日韩中文字幕一区二区 | 精品国产免费一区二区三区五区 | 欧美久久久久久久久 | 久草综合在线 | 国产一区二区三区四区五区加勒比 | 亚洲视频国产视频 | 精品一区二区在线看 | 精品视频一区二区三区在线观看 | 欧洲成人 | 久久一区二 | 久久国产精品免费一区二区三区 | 99精品福利视频 |