LVS + Keepalived 雙機熱備+DR模式

簡介

Keepalived 起初是專門針對 LVS 設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查( Health Checking )功能——判斷 LVS 負載調度器、節點服務器的可用性,及時隔離并替換為新的服務器,當故障主機恢復后就會重新加入群集中。


Keepalived 采用 VRRP (虛擬路由冗余協議)熱備份協議,和HSRP一樣,只不過 HSRP 是思科私有的協議,VRRP 可以跑在很多設備上!VRRP 是以軟件的方式實現 Linux 服務器的多機熱備功能。


VRRP 工作原理:它是針對路由器的一種備份解決方案——由多臺路由器組成一個熱備份,通過公用的虛擬IP 地址對外 提供服務;一個組只有一個主路由,其他的路由器就會處于待命的狀態,每隔一定的時間 (可以人為配置)待命的路由設備就會詢問主路由器是否故障,如果一定的時間主路由沒有給予回答,待命的路由就會搶占主的位置,而繼續工作,此搶占會根據配置的優先級而決定。當然這里是接替虛擬 IP地址再次提供服務,而訪問者在線下毫無感知!


這篇文章主要講 LVS + Keepalived 的高可用 ,所以有需要的可以看看 LVS 負載均衡群集詳解

使用 Keepalived 實現雙機熱備

配置前 IP 地址、 操作系統、用途規劃,如下表

操作系統IP地址用途規劃
RedHat 6.5192.168.100.20主調度服務器
RedHat 6.5192.168.100.30備調度服務器
------------------------
RedHat 6.5192.168.100.40第一臺節點服務器
RedHat 6.5192.168.100.50第二胎節點服務器
------------------------
無操作系統192.168.100.10漂移地址(VIP)

Keepalived 安裝與服務控制

(1)在編譯安裝 keepalived 之前,必須安裝內即可開發包 kernel-devel ,還有 openssl-devel 、popt-devel 等支持庫,當然 gcc 、gcc-c++ 沒有的也裝上,最后還需要用到 ipvsadm 管理工具。


[root@HedHat ~]# yum -y install popt-devel kernel-devel openssl-devel gcc gcc-c++


(2)使用指定的 Linux 內核位置對 keepalived 進行配置,并將安裝的路徑指定為根目錄,這樣就不需要再創建軟連接。只有再使用 LVS 時,才需要參數 --with-kernel-dir。解壓軟件包、配置完成后再執行 make && make install
[root@HedHat ~]# tar -zxvf keepalived-1.2.13.tar.gz
[root@HedHat ~]# cd keepalived-1.2.13
[root@HedHat keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.i686/
[root@HedHat keepalived-1.2.13]# make && make install


(3)執行完 make install 后,會自動生成 /etc/init.d/keepalived 腳本文件,但是還需要手動添加為系統服務,這樣就可以用 service、chkconfig 工具來對 Keepalived 服務程序進行管理。
[root@HedHat keepalived-1.2.13]# chkconfig --add keepalived
[root@HedHat keepalived-1.2.13]# chkconfig keepalived on


主服務器的配置

(1)Keepalived 服務的配置目錄在 /etc/keepalived/keepalived.conf 。下面是對主配置文件的詳解、與正確配置!


! Configuration File for keepalived

global_defs {
notification_email { //發送報警郵件br/>acassen@firewall.loc
failover@firewall.locbr/>sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc //指明報警郵件地址
smtp_server 192.168.200.1 //郵件地址
smtp_connect_timeout 30 //smtp 超時時間
router_id LVS_DR1 //本路由器的名稱
}

vrrp_instance VI_1 { //定義 VRRP 熱備是咧
state MASTER //熱備狀態 MASTER 表示主服務器,BACKUP 表示備用服務器
interface eth0 //承載VIP的物理接口
virtual_router_id 51 //虛擬路由器的 ID 號,每個熱備組需要保持一致
priority 100 //優先級,數值越高,優先級越大
advert_int 1 //通告間隔秒數
authentication { //認證信息
auth_type PASS //認證類型
auth_pass 1111 //認證密碼字符串
}
virtual_ipaddress { //指定漂移地址 (VIP)
192.168.100.10
}
}

virtual_server 192.168.100.10 80 { //LVS的配置段,設置LVS的VIP地址和端口
delay_loop 6 / /服務輪詢時間的間隔
lb_algo rr //調度算法為:輪詢 (rr)算法
lb_kind DR //群集類型為 DR
nat_mask 255.255.255.0 //子網掩碼,可選項
persistence_timeout 50 //連接保持時長
protocol TCP //支持的協議為 TCP

real_server 192.168.100.40 80 { //配置節點服務器的 IP地址和端口weight 1 //權重TCP_CHECK {     //檢測健康方式connect_port 80      //檢測健康狀態向 80 端口發送請求connect_timeout 3   //超時時間nb_get_retry 3        //重試次數delay_before_retry 3   //重試間隔多少秒}     
}real_server 192.168.100.50 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}
}

}


備用服務器配置

