Keepalived虛擬機器搭建(適用於真實伺服器)
軟體介紹
什麼是負載均衡高可用
nginx作為負載均衡器,所有請求都到了nginx,可見nginx處於非常重點的位置,如果nginx伺服器宕機後端web服務將無法提供服務,影響嚴重。
為了遮蔽負載均衡伺服器的宕機,需要建立一個備份機。主伺服器和備份機上都執行高可用(High Availability)監控程式,通過傳送諸如“I am alive”這樣的資訊來監控對方的執行狀況。當備份機不能在一定的時間內收到這樣的資訊時,它就接管主伺服器的服務IP並繼續提供負載均衡服務;當備份管理器又從主管理器收到“I am alive”這樣的資訊時,它就釋放服務IP地址,這樣的主伺服器就開始再次提供負載均衡服務。
什麼是keepalived
keepalived是叢集管理中保證叢集高可用的一個服務軟體,用來防止單點故障。
Keepalived的作用是檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。
keepalived工作原理
keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。
虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(VIP = Virtual IP Address,虛擬IP地址,該路由器所在區域網內其他機器的預設路由為該vip),master會發組播,當backup收不到VRRP包時就認為master宕掉了,這時就需要根據VRRP的優先順序來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模組,分別是core、check和VRRP。core模組為keepalived的核心,負責主程序的啟動、維護以及全域性配置檔案的載入和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP模組是來實現VRRP協議的。
個人理解
注意
keepalived需要一個虛擬IP(vip),這個虛擬ip是需要伺服器提供商支援的,在安裝前要確保伺服器是支援該項服務的。
原理
keepalived是採用vrrp協議來實現的,其實最重要的一點就是虛擬IP的應用。如何理解虛擬IP呢?下面通過舉個例子來進行說明:
我們現在有兩臺伺服器:192.168.1.5和192.168.1.6,兩臺伺服器部署了一樣的服務對外提供服務。
如果主服務宕機,需要手動切換到192.168.1.6的備用服務上才能正常。這樣做顯然是不智慧的。不符合邁動互聯的智慧企業領導者的形象。而keepalived就是為了解決這個問題。我們現在有一個虛擬IP:192.168.1.7。keepalived會把這個IP繫結到192.168.1.5上。外網直接訪問192.168.1.7即可訪問到192.168.1.5。當主服務宕機時,keepalived會把這個虛擬IP繫結到備伺服器192.168.1.6上。這一切都是keepalived自動完成的。其實可以這樣理解,keepalived是兩臺伺服器的代理,哪個服務gameover,就把它踢出去,讓其他的繼續提供相同的服務。
安裝準備
安裝環境
yum -y install kernel-devel* yum -y install openssl-* yum -y install popt-devel yum -y install lrzsz yum -y install openssh-clients yum -y install libnl libnl-devel popt
上傳軟體
將keepalived-1.2.15.tar.gz上傳到伺服器/root/下。
安裝步驟(主備伺服器都需要執行以下步驟)
解壓並進入解壓目錄
cd /root tar -zxvf keepalived-1.2.15.tar.gz cd keepalived-1.2.15
執行配置命令
安裝在/usr/local ./configure --prefix=/usr/local/keepalived
編譯
make
安裝
make install
拷貝執行檔案
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
將init.d檔案拷貝到etc下,加入開機啟動項
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
將keepalived檔案拷貝到etc下,加入網絡卡配置
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
建立keepalived資料夾
mkdir -p /etc/keepalived
將keepalived配置檔案拷貝到etc下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
新增可執行許可權
chmod +x /etc/init.d/keepalived
加入開機啟動項
chkconfig --add keepalived 新增時必須保證/etc/init.d/keepalived存在 chkconfig --list 新增完可查詢系統服務是否存在
配置日誌檔案
1.將keepalived日誌輸出到local0: vi /etc/sysconfig/keepalived KEEPALIVED_OPTIONS="-D -d -S 0" 2.在/etc/rsyslog.conf裡新增: local0.* /var/log/keepalived.log
啟動keepalived和rsyslog日誌服務
keepalived 啟動:service keepalived start 停止:service keepalived stop 重啟:service keepalived restart rsyslog service rsyslog start service rsyslog restart
開啟防火牆的通訊地址
iptables -A INPUT -d 224.0.0.18 -j ACCEPT /etc/rc.d/init.d/iptables save
到此,就算安裝完成了,不過還需要配置一下:虛擬IP,和主備伺服器。
主備伺服器的配置
主服務:192.168.128.128 備服務:192.168.128.129 虛擬IP:192.168.128.130
主伺服器配置
修改主nginx下/etc/keepalived/keepalived.conf檔案
! Configuration File for keepalived #全域性配置 global_defs { notification_email { #指定keepalived在發生切換時需要傳送email到的物件,一行一個 [email protected] } notification_email_from [email protected] #指定發件人 #smtp_server XXX.smtp.com #指定smtp伺服器地址 #smtp_connect_timeout 30 #指定smtp連線超時時間 router_id LVS_DEVEL #執行keepalived機器的一個標識 } vrrp_instance VI_1 { state MASTER #標示狀態為MASTER 備份機為BACKUP interface eth0 #設定例項繫結的網絡卡 virtual_router_id 51 #同一例項下virtual_router_id必須相同 priority 100 #MASTER權重要高於BACKUP 比如BACKUP為99 advert_int 1 #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒 authentication { #設定認證 auth_type PASS #主從伺服器驗證方式 auth_pass 8888 } virtual_ipaddress { #設定vip 192.168.128.130 #可以多個虛擬IP,換行即可 } }
備伺服器配置
修改備nginx下/etc/keepalived/keepalived.conf檔案
配置備nginx時需要注意:需要修改state為BACKUP , priority比MASTER低,virtual_router_id和master的值一致
! Configuration File for keepalived #全域性配置 global_defs { notification_email { #指定keepalived在發生切換時需要傳送email到的物件,一行一個 [email protected] } notification_email_from [email protected] #指定發件人 #smtp_server XXX.smtp.com #指定smtp伺服器地址 #smtp_connect_timeout 30 #指定smtp連線超時時間 router_id LVS_DEVEL #執行keepalived機器的一個標識 } vrrp_instance VI_1 { state BACKUP #標示狀態為MASTER 備份機為BACKUP interface eth0 #設定例項繫結的網絡卡 virtual_router_id 51 #同一例項下virtual_router_id必須相同 priority 99 #MASTER權重要高於BACKUP 比如BACKUP為99 advert_int 1 #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒 authentication { #設定認證 auth_type PASS #主從伺服器驗證方式 auth_pass 8888 } virtual_ipaddress { #設定vip 192.168.128.130 #可以多個虛擬IP,換行即可 } }
至此,安裝完成,開始測試!
完成測試
主備伺服器都啟動keepalived和nginx
service keepalived start ./nginx
初始狀態
檢視主伺服器上的eth0狀態,可以看到虛擬IP已經繫結
/sbin/ip add show eth0
檢視備伺服器上的eth0狀態
/sbin/ip add show eth0
3.主伺服器宕機(通過伺服器關機來模擬)192.168.128.128
>注意:主nginx恢復時一定要將nginx也啟動(通常nginx啟動要加在開機啟動中),否則即使vip漂移到主nginx也無法訪問。
這時候檢視備伺服器192.168.128.129的eth0,如下圖,就會發現虛擬ip自動切換到了備伺服器,訪問正常。
到此,就一切搞定啦!
相關推薦
Keepalived虛擬機器搭建(適用於真實伺服器)
軟體介紹 什麼是負載均衡高可用 nginx作為負載均衡器,所有請求都到了nginx,可見nginx處於非常重點的位置,如果nginx伺服器宕機後端web服務將無法提供服務,影響嚴重。
thinkcmf 導航高亮制作方法(適用於多級導航)(通用)
思路 ont lower reac 當前 parent serial com art 平時用thinkcmf網站開發經常需要導航點擊之後高亮,就寫了一些實現方法分享一下。 思路很簡單,先獲取當前頁面的頂級欄目的地址,然後與導航中的地址比較,相同的就加上一個class,把下面
android-----模擬器載入自己編譯的核心(適用於驅動練習)
1. 下載android 模擬器所用的核心原始碼, 代號為goldfish 2. 下載arm-linux交叉工具鏈 3. 編譯核心檔案 4. 讓android模擬器執行在剛編譯的核心上 5. 編譯自己的hello核心模組 6 將hello.ko載入到核心中 1
listview巢狀listview的替換解決方案(適用於個別情況)
按照android的listview機制,理論上不推薦listview'巢狀。這不,我就遇到了listview巢狀listview 的諸多問題。 問題:listview 資料顯示不完全(只顯示一行) listview的機制就是item的佈局或者內容相似或者相同(具體原理這裡
遠端連線阿里雲ubuntu(適用於一切ubuntu)
本地Windows遠端桌面連線阿里雲Ubuntu 16.04伺服器: 1、目的:希望通過本地的Windows遠端桌面連線到阿里雲的Ubuntu伺服器,通過遠端桌面圖形介面的方式操作伺服器。 2、條件:申請的阿里雲Ubuntu伺服器一臺,本地Windows作業系統電腦一臺。
【iOS解決方案】網路請求返回GB2312格式的xml資料轉成UTF-8後為空(適用於論壇bbs)
一些高校的bbs由於歷史久遠,沒有適應新的資料結構,請求返回的資料還是xml格式的,而現在常用的返回是json,這是個很頭疼的地方,碰到的問題網上很難搜到資料,走了很多彎路。 現在具體講一下在解析返回xml過程中碰到的問題,希望能有些借鑑: 1.xml編碼問題: 對
一個支援memcache協議的支援線上批量更新的kv資料庫(適用於推薦引擎)
# 簡介 terminal是一個支援memcache協議的key-value資料庫, 可以線上掛載多個靜態資料儲存, 很適合用於推薦引擎儲存離線計算的候選集及非實時更新的大批量資料。 它不支援寫操作, 只能用於進行靜態資料儲存, 但是它可以批量的動態載入線
ios自動打包(適用於批量打包)
一 總述:終端命令列操作,通常打包採用xcodebuild和xcrun兩個命令,xcodebuild負責編譯,xcrun負責將app打成ipa。 二 xcodebuild介紹: xcodebuild –help 或 –h檢視具體的指令選項 顯示xcode版本號:
一個程式設計師購買保險之路-1(適用於所有人)
程式設計師可以額外做的 下載搜狗醫療、保險、疾病相關的詞庫(https://pinyin.sogou.com/dict/) 通過抓取主流產品的條款,用 Elasticsearch 或 PostgreSQL zhparser 進行分詞、分型別、分段落儲存 通過自身身體病症情況,提取出自己病狀與之相關的各個產品
虛擬機器搭建LVS+keepalived DR
LVS虛擬伺服器負載均衡高可用搭建 其實一開始想準備了四臺真實騰訊云云主機來測試的,最後還是由於VIP的問題,轉到虛擬機器上,VIP在真實伺服器上不能像虛擬機器那樣設定成跟你的主機IP一致就可以,好像需要一個公網IP才行,還有待挖掘! lvs的技術和原理 LVS是L
使用3臺虛擬機器搭建Hadoop HA叢集(1)
系列部落格目錄連結:Hadoop權威指南學習筆記:總章 基礎環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(1) HA環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(2) 工欲善其事,必先利其器,要學好大資料,就必須首先學會自己動手
使用3臺虛擬機器搭建Hadoop HA叢集(2)
系列部落格目錄連結:Hadoop權威指南學習筆記:總章 基礎環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(1) HA環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(2) 本部分包含以下基本分內容 安裝部署zookeeper
虛擬機器搭建叢集(三臺虛擬機器)
1、將各節點的IP和hostname加入到每個節點的/etc/hosts中 echo 192.168.63.141 admin-node >> /etc/hosts echo 192.168.63.142 ceph-node1 >> /etc/
阿里雲虛擬機器搭建Hadoop-2.6.0-cdh5.7.1安裝詳解(偽分散式環境)
首先先搭配安全組 開啟映象後輸入以下內容: 重要: yum -y install lrzsz HOSTNAME=(自己的主機名字) hostname $HOSTNAME echo "$(grep -E '127|::1' /etc/host
Win10下,在虛擬機器內(Win Server 2008)搭建QC
1、安裝虛擬機器軟體 VMware Workstation 12(祕鑰:5A02H-AU243-TZJ49-GTC7K-3C61N) 2、在 VMware Workstation 軟體內搭建Windows Server 2008 作業系統 3、在Windows Serv
Ubuntu12.10 下搭建基於KVM-QEMU的虛擬機器環境(一)
經過幾年的發展,基於KVM-QEMU的虛擬化技術變得越來越成熟,redhat也已經初步形成了以此為基礎的虛擬化產品。同時其他的Linux平臺(如Ubuntu)也對此有了完善的支援方案,加上各類配套軟體的開源特性,以此技術為基礎搭建一套可用的虛擬機器環境變得不再困難。
【伺服器】VMware Workstation Pro虛擬機器搭建本地伺服器CentOs7和寶塔面板(保姆式教程)
內容繁多,請耐心跟著流程走,在過程中遇到問題請在下面留言。 ## 前言 這幾天一直在複習**thinkphp5.1**,學習環境是**phpStudy8.1**,但是遇到了檔案有快取的問題(thinkphp5.1.39,修改檔案後重新整理沒有效果那種,需要隔幾分鐘才正常),百度也沒有解決方法,搞了幾天,一
機器學習特征表達——日期與時間特征做離散處理(數字到分類的映射),稀疏類分組(相似特征歸檔),創建虛擬變量(提取新特征) 本質就是要麽多變少,或少變多
通過 time 理想 ast 可能 ear 創建 eat 根據 特征表達 接下來要談到的特征工程類型雖然簡單卻影響巨大。我們將其稱為特征表達。 你的數據並不一定總是理想格式。你需要考慮是否有必要通過另一種形式進行特征表達以獲取有用信息。 日期與時間特征: 我們假設你擁有p
redis樂觀鎖(適用於秒殺系統)
修改 導致 代碼 -a 通知 解決 redis服務器 font 變化 redis事務中的WATCH命令和基於CAS的樂觀鎖 在Redis的事務中,WATCH命令可用於提供CAS(check-and-set)功能。假設我們通過WATCH命令在事務執行之前監控了多個Keys,
朝夕共處的同事拋棄你時,可沒空和你說再見(不止適用於程序員)
程序人生 IT職場 程序員 原本坐在你身邊和你一個組,每天同樣敲枯燥的業務代碼同事突然薪資翻倍被挖走,或者突然被提拔為你的TL,而你仍默默地拿著不變的薪水敲重復的代碼。你肯定經歷過悄無聲息的小拋棄。1.哪有永遠的“我比你強”,只是你不肯升級記憶同齡的王健被分配帶應屆生陳遠,王健一開始給陳遠定位為“