使用keepalived實現雙機熱備

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

通常說的雙機熱備是指兩臺機器都在運行,但并不是兩臺機器都同時在提供服務。
當提供服務的一臺出現故障的時候,另外一臺會馬上自動接管并且提供服務,而且切換的時間非常短。
下面來以keepalived結合tomcat來實現一個web服務器的雙機熱備。
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虛擬路由冗余協議。
在VRRP中有兩組重要的概念:VRRP路由器和虛擬路由器,主控路由器和備份路由器。
VRRP路由器是指運行VRRP的路由器,是物理實體,虛擬路由器是指VRRP協議創建的,是邏輯概念。一組VRRP路由器協同工作,共同構成一臺虛擬路由器。 Vrrp中存在著一種選舉機制,用以選出提供服務的路由即主控路由,其他的則成了備份路由。當主控路由失效后,備份路由中會重新選舉出一個主控路由,來繼續工作,來保障不間斷服務。
我們在本文中的測試環境如下
兩臺物理服務器和一個虛擬服務器(vip):
master:redhat 2.6.18-53.el5? 192.168.8.4
backup: redhat 2.6.18-53.el5? 192.168.8.6
vip: 192.168.8.100
測試環境的網絡topology圖如下:

節點A 192.168.8.4 (主節點), 節點B 192.168.8.6(備用節點),虛擬IP(對外提供服務的IP 192.168.8.100)
在這種模式下,虛擬IP在某時刻只能屬于某一個節點,另一個節點作為備用節點存在。
當主節點不可用時,備用節點接管虛擬IP(即虛擬IP漂移至節點B),提供正常服務。
keepalived的原理可以這樣簡單理解:
keepalived安裝在兩臺物理服務器上,并相互監控對方是否在正常運行。
當節點A正常的時候:節點A上的keepalived會將下面的信息廣播出去:
192.168.8.100 這個IP對應的MAC地址為節點A網卡的MAC地址
圖中的其它電腦如客戶端和NodeB會更新自己的ARP表,對應192.168.8.100的MAC地址=節點A網卡的MAC地址。
當節點A發生故障的時候,節點B上的keepalived會檢測到,并且將下面的信息廣播出去:
192.168.8.100 這個IP對應的MAC地址為節點B網卡的MAC地址
圖中的其它電腦如客戶端會更新自己的ARP表,對應192.168.8.100的MAC地址=節點B網卡的MAC地址。

1,在主備機器上安裝keepalived,
步驟如下:下載keepalived-1.1.15.tar.gz,然后解壓安裝
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure
#make
#make install
2,配置keepalived
配置中的state MASTER決定了節點為主節點
priority決定了優先級,比如在有多個備用節點的時候,主節點故障后優先級值大的接管。
主節點的配置如下:

global_defs?{router_id?NodeA
}
vrrp_instance?VI_1?{state?MASTER????#設置為主服務器interface?eth0??#監測網絡接口virtual_router_id?51??#主、備必須一樣priority?100???#(主、備機取不同的優先級,主機值較大,備份機值較小,值越大優先級越高)advert_int?1???#VRRP?Multicast廣播周期秒數authentication?{auth_type?PASS??#VRRP認證方式,主備必須一致auth_pass?1111???#(密碼)
}
virtual_ipaddress?{192.168.8.100/24??#VRRP?HA虛擬地址
}

備用節點的配置如下:

global_defs?{router_id?NodeB
}
vrrp_instance?VI_1?{state?BACKUP????#設置為主服務器interface?eth0??#監測網絡接口virtual_router_id?51??#主、備必須一樣priority?90???#(主、備機取不同的優先級,主機值較大,備份機值較小,值越大優先級越高)advert_int?1???#VRRP?Multicast廣播周期秒數authentication?{auth_type?PASS??#VRRP認證方式,主備必須一致auth_pass?1111???#(密碼)
}
virtual_ipaddress?{192.168.8.100/24??#VRRP?HA虛擬地址
}

3,啟動keepalived:
keepalived -D -f /usr/local/etc/keepalived/keepalived.conf
查看log消息:
tail -f /var/log/messages
啟動主節點A后的日志為:會廣播ARP消息

