使用keepalived搭建雙機熱備高可用一覽

2021-02-13 碼農讀書

很多時候大家為了部署高可用方案都是前端配一個 nginx,如果nginx掛掉怎麼辦,比如下面這張圖:

你可以清楚的看到,如果 192.168.2.100 這臺機器掛掉了,那麼整個集群就下線了,這個問題該怎麼解決呢???簡單的想想確實不大好處理,因為你的前端請求總得要訪問一個ip地址,對吧。。這個問題怎麼破呢?

一:問題分析

如果你有一些網絡底子的話,就會明白,你給一個不在本網段的機器發送請求的話,這個請求會先經過你的網關IP,然後通過網關IP傳給對方的網關IP,然後網關IP會將請求轉給它所在區域網的主機,當然我的網關IP和對方的網關IP之間可能有很多跳的路由地址,大概的流程就是下面這樣:

如果你不信的話,可以用 tracert 看看你到 www.ctrip.com 的路由總過程。

從上圖中可以看到,從我當前主機到 ctrip.com 一共有20跳,第一條是192.168.2.1,這個就是我的路由器IP,也就是我的網關IP。

二:虛擬路由冗餘協議

好了,說了這麼多有什麼用呢?其實大家仔細觀察這張圖,你會想我能不能在網關IP上做一些手腳呢?可喜的是如今的路由器基本上都支持一個叫做VRRP(虛擬路由冗餘協議),這一協議的作用你可以理解成把網關IP虛擬化成一個網關IP集群,就好像獸族劍聖的鏡像技能,這裡面有master,也有slave,然後區域網內的主機設置的都是虛擬的masterIP(VIP),剛好 keepealived 就是一個實現 VRRP 的一款應用程式,你需要,我專業,大家就這樣走到一塊了。

三:keepalived搭建一覽1. 下載

從官網上找到當前最新的版本1.4.2   http://www.keepalived.org/software/keepalived-1.4.2.tar.gz。

配置機器:192.168.23.156 【centos】 和 192.168.23.157 【centos】


[root@localhost app]# wget http://www.keepalived.org/software/keepalived-1.4.2.tar.gz
--2018-03-10 04:04:06-- http://www.keepalived.org/software/keepalived-1.4.2.tar.gz
Resolving www.keepalived.org (www.keepalived.org)... 37.59.63.157, 2001:41d0:8:7a9d::1
Connecting to www.keepalived.org (www.keepalived.org)|37.59.63.157|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 738096 (721K) [application/x-gzip]
Saving to: 『keepalived-1.4.2.tar.gz』

100%[==================================================================>] 738,096 5.24KB/s in 4m 44s

2. 然後把相關依賴裝起來:yum install -y openssl openssl-devel。


[root@localhost app]# yum install -y openssl openssl-devel
Loaded plugins: fastestmirror, langpacks
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#52 - "Empty reply from server"
base | 3.6 kB 00:00:00
epel/x86_64/metalink | 7.8 kB 00:00:00
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=extras&infra=stock error was
14: curl#52 - "Empty reply from server"
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
updates/7/x86_64/primary_db | 6.9 MB 00:01:10

3. 接下來繼續解壓,最後安裝三板斧:./configure --prefix=/usr/app/keepalived && make && make install。


[root@localhost app]# tar -zxvf keepalived-1.4.2.tar.gz
[root@localhost app]# ls
keepalived-1.4.2 keepalived-1.4.2.tar.gz
[root@localhost app]# cd keepalived-1.4.2
[root@localhost keepalived-1.4.2]# ls
aclocal.m4 bin_install configure COPYING genhash keepalived Makefile.am README.md
ar-lib ChangeLog configure.ac depcomp INSTALL keepalived.spec.in Makefile.in snap
AUTHOR compile CONTRIBUTORS doc install-sh lib missing TODO
[root@localhost keepalived-1.4.2]#
[root@localhost keepalived-1.4.2]# ./configure --prefix=/usr/app/keepalived && make && make install