這里備用服務器和主服務器配置都一樣,下面僅列出不一樣的地方供參考。
router_id LVS_DR2//備用的服務器需要改名稱
vrrp_instance VI_1 { //定義 VRRP 熱備是咧
state BACKUP //熱備狀態 需要改為BACKUP
priority 90 //優先級需要小于主調度服務器


5配置負載調度器分配策略

(1)配置虛擬IP地址,采用虛接口的方式 (eth0:0),為網卡eth0綁定 VIP 地址,方便響應群集訪問。VIP 地址是:192.168.100.10
[root@HedHat ~]# cd /etc/sysconfig/network-scripts
[root@HedHat network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0
[root@HedHat network-scripts]# vim ifcfg-eth0:0
......... 省略部分信息

DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMACK=255.255.255.0


(2)配置負載分配策略,這里需要用到 ipvsadm 管理工具,安裝工具、在配置策略
[root@HedHat ~]# yum install ipvsadm -y
[root@HedHat ~]# modprobe ip_vs
[root@HedHat ~]# ipvsadm -A -t 192.168.100.20:80 -s rr
[root@HedHat ~]# ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.40 -g -w 1
[root@HedHat ~]# ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.50 -g -w 1
[root@HedHat ~]# service ipvsadm save //保存分配策略
[root@HedHat ~]# chkconfig --add ipvsadm
[root@HedHat ~]# chkconfig ipvsadm on


(3)從調度服務器的分配策略也是一樣,修改IP地址即可,這里不再演示


6配置第一臺節點服務器

(1)調整 /proc 響應參數,對于 DR 群集模式來說,由于LVS 負載調度器和各個節點需要公用 VIP 地址,就要調整Linux 內核的重定向參數
[root@HedHat ~]# vim /etc/sysctl.conf
.............省略部分信息

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@HedHat ~]# sysctl -p


(2)使用虛接口 lo:0 來承載 VIP 地址,并為本機添加一條路由記錄,講訪問 VIP 的數據限制在本地,以避免通信紊亂。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
..........省略部分信息

DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.255 //這里注意需要子網掩碼4個255
ONBOOT=yes

[root@localhost ~]# route add -host 192.168.100.10 dev lo:0


測試、總結

安裝httpd,創建測試頁面、啟動httpd服務器程序。
關閉防火墻、setenforce 0
訪問地址應該是 我們配置的VIP地址
模擬故障測試,關閉主調度服務器的虛接口 eth0:0 再次訪問VIP 看看是否成功,成功的話就證明 Keepalived 配置成功。
也可以通過調度服務器的 /var/log/messages 日志文件,可以跟蹤故障切換過程
也可以執行“ipvsadm -ln” “ipvsadm -lnc” 查看負載分配情況

轉載于:https://blog.51cto.com/13746824/2162848

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

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

相關文章

php程序layer,php 提交表單 關閉layer彈窗iframe的實例講解

介紹一款非常好用的前端彈窗插件:根據官方的API:layer的iframe彈窗//iframe層-父子操作layer.open({type: 2,area: [700px, 530px],fix: false, //不固定maxmin: true,content: test/iframe.html});這里以php開發為例 演示如何 提交表單后自動關閉layer彈…

Django之 RESTful規范

RESTful 規范 一、什么是RESTful REST與技術無關,代表的是一種軟件架構風格,REST是Representational State Transfer的簡稱,中文翻譯為“表征狀態轉移”REST從資源的角度類審視整個網絡,它將分布在網絡中某個節點的資源通過URL進行…

php編譯 ftp,無需重新編譯php加入ftp擴展的解決方法

首先,進入源碼目錄cd php-5.2.13/ext/ftp#運行phpize生成configure/usr/local/php/bin/phpize#編譯,指定php-config,注意這里的php-config,不是php.ini./configure --with-php-config/usr/local/php/bin/php-config#上面可以添加--enable-ftp,也可以不用添加#編譯安…

git常用命令及分支簡介

2019獨角獸企業重金招聘Python工程師標準>>> 1、git基本命令 1)git add 將想要快照的內容寫入緩存區 2)git status -s "AM" 狀態的意思是,這個文件在我們將它添加到緩存之后又有改動 3)git commit -m 第一次…

企業私有云部署im,視頻服務

1,安全問題 2,員工跨地域 3,內部視頻培訓 考勤申請,設備借用申請 名片申請 會議室預訂 審批 內網,局域網部署 Android源碼 https://github.com/starrtc/android-demo ios源碼https://github.com/starrtc/ios-demo

php html 偽靜態,php 偽靜態(url重寫)的寫法

來看下面這個網頁 url:http://www.jbxue.com/test.php/1,100,8630.html其實處理的腳本是test.php 參數為1,100,8630相當于test.php?a1&b1100&c8630 只不過這樣的URL太難記。搜索引擎也不喜歡。真靜態只是完全生成了HTML。客戶端訪問的時候直接輸出。不用腳…

客服工作臺