[root@srv4?~]#?tail?-f?/var/log/messages
Sep?20?01:45:29?srv4?Keepalived_vrrp:?Configuration?is?using?:?34546?Bytes
Sep?20?01:45:29?srv4?Keepalived_vrrp:?VRRP?sockpool:?[ifindex(2),?proto(112),?fd(8,9)]
Sep?20?01:45:30?srv4?Keepalived_vrrp:?VRRP_Instance(VI_1)?Transition?to?MASTER?STATE
Sep?20?01:45:31?srv4?Keepalived_vrrp:?VRRP_Instance(VI_1)?Entering?MASTER?STATE
Sep?20?01:45:31?srv4?Keepalived_vrrp:?VRRP_Instance(VI_1)?setting?protocol?VIPs.
Sep?20?01:45:31?srv4?Keepalived_vrrp:?VRRP_Instance(VI_1)?Sending?gratuitous?ARPs?on?eth0?for?192.168.8.100
Sep?20?01:45:31?srv4?Keepalived_vrrp:?Netlink?reflector?reports?IP?192.168.8.100?added
Sep?20?01:45:31?srv4?Keepalived_healthcheckers:?Netlink?reflector?reports?IP?192.168.8.100?added
Sep?20?01:45:31?srv4?avahi-daemon[4029]:?Registering?new?address?record?for?192.168.8.100?on?eth0.
Sep?20?01:45:36?srv4?Keepalived_vrrp:?VRRP_Instance(VI_1)?Sending?gratuitous?ARPs?on?eth0?for?192.168.8.100

通過ip a 命令可以看到192.168.8.100/24綁定到了eth0上

[root@srv4?bin]#?ip?a
1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?16436?qdisc?noqueue?link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00inet?127.0.0.1/8?scope?host?loinet6?::1/128?scope?host?valid_lft?forever?preferred_lft?forever
2:?eth0:?<BROADCAST,MULTICAST,UP,LOWER_UP>?mtu?1500?qdisc?pfifo_fast?qlen?1000link/ether?00:0c:29:50:2d:9d?brd?ff:ff:ff:ff:ff:ffinet?192.168.8.4/24?brd?192.168.8.255?scope?global?eth0inet?192.168.8.100/24?scope?global?secondary?eth0inet6?fe80::20c:29ff:fe50:2d9d/64?scope?link?valid_lft?forever?preferred_lft?forever

啟動備用節點B后的日志為:

Sep?20?01:47:31?hadoopsrv?Keepalived_vrrp:?Configuration?is?using?:?34262?Bytes
Sep?20?01:47:31?hadoopsrv?Keepalived_vrrp:?VRRP_Instance(VI_1)?Entering?BACKUP?STATE
Sep?20?01:47:31?hadoopsrv?Keepalived_vrrp:?VRRP?sockpool:?[ifindex(2),?proto(112),?fd(7,8)]
Sep?20?01:47:31?hadoopsrv?Keepalived:?Starting?VRRP?child?process,?pid=20567

4,在兩臺機器上安裝tomcat,安裝步驟省略
安裝完成后在節點A的機器上創建一個html文件內容如下

this?is?the?test?page
<br>
from?server?192.168.8.4

通過下面的url驗證能夠正常訪問
http://192.168.8.4:8080/test/test.html

安裝完成后在節點B的機器上創建一個html文件內容如下

this?is?the?test?page
<br>
from?server?192.168.8.6

通過下面的url驗證能夠正常訪問
http://192.168.8.6:8080/test/test.html
在主節點,節點A正常的時候通過下面的url訪問
192.168.8.100:8080/test/test.html
返回的內容應該為主節點上的html

this?is?the?test?page
<br>
from?server?192.168.8.4

將節點A的keepalived停止: killall keepalived
通過下面的url訪問
192.168.8.100:8080/test/test.html
返回的內容應該為備用節點上的內容

this?is?the?test?page
<br>
from?server?192.168.8.6

同時查看節點B的日志:發現節點B轉為主節點并且會廣播ARP消息