安裝好了之後,你就會看到如下的內容,那就恭喜你,安裝成功了。


Keepalived configuration
----
Keepalived version : 1.4.2
Compiler : gcc
Preprocessor flags :
Compiler flags : -Wall -Wunused -Wstrict-prototypes -Wextra -g -O2 -fPIE -D_GNU_SOURCE
Linker flags : -pie
Extra Lib : -lcrypto -lssl
Use IPVS Framework : Yes
IPVS use libnl : No
IPVS syncd attributes : No
IPVS 64 bit stats : No
fwmark socket support : Yes
Use VRRP Framework : Yes
Use VRRP VMAC : Yes
Use VRRP authentication : Yes
With ip rules/routes : Yes
SNMP vrrp support : No
Build genhash : Yes
Build documentation : No

4. 接下來我們改一下配置文件

安裝好了之後,在/usr/app/keepalived/etc/keepalived 目錄下有一個 keepalived.conf文件,現在你要做的事情就是將它copy到/etc/keepalived文件夾下,然後在192.168.23.156 機器中的配置文件,修改如下:


global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id NodeA
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.200
}
}

其中要注意的就是:

<1> priority 150

     節點的優先級,master要比slave高。

<2> interface ens33

     ens33大家可以通過ipconfig查看一下自己的網卡。