public Page<Record> customerDeskList(QhyfController controller) throws Exception {//獲取分頁信息PageInfo pageInfo controller.getPageInfo();int pageNumber pageInfo.getPageIndex();int pageSize pageInfo.getPageSize();List<String> paras new Arr…

Leetcode怎么調試java代碼,在Clion上調試LeetCode代碼

在Clion上調試LeetCode代碼在leetcode上做題調試起來總有些不方便&#xff0c;所以查閱了一些資料后&#xff0c;按以下配置&#xff0c;自我感覺效率還行&#xff0c;分享給大家。祝大家刷題愉快。并附上自己整理的leetcode400題題表。Leetcode400題&#xff1a;notion地址依賴…

來入門一下kotlin吧

Kotlin是什么&#xff1f; Kotlin是一種在java虛擬機上運行的靜態類型的編程語言&#xff0c;被稱之為 Android 世界的Swift&#xff0c;由 JetBrains 設計開發并開源。 Kotlin的優勢&#xff01; Kotlin可以編譯成java字節碼&#xff0c;也可以編譯成JavaScript。方便在沒有ja…

apache2 配置php,Windows配置PHP5與Apache2

windows下安裝和配置PHP5與Apache2真是比linux下難多了&#xff0c;唉。這里用的是PHP Version 5.2.1和Apache HTTP Server 2.2.4&#xff0c;都是從官方網站下的。1. 下載安裝&#xff0c;不多說了&#xff0c;apache一路按下去就ok&#xff0c;php連按都不用&#xff0c;解壓…

ReactNative 觸摸事件處理

ReactNative觸摸事件處理 對RN觸摸事件的捕獲與冒泡機制的理解 組件A、B、C結構 組件A組件B組件C 捕獲、冒泡機制 sequenceDiagram A->>A: 是否捕獲&#xff1f;若是則停止向下一級傳遞 A->>B: B->>B: 是否捕獲&#xff1f;若是則停止向下一級傳遞 B->&g…

CISCO網絡故障排錯命令總結分享

一、故障處理命令 1、show命令&#xff1a; 1&#xff09; 全局命令&#xff1a; show version &#xff1b;顯示系統硬件和軟件版本、DRAM、Flash show startup-config &#xff1b;顯示寫入NVRAM中的配置內容 show running-config &#xff1b;顯示當前運行的配置內容 show b…

java input回車,用java怎樣編寫加減乘除,從鍵盤輸入,例如:1+2按回車得到

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓import org.junit.Test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestCalc {Testpublic void testCalculator() {String input "11";//輸入String rule "(\\d\\.?\\d*)([\\…

Java中數組在內存中的存放原理?

版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 https://blog.csdn.net/yangyong0717/article/details/79165685Java中數組被實現為對象&#xff0c;它們一般都會因為記錄長度而需要額外的內存。對于一個原始數據類型的數組&#xff0c;一般需要24…

程序員如何面試才能拿到offer

一、概述 面試&#xff0c;難還是不難&#xff1f;取決于面試者的底蘊&#xff08;氣場技能&#xff09;、心態和認知及溝通技巧。面試其實可以理解為一場聊天和談判&#xff0c;在這過程中有心理、思想上的碰撞和博弈。其實你只需要搞清楚一個邏輯&#xff1a;“面試官為什么會…

php 跨區域,如何構造PHP的內容包括在非安全(http://)和安全(https://)區域以及跨多個目錄使用?...

只需使用//example.com/foo.blah即可.< img id “sample-image”src “// /media/sample-image.png”/>很明顯,HTTP是協議,但存在其他協議,如GOPHER,HTTPS,FTP等……而不是在gopher URL gopher&#xff1a;//example.com上,您只需鏈接到//example.com,協議就可以在沒有它…

Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)閱讀筆記

弱監督目標檢測相對于一般的目標檢測任務來說&#xff0c;訓練樣本不需要實例級別的標注&#xff0c;只需要圖片級別的標注&#xff0c;即告訴圖片中有什么而不需標注位置信息&#xff0c;這種標注圖片容易獲取&#xff0c;能節省標注時間及精力。現有的大部分方法在進行若監督…

如何添加JWT生成的token在請求頭中

前言 在我們使用JWT來做用戶的驗證時&#xff0c;我們登陸生成對應的token,并加入到請求的參數中發送到后臺提供相關的權限校驗。這個時候我們需要使用到傳遞請求頭參數傳遞的問題&#xff0c;下面是兩種方式。 1.ajax提交方式 1&#xff09;.方法一&#xff1a; $.ajax({ type…

Gradle 使用技巧(二) - SO/NDK過濾

引言 作為一個Android開發人員&#xff0c;so對于我們來講是極其常見的&#xff0c;各種大廠的SDK中都包含著各種各樣的so&#xff0c;而so也是apk瘦身的重要一環&#xff0c;減少so平臺的數量&#xff0c;可以極大限度的減少apk的大小。 Android 中的so 先看一張官方的圖&…

java兩個數之間質數求法,求任意兩個整數之間質數的個數的代碼!!!(新手編寫)...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓/*** Title:Calculate acount of prime number between preNum and rearNum;* Author: public* Time&#xff1a;2008.12.5 21:09:35*/import java.awt.*;import java.awt.event.*;class Arithmetic{//將計算質數個數的類封裝在此類…