Sep?20?01:55:44?hadoopsrv?Keepalived_vrrp:?VRRP_Instance(VI_1)?Transition?to?MASTER?STATE
Sep?20?01:55:45?hadoopsrv?Keepalived_vrrp:?VRRP_Instance(VI_1)?Entering?MASTER?STATE
Sep?20?01:55:45?hadoopsrv?Keepalived_vrrp:?VRRP_Instance(VI_1)?setting?protocol?VIPs.
Sep?20?01:55:45?hadoopsrv?Keepalived_vrrp:?VRRP_Instance(VI_1)?Sending?gratuitous?ARPs?on?eth0?for?192.168.8.100
Sep?20?01:55:45?hadoopsrv?avahi-daemon[3769]:?Registering?new?address?record?for?192.168.8.100?on?eth0.
Sep?20?01:55:50?hadoopsrv?Keepalived_vrrp:?VRRP_Instance(VI_1)?Sending?gratuitous?ARPs?on?eth0?for?192.168.8.100

本文的目的主要是演示keepalived實現雙機熱備的功能和過程。
對于應用本身(tomcat)發生錯誤,以及"腦裂"等問題是不能解決的。

轉載于:https://my.oschina.net/ydsakyclguozi/blog/515049

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287377.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287377.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《看聊天記錄都學不會C語言?太菜了吧》(8)牛郎和織女竟有一個孩子?

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…

技術貼:觸摸屏(TP)技術交流

轉載自&#xff1a;易觸網科技 電容式TP的動作原理 PS:電容式TP動作原理是利用人體電流感應來進行的&#xff0c;當人的手指觸摸在TP上&#xff0c;與Panle上的ito電路形成一個耦合電容&#xff08;電容效應&#xff09;&#xff0c;於是手指從觸控點上吸走了一個微小的電流&am…

【遙感物候】植被物候與氣候(氣溫和降水)條件的空間相關性分析

植被生長與氣候的關系最為密切,通過計算植被各個生長季參數和氣溫、降水之間的相關系數可以分析生長季參數的變化與氣溫、降水之間的關系的程度。本文計算30年的植被物候參數和氣候數據之間的相關性,最終效果如下: 目錄 一、相關性分析原理

HttpContext.TraceIdentifier那嚴謹的設計

前言Asp.Net Core中有一個不受人重視的屬性HttpContext.TraceIdentifier&#xff0c;它在鏈路追蹤中非常有用&#xff0c;下面是官方的定義:在項目中一般會將該字段輸出到每一條日志中&#xff0c;也可以將此Id作為通用響應字段返回前端&#xff0c;后續可以根據該屬性和日志匹…

iOS - 富文本AttributedString

最近項目中用到了圖文混排&#xff0c;所以就研究了一下iOS中的富文本&#xff0c;打算把研究的結果分享一下&#xff0c;也是對自己學習的一個總結。 在iOS中或者Mac OS X中怎樣才能將一個字符串繪制到屏幕上呢&#xff1f; 簡單來說&#xff0c;是通過控件來完成的&#xff0…

php把數字倒著展示,jQuery+PHP實現動態數字展示特效