[root@localhost ~]# ifconfig

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.23.157 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::20c:29ff:fe54:4f5a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:54:4f:5a txqueuelen 1000 (Ethernet)
RX packets 10899 bytes 11349012 (10.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5575 bytes 599717 (585.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 4 bytes 340 (340.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 340 (340.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

<3> virtual_ipaddress 192.168.23.200

設置好虛擬IP(VIP)為:192.168.23.200, 同樣的道理,在 192.168.23.157 設置如下:


global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id NodeB
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.23.200
}
}

6. 接下來就可以啟動keepalived了。


[root@localhost sbin]# ./keepalived -D
[root@localhost sbin]# ps -ef | grep keepalived
root 4661 1 0 05:41 ? 00:00:00 ./keepalived -D
root 4662 4661 0 05:41 ? 00:00:00 ./keepalived -D
root 4663 4661 0 05:41 ? 00:00:00 ./keepalived -D
root 4673 4300 0 05:41 pts/0 00:00:00 grep --color=auto keepalived

五:檢測


C:\Users\hxc>arp -a

接口: 192.168.23.1 --- 0x6
Internet 地址 物理地址 類型
192.168.23.156 00-0c-29-75-7e-20 動態
192.168.23.157 00-0c-29-54-4f-5a 動態
192.168.23.200 00-0c-29-75-7e-20 動態
192.168.23.255 ff-ff-ff-ff-ff-ff 靜態
224.0.0.22 01-00-5e-00-00-16 靜態
224.0.0.251 01-00-5e-00-00-fb 靜態
224.0.0.252 01-00-5e-00-00-fc 靜態
239.11.20.1 01-00-5e-0b-14-01 靜態
239.255.255.250 01-00-5e-7f-ff-fa 靜態
255.255.255.255 ff-ff-ff-ff-ff-ff 靜態


C:\Users\hxc>arp -a

接口: 192.168.23.1 --- 0x6
Internet 地址 物理地址 類型
192.168.23.156 00-0c-29-75-7e-20 動態
192.168.23.157 00-0c-29-54-4f-5a 動態
192.168.23.200 00-0c-29-54-4f-5a 動態
192.168.23.255 ff-ff-ff-ff-ff-ff 靜態
224.0.0.22 01-00-5e-00-00-16 靜態
224.0.0.251 01-00-5e-00-00-fb 靜態
224.0.0.252 01-00-5e-00-00-fc 靜態
239.11.20.1 01-00-5e-0b-14-01 靜態
239.255.255.250 01-00-5e-7f-ff-fa 靜態
255.255.255.255 ff-ff-ff-ff-ff-ff 靜態

好了,這個就是本篇所說的所有內容,希望對您有幫助。

相關焦點

  • 黑馬程式設計師:keepalived實現雙機熱備
    高可用(High Avalilability,HA),其實兩種不同的含義:廣義來講,是指整個系統的高可用行,狹義的來講就是之主機的冗餘和接管, 它與HeartBeat RoseHA 實現相同類似的功能,都可以實現服務或者網絡的高可用,但是又有差別,HeartBeat是一個專業的、功能完善的高可用軟體,它提供了HA 軟體所需的基本功能,比如:心跳檢測、資源接管,檢測集群中的服務,在集群節點轉移共享IP
  • 高可用服務之Keepalived基礎入門
    前面我們聊了聊高可用集群corosync+pacemaker的相關概念以及相關工具的使用和說明,回顧請參考https://www.cnblogs.com/qiuhom-1874/category/1838133.html;今天我們說一下高可用服務keepalived;keepalived相對corosync+pacemaker
  • 一文帶你認識keepalived,再帶你通關LVS+Keepalived!
    Keepalived框架可以獨立使用,也可以一起使用以提供彈性基礎架構。keepalived支持多組VIP的操作,就是一臺伺服器上可以部署多臺VIP,可以理解為每個VIP是一組操作。2、keepal我們的服務是不是就不可用了呢?那就來看看我們keepalived的使用場景了。
  • MySQL高可用實戰,親身操做過,建議直接收藏備用!
    起初,多臺伺服器可以通過反向代理共同對外提供服務,當某一臺伺服器出現故障或者其上的服務不可用時,其他服務可以立刻進行接管,對外提供服務,通常可以使用Nginx,HaProxy,LVS等代理實現服務的高可用。但是,Nginx,HaProxy,LVS本身也是單點,需要實現高可用,後面介紹Web應用高可用時會詳細介紹。
  • Keepalived 2.0.10 發布,C 語言編寫的路由軟體
    Disable fopen_safe() append mode by default If a non privileged user creates /tmp/keepalived.log and has it open for read (e.g. tail -f), then even though keepalived will change the
  • Keepalived 2.0.14 發布,C 語言編寫的路由軟體
    To avoid syntax error, modify keepalived.spec.in.* When uninstall keepalived with init upstart, stop keepalived process.* Fix type re LOG_INGO should be LOG_INFO * 6git stash --cached.
  • 雙機熱備軟體哪個好?中興新支點NewStartHA等雙機熱備軟體推薦
    伺服器維護和管理是企業健康穩定運營的一項重要工作,而雙機熱備可以提供伺服器的高可用性。但是成熟好用的雙機熱備軟體有哪些呢?下面就給大家推薦幾款。PrimeClusterHAPrimeClusterHA(PCLHA)是德國富士通-西門子計算機公司提供的支持雙機熱備和多節點集群的高可用管理軟體。PCLHA可為任何類型的應用、服務或數據提供最通用的高可用性環境。
  • 如何使用OBS Studio實現流暢的遊戲單機直播和雙機直播
    下列直播搭建方案供有需要的朋友自取使用。方案使用採集設備如果你需要將高於全高清的解析度向下變換到1080p60進行錄製和直播,使用採集棒可以有效地降低直播軟體對CPU的佔用,因為解析度向下變換是由採集棒硬體處理的,不會額外佔用CPU,從而提高遊戲畫面和直播畫面的流暢度。同時,通過連接在採集卡上的麥克風,主播還可對遊戲進行解說並同視頻一起進行直播。(如果直播時無需配語音解說,可以使用美樂威USB Capture HDMI Gen 2採集棒。)
  • Keepalived 2.0.7 發布,C 語言編寫的路由軟體
    完整更新內容請查閱:http://www.keepalived.org/changelog.html下載地址:http://www.keepalived.org/download.html
  • 如何使用Hearbeat和PostgreSQL資料庫實現ippbx雙機熱備示例
    今天,我們分享一個通過使用心跳機制和資料庫實現IPPBX的熱備處理的典型案例。  圖例來自於網際網路資源  概述  隨著通信全IP化的進程,現代企業中基於IP的語音、視頻、會議、融合通信已廣泛應用,企業部署的IPPBX作為通信系統最核心的部分,如何保證高可靠性與安全性尤為重要,也成了考驗系統能力的一種標準。
  • Keepalived for Linux 1.2.10 發布
    支持基礎 VMAC 接口的 xmit VRRP 包調整了 VRRP 多播組修復了非故障狀態下的 VRRP socket 同步代碼整理與優化keepalived
  • 《煮糊了2》可用廚師一覽 煮糊了2有哪些廚師?
    18183首頁 《煮糊了2》可用廚師一覽 煮糊了2有哪些廚師? 《煮糊了2》可用廚師一覽 煮糊了2有哪些廚師?
  • 北師港浸大綜合評價「雙機位」測試通知
    測試的目的是使考生順利參加正式入學測試,考生需要按學校規定的時間完成「雙機位」軟硬體測試。考生如未參加「雙機位」模式軟硬體測試,或測試未達到要求的,由此產生的對入學測試的一切後果由考生自行承擔。「雙機位」軟硬體測試具體安排如下:1.
  • 元氣騎士2020禮包碼合集 八月可用禮包碼一覽
    元氣騎士2020禮包碼合集 八月可用禮包碼一覽。很多玩家都想知道元氣騎士這款遊戲內有哪些兌換碼呢,下面小編帶大家一起看看吧。 666鑽石) imobsessiont (1888鑽石) nerd7z (鐵礦*3,木材*3,1288鑽石) f9z3ha1sun (1000鑽石) siont74scj (600鑽石) sunforget (1111鑽石) 以上就是小編給大家分享的今年八月得最新禮包碼了,各位玩家們可以拿去在於遊戲內將禮包碼輸入就可以使用了
  • 《文明重啟》捲簾門怎麼使用 捲簾門作用一覽
    捲簾門作用一覽。捲簾門怎麼製作?作為一名建築專家,了解家園建築材料有助於更好的搭建,降低被他人突破和抄家的概率。因此,為了揭開大夥的疑惑,以下我們帶來了捲簾門的詳細解讀,快來看看... 文明重啟捲簾門怎麼用?捲簾門作用一覽。捲簾門怎麼製作?
  • 你的婚禮攝像是選單機拍攝,還是雙機位拍攝
    現在很多新人操辦婚禮時,對攝像拍攝用單機或者選雙機不是很清楚,單機和雙機有什麼區別,雙機有什麼優勢呢?首先來說說單機拍攝,由於只有一個機位,那麼攝像師就會面臨很多「顧此失彼」的局面。雙機拍攝最重要的就是可以同時拍攝同一個場景畫面,一個拍全景展示,一個拍局部特寫;雙機可以同時拍攝不同的場景,比如新人交換戒指環節,一號機拍攝新人,二號機可以拍攝此時新人的父母或是賓客們那種喜悅;雙機拍攝可以分別記錄新郎和新娘婚禮前的準備,經過後期剪輯後,讓整個婚禮的細節更加精彩。
  • 解放軍「雙機巡臺」常態化,意味著什麼?
    解放軍「雙機巡臺」常態化,意味著什麼?有觀點指出,解放軍空警-500加上運-8反潛機「雙機作業」已經成為「新常態」。  在報導解放軍相關動態時,島內綠媒有意加入美國因素,稱當天同一時間,在臺「西南空域」有一架美國海軍P-8A「海神」反潛巡邏機。
  • 如何使用淘點金快速搭建比價網站
    上期介紹了單品和店鋪組件的使用案例,本期將為大家介紹SPU比價組件, 可能有些淘寶客對SPU不是很理解,簡單介紹一下SPU: spu是標類商品的一個概念,所謂標類簡單理解就是有型號的商品,比如iphone5、小米3。