HTML本例假設要在頁面上動態展示(無需刷新整個頁面&#xff0c;只是局部刷新動態數字)當前在線用戶數&#xff0c;常見在一些統計平臺上應用。在HTML頁面中只需定義以下結構&#xff1a;代碼如下:當前在線&#xff1a;jQuery首先我們要定義一個動畫過程&#xff0c;使用jQuery的…

Android之實現多張圖片點擊預覽(支持放縮)和滑動

1 需求 多張圖片通過recycleView展示&#xff0c;然后點擊具體一張圖片支持預覽(支持放縮)和滑動 2 解決辦法 BaseRecyclerViewAdapterHelper com.github.chrisbanes.photoview.PhotoView ViewPage2 組合起來真香 https://github.com/CymChad/BaseRecyclerViewAdapt…

【Envi風暴】Envi5.4經典安裝圖文教程

ENVI(The Environment for Visualizing Images)是一個完整的遙感圖像處理平臺,應用匯集中的軟件處理技術覆蓋了圖像數據的輸入/輸出、圖像定標、圖像增強、糾正、正射校正、鑲嵌、數據融合以及各種變換、信息提取、圖像分類、基于知識的決策樹分類、與GIS的整合、DEM及地形信…

錯誤: nknown column 'xxxx' in 'where clause'

nknown column sdsds in where clause 運行環境&#xff1a;jdk1.7.0_17tomcat 7 spring&#xff1a;3.2.0 mybatis&#xff1a;3.2.7 eclipse 錯誤&#xff1a;nknown column sdsds in where clause 錯誤原因&#xff1a;數據庫查詢無用&#xff0c;可能很多寫sql語句都會遇到…

c/c++處理參數

直接上代碼&#xff1a;涉及函數getopt()&#xff0c;getopt_long() 1 #include <unistd.h>2 #include <stdlib.h>3 #include <stdio.h>4 #include <getopt.h>5 6 /*7 int main(int argc, char *argv[])8 {9 int opt; 10 char * optstring &q…

查缺補漏系統學習 EF Core 6 - 批量操作

推薦關注「碼俠江湖」加星標&#xff0c;時刻不忘江湖事這是 EF Core 系列的第七篇文章&#xff0c;上一篇文章講述了 EF Core 中的實體數據修改。這篇文章講一講 EF Core 如何進行批量操作。在眾多的 ORM 框架中&#xff0c;EF Core 的功能并不是最強大的那個&#xff0c;性能…

半小時一篇文過完C語言基礎知識點

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本文定位讀者為小白讀者&#xff0c;將使用最快的方法過完C語言基礎知識…

php變量的判空和類型判斷

&#xff08;1&#xff09;var_dump(); 判斷一個變量是否已經聲明并且賦值&#xff0c;并且打印類型和值 <?php $a; var_dump($a);//輸出null<?php var_dump($a);//輸出null<?php$a 10; var_dump($a);//輸出 int 10&#xff08;2&#xff09;isset() 判斷一個變量…

【Envi風暴】Envi插件大全:多波段拆分工具的巧妙使用

很多場合下需要做波段合成,比如波段432合成賦予紅綠藍,構造標準假彩色等等。合成后的文件通常包含多個單波段文件,在Envi中使用layer stacking工具將多個單波段數據合成為一個文件,如下所示: 那么問題來了,合成后的數據該怎樣拆開為原來的單波段呢?今天我們就來學習一種…

php表格怎么合并單元格格式化,table標簽的結構與合并單元格的實現方法

1.示例代碼&#xff1a;復制代碼 代碼如下:#1234一個完整的例子&#xff1a;復制代碼 代碼如下:#FirstnameLastnamePhoneQQ1qianshou111111111111111111112qianshou111111111111111111113qianshou111111111111111111114qianshou111111111111111111112.合并上下的單元格(rowspan…

Android之GridLayoutManager.setSpanSizeLookup問題

1 問題 利用BaseMultiItemQuickAdapter,用recycleView加載多布局,需要實現有些view顯示一行,有些一行顯示多個圖片。 在BaseMultiItemQuickAdapter適配器里面根據類型加載不同布局。 public ImageMultiItemAdapter(List<MultiItemEntity> data) {super(data);addIte…

《看聊天記錄都學不會C語言?太菜了吧》(9)老公餅真的有老公送?

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…

@Springboot搭建項目controller層接收json格式的對象失敗

今天在使用swagger2測試的時候出錯 1、requestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容&#xff0c;比如說&#xff1a;application/json或者是application/xml等。一般情況下來說常用其來處理application/json類型。 2、 通過req…

『技術群里聊些啥』HttpClient 如何判斷是同一終結點

前言官方文檔對 HttpClientHandler.MaxConnectionsPerServer 屬性有如下說明&#xff1a;獲取或設置使用 HttpClient 對象發出請求時允許的最大并發連接數&#xff08;每個服務器終結點&#xff09;。請注意&#xff0c;該限制針對每個服務器終結點&#xff0c;例如&#xff0c…

【Envi風暴】Envi 5.3 SP1經典安裝手把手圖文教程(含補丁文件)

Envi 5.3具有傳感器和數據支持、圖像處理和顯示、用戶界面、二次開發等新功能,本文講解Envi 5.3 SP1完全安裝教程。 下載后的軟件包目錄如下所示: 目錄 一、Envi 5.3 SP1安裝 二、Envi 5.3 SP1下載地址 一、Envi 5.3 SP1安裝 點擊IDL_ENVI5.3 SP1win64.exe,開始安裝,…