lvs腳本
❶ centos 菜鳥,使用網上的腳本,運行不了 求助
這個顯示的意思是沒有文件或者目錄, /etc/init.d/lvs_server.sh 這個文件,你確定存在嗎?試下more /etc/init.d/lvs_server.sh 命令,如果這個文件存在的話,那你就看腳本中的用到的文件資源了,看看是不是存在!
❷ lvssyncdaemonswap腳本在哪兒
keepalived.conf內容說明如下
●全局定義塊
1、email通知。作用:有故障,發郵件報警。
2、Lvs負載均衡器標識(lvs_id)。在一個網路內,它應該是唯一的。
3、花括弧「{}」。用來分隔定義塊,因此必須成對出現。如果寫漏了,keepalived運行時,不會得到預期的結果。由於定義塊內存在嵌套關系,因此很容易遺漏結尾處的花括弧,這點要特別注意。
●VRRP定義塊
1、同步vrrp組vrrp_sync_group。作用:確定失敗切換(FailOver)包含的路由實例個數。即在有2個負載均衡器的場景,一旦某個負載均衡器失效,需要自動切換到另外一個負載均衡器的實例是哪些?
2、實例組group。至少包含一個vrrp實例。
3、Vrrp實例vrrp_instance。實例名出自實例組group所包含的那些名字。
(1) 實例狀態state。只有MASTER和BACKUP兩種狀態,並且需要大寫這些單詞。其中MASTER為工作狀態,BACKUP為備用狀態。當 MASTER所在的伺服器失效時,BACKUP所在的系統會自動把它的狀態有BACKUP變換成MASTER;當失效的MASTER所在的系統恢復 時,BACKUP從MASTER恢復到BACKUP狀態。
(2)通信介面interface。對外提供服務的網路介面,如eth0,eth1.當前主流的伺服器都有2個或2個以上的介面,在選擇服務介面時,一定要核實清楚。
(3)lvs_sync_daemon_inteface。 負載均衡器之間的監控介面,類似於HA HeartBeat的心跳線。但它的機制優於Heartbeat,因為它沒有「裂腦」這個問題,它是以優先順序這個 機制來規避這個麻煩的。在DR模式中,lvs_sync_daemon_inteface 與服務介面interface 使用同一個網路介面。
(4)虛擬路由標識virtual_router_id。這個標識是一個數字,並且同一個vrrp實例使用唯一的標識。即同一個vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的,同時在整個vrrp內是唯一的。
(5)優先順序priority。這是一個數字,數值愈大,優先順序越高。在同一個vrrp_instance里,MASTER 的優先順序高於BACKUP。若MASTER的priority值為150,那麼BACKUP的priority只能是140或更小的數值。
(6)同步通知間隔advert_int。MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位為秒。
(7)驗證authentication。包含驗證類型和驗證密碼。類型主要有PASS、AH兩種,通常使用的類型為PASS,據說AH使用時有問題。驗證密碼為明文,同一vrrp實例MASTER與BACKUP 使用相同的密碼才能正常通信。
4、 虛擬ip地址virtual_ipaddress。可以有多個地址,每個地址佔一行,不需要指定子網掩碼。注意:這個ip必須與我們在lvs客戶端設定的vip相一致!
●虛擬伺服器virtual_server定義塊
虛擬伺服器定義是keepalived框架最重要的項目了,是keepalived.conf必不可少的部分。
1、虛擬伺服器virtual_server。這個ip來自於vrrp定義塊的第「4」步,後面一個空格,然後加上埠號。定義一個vip,可以實現多個tcp埠的負載均衡功能。
(1)delay_loop。健康檢查時間間隔,單位是秒。
(2)lb_algo。負載均衡調度演算法,互聯網應用常使用wlc或rr。
(3)lb_kind。負載均衡轉發規則。一般包括DR、NAT、TUN3種,在我的方案中,都使用DR的方式。
(4)persistence_timeout。 會話保持時間,單位是秒。這個選項對動態網站很有用處:當用戶從遠程用帳號進行登陸網站時,有了這個會話保持功能,就能把用戶的請求轉發給同一個應用服務 器。在這里,我們來做一個假設,假定現在有一個lvs 環境,使用DR轉發模式,真實伺服器有3個, 負載均衡器不啟用會話保持功能。當用戶第一次訪問的時候,他的訪問請求被負載均衡器轉給某個真實伺服器,這樣他看到一個登陸頁面,第一次訪問完畢;接著他 在登陸框填寫用戶名和密碼,然後提交;這時候,問題就可能出現了---登陸不能成功。因為沒有會話保持,負載均衡器可能會把第2次的請求轉發到其他的伺服器。
(5)轉發協議protocol。一般有tcp和udp兩種。實話說,我還沒嘗試過udp協議類的轉發。
2、真實伺服器real_server,也即伺服器池。Real_server的值包括ip地址和埠號,多個連續的真實ip。
(1)權重weight,權重值是一個數字,數值越大,權重越高。使用不同的權重值的目的在於為不同性能的機器分配不同的負載,性能較好的機器,負載分擔大些;反之,性能差的機器,則分擔較少的負載,這樣就可以合理的利用不同性能的機器資源。
(2)Tcp檢查tcp_check。
第③版更新內容如下:
每台伺服器都有二塊網卡,分別連接內外網;後端的mysql資料庫與web連接採用內網方式,整個網路環境採用內網;
增加了keepalived.conf語法內容;
刪除了lvs.sh腳本內容,直接讓keepalived內容更直接明了;
lvs主從機上的keepalived.conf文件我直接從生產伺服器上download下來了,可方便大家使用。
※值得注意的是:
1、你必須向你的伺服器所在機房IDC多申請一個IP供VIP使用;多關注/var/log/messages和ipvsadm -ln,利用其有效信息排錯。
2、伺服器的iptables、Selinux均關閉;在生產環境中,我就遇到了iptables的NAT轉發問題,導致了lvs失敗。
3、 keepalived的啟動過程並不會對配置文件進行語法檢查,就算沒有配置文件,keepalived的守護進程照樣能夠被運行起來。在默認狀態下,即 不指定配置文件的位置--keepalived先查找文件/etc/keepalived/keepalived.conf。
4、session的過程默認是以文件的形式存在,在瀏覽器關閉或重啟時刪除;會話保持我建議寫成120秒,如果這個值設置得不合理,用戶將得到非常糟糕的訪問效果。
5、 keepalived是lvs的擴展項目,因此它們之間具備良好的兼容性,這點應該是keepalived部署比其他類似工具能更簡潔的原因 吧,lvs+keepalived目前是一個應用於生產環境的成熟架構,實現了真正意義上的負載均衡高可用,尤其適用於bbs和blog(它們均是訪問頻 繁,用戶量大的對象),建議熟練掌握。
LVS 演算法說明
LVS的常見八種調度演算法:
一:輪叫調度(Round-Robin Scheling)
輪叫調度(Round Robin Scheling)演算法就是以輪叫的方式依次將請求調度不同的伺服器,即每次調度執行i = (i + 1) mod n,並選出第i台伺服器。演算法的優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度。
二:加權輪叫調度(Weighted Round-Robin Scheling)
加權輪叫調度 (Weighted Round-Robin Scheling)演算法可以解決伺服器間性能不一的情況,它用相應的權值表示伺服器的處理性能,伺服器的預設權值為1。假設伺服器A的權值為1,B的權值為2,則表示伺服器B的處理性能是A的兩倍。加權輪叫調度演算法是按權值的高低和輪叫方式分配請求到各伺服器。權值高的伺服器先收到的連接,權值高的伺服器比權值低的伺服器處理更多的連接,相同權值的伺服器處理相同數目的連接數。
三:最小連接調度(Least-Connection Scheling)
最 小連接調度(Least- Connection Scheling)演算法是把新的連接請求分配到當前連接數最小的伺服器。最小連接調度是一種動態調 度演算法,它通過伺服器當前所活躍的連接數來估計伺服器的負載情況。調度器需要記錄各個伺服器已建立連接的數目,當一個請求被調度到某台伺服器,其連接數加1;當連接中止或超時,其連接數減一。
四:加權最小連接調度(Weighted Least-Connection Scheling)
加權最小連接調 度(Weighted Least-Connection Scheling)演算法是最小連接調度的超集,各個伺服器用相應的權值表示其處理性能。伺服器的預設權值為1,系統管理員可以動態地設置伺服器的權值。加權最小連接調度在調度新連接時盡可能使伺服器的已建立連接數和其權值成比例。
五:基於局部性的最少鏈接(Locality-Based Least Connections Scheling)
基 於局部性的最少鏈接調度(Locality-Based Least Connections Scheling,以下簡稱為LBLC)演算法是針對請 求報文的目標IP地址的負載均衡調度,目前主要用於Cache集群系統,因為在Cache集群中客戶請求報文的目標IP地址是變化的。這里假設任何後端服 務器都可以處理任一請求,演算法的設計目標是在伺服器的負載基本平衡情況下,將相同目標IP地址的請求調度到同一台伺服器,來提高各台伺服器的訪問局部性和 主存Cache命中率,從而整個集群系統的處理能力。LBLC調度演算法先根據請求的目標IP地址找出該目標IP地址最近使用的伺服器,若該伺服器是可用的 且沒有超載,將請求發送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於其一半的工作負載,則用「最少鏈接」的原則選出一個可用的伺服器,將 請求發送到該伺服器。
六: 帶復制的基於局部性最少鏈接(Locality-Based Least Connections with Replication Scheling)
帶 復制的基於局部性最少鏈接調度(Locality- Based Least Connections with Replication Scheling,以下簡稱為LBLCR)演算法也是針對目標 IP地址的負載均衡,目前主要用於Cache集群系統。它與LBLC演算法的不同之處是它要維護從一個目標IP地址到一組伺服器的映射,而LBLC演算法維護 從一個目標IP地址到一台伺服器的映射。對於一個「熱門」站點的服務請求,一台Cache 伺服器可能會忙不過來處理這些請求。這時,LBLC調度演算法會 從所有的Cache伺服器中按「最小連接」原則選出一台Cache伺服器,映射該「熱門」站點到這台Cache伺服器,很快這台Cache伺服器也會超 載,就會重復上述過程選出新的Cache伺服器。這樣,可能會導致該「熱門」站點的映像會出現在所有的Cache伺服器上,降低了Cache伺服器的使用 效率。LBLCR調度演算法將「熱門」站點映射到一組Cache伺服器(伺服器集合),當該「熱門」站點的請求負載增加時,會增加集合里的Cache服務 器,來處理不斷增長的負載;當該「熱門」站點的請求負載降低時,會減少集合里的Cache伺服器數目。這樣,該「熱門」站點的映像不太可能出現在所有的 Cache伺服器上,從而提供Cache集群系統的使用效率。LBLCR演算法先根據請求的目標IP 地址找出該目標IP地址對應的伺服器組;按「最小連 接」原則從該伺服器組中選出一台伺服器,若伺服器沒有超載,將請求發送到該伺服器;若伺服器超載;則按 「最小連接」原則從整個集群中選出一台伺服器,將 該伺服器加入到伺服器組中,將請求發送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低復制的程度。
七:目標地址散列調度(Destination Hashing Scheling)
目 標地址散列調度 (Destination Hashing Scheling)演算法也是針對目標IP地址的負載均衡,但它是一種靜態映射演算法,通過 一個散列(Hash)函數將一個目標IP地址映射到一台伺服器。目標地址散列調度演算法先根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分 配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空。
八:源地址散列調度(Source Hashing Scheling)
源 地址散列調度(Source Hashing Scheling)演算法正好與目標地址散列調度演算法相反,它根據請求的源IP地址,作為散列鍵 (Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空。它採用的散列函數與目標地址 散列調度演算法的相同。它的演算法流程與目標地址散列調度演算法的基本相似,除了將請求的目標IP地址換成請求的源IP地址,所以這里不一一敘述。在實際應用 中,源地址散列調度和目標地址散列調度可以結合使用在防火牆集群中,它們可以保證整個系統的唯一出入口。
❸ 想學Linux 應該怎麼入手
學習Linux並不難,做好規劃,有合適的學習路線,堅持學習,就可以達到意想不到的結果,初學者可以按照以下路線進行學習:
第一階段:linux基礎入門
1. 開班課程介紹-規章制度介紹-破冰活動;
2. Linux硬體基礎/Linux發展歷史;
3. Linux系統安裝/xshell連接/xshell優化/SSH遠程連接故障問題排查
4. 第一關一大波命令及特殊字元知識考試題講解
5. Linux基礎優化
6. Linux目錄結構知識精講
7. 第二關一大波命令及特殊知識考試題講解(上)
8. 第二關一大波命令及特殊知識考試題講解(下)
9. Linux文件屬性一大堆知識精講
10. Linux通配符/正則表達式
11. 第三關一大波命令及重要知識考試題講解(上)
12. 第三關一大波命令及重要知識考試題講解(下)
13. Linux系統許可權(上)
14. Linux系統許可權(下)
15. 整體課程回顧
第二階段:linux系統管理進階
1. Linux定時任務
2. Linux用戶管理
3. Linux磁碟與文件系統(上)
4. Linux磁碟與文件系統(下)
5. Linux三劍客之sed命令
第三階段:Linux Shell基礎
1. Shell編程基礎上
2. Shell編程基礎下
3. Linux三劍客之awk命令
第四階段:Linux網路基礎
1. 計算機網路基礎上
2. 計算機網路基礎下
3. 第二階段整體課程回顧
第五階段:Linux網路服務
1. 集群實戰架構開始及環境准備
2. rsync數據同步服務
3. Linux全網備份項目案例精講
4. nfs網路存儲服務精講
5. inotify/sersync實時數據同步/nfs存儲實時備份項目案例精講
第六階段:Linux重要網路服務
1. http協議/www服務基礎
2. nginx web介紹及基礎實踐
3. nginx web精講結束
4. lnmp環境部署/資料庫異機遷移/共享數據異機遷移到NFS系統
5. nginx負載均衡
6. keepalived高可用
第七階段:Linux中小規模集群構建與優化(50台)
1. 期中架構開戰說明+期中架構部署回顧
2. 部署期中架構並完成上台述職演講
3. kickstart cobbler批量自動安裝系統
4. pptp vpn與ntp服務
5. memcached原理及部署/作為緩存及session會話共享
第八階段:Ansible自動化運維與Zabbix監控
1. SSH服務秘鑰認證
2. ansible批量自動化管理集群
3. zabbix監控
第九階段:大規模集群高可用服務(Lvs、Keepalived)
1. Centos7系統自行安裝/centos6與7區別
2. lvs負載均衡集群/keepalived管理LVS集群
第十階段:java Tomcat服務及防火牆Iptables
1. iptables防火牆精講上
2. iptables防火牆精講下
3. tomcat java應用服務/nginx配合tomcat服務部署及優化
第十一階段:MySQL DBA高級應用實踐
1. MySQL資料庫入門基礎命令
2. MySQL資料庫進階備份恢復
3. MySQL資料庫深入事務引擎
4. MySQL資料庫優化SQL語句優化
5. MySQL資料庫集群主從復制/讀寫分離
6. MySQL資料庫高可用/mha/keepalved
第十二階段:高性能資料庫Redis和Memcached課程
第十三階段:Linux大規模集群架構構建(200台)
第十四階段:Linux Shell編程企業案例實戰
第十五階段:企業級代碼發布上線方案(SVN和Git)
1. GIT管理
2. 代碼上線項目案例
第十六階段:企業級Kvm虛擬化與OpenStack雲計算
1. KVM虛擬化企業級實戰
2. OpenStack雲計算企業級實戰
第十七階段:公有雲阿里雲8大組件構建集群實戰
第十八階段:Docker技術企業應用實踐
1. Docker容器與微服務深入實踐
2. 大數據Hadoop生態體系及實踐
第十九階段:Python自動化入門及進階
第二十階段:職業規劃與高薪就業指導
❹ 用calibre進行LVS,步驟是怎樣的
Calibre環境做LVS步驟(後面附註意事項,供參考)
1、LVS數據准備
在Astro中完成晶元後提取.fv文件及.gds文件,這兩個文件是做LVS必備的。.v文件用來生成在LVS過程中用來和Layout進行比對的.spi文件,而.gds文件用來讀入calibre得到Layout。 2、將.gds文件讀入calibre 具體步驟省略。 3、生成.spi文件
.spi文件是由.v和一些.cdl、.spi文件一同生成的。
生成.spi文件有一個腳本,以SMIC18 工藝xxx目錄為例: v2lvs \
-lsp xxx/smic18.cdl \ -lsp xxx/POR.cdl \
-lsp xxx/RAM256X8.cdl \ -lsp xxx/SP018W.sp \ -s xxx/smic18.cdl \ -s xxx/POR.cdl \
-s xxx/RAM256X8.cdl \ -s xxx/SP018W.sp \ -s0 VSS \ -s1 VDD \
-v $topCell.v \ -o $topCell.spi
格式是固定的,-lsp後面列出你所要做LVS的晶元用到的IP的.spi(.sp)文件,rom、ram、stdcell是.cdl文件。-s後面再把-lsp列出的文件重復一遍。-s0和-s1不變,-v後面寫你要進行轉換的.fv文件,-o後面寫你要輸出的.spi文件。
文件寫好後,在文件所在目錄直接鍵入文件名,文件即開始自動執行。執行後若無warning和error即可。
icc中提取出來的.v文件需要有phsical only的器件,但是不需要corner和filler pad,pcut和power IO必須加進去。還有一些格式要求,需要使用如下選項:
wirte_verilog –diode_ports –split_bus –no_pad_filler –no_corner_filler_cells -pg這些信息加好後,再進行上面轉換.spi文件的步驟。 4、完善layout和.spi文件
在smic工藝下: (1)、layout完善
此時要先檢查pad上面的text是否打好。之後要把FP打上。關於FP,以下是從smic的IO文檔中找到的解釋:
FP stands for 『From Power Pad』 and FP pin is for global signal. Under normal condition, FP is activated by PVDD2W of Standard I/O library SP018W to 『HIGH』 (3.3V). FP rail will be automatically connected while joining with other digital I/O cells.
打TEXT的時候要打FP,但是注意:只有digital pad有FP。 (2)、.spi完善
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);
在.spi文件中要加入pcut的連接關系,即VSS1=…,VSS2=…。VSS1和VSS2是pcut的port名字,…處你要寫他們和什麼相連。
另外,一些打了字的pad也要寫清楚它的連接關系,如VSSD=VSSD_pad,等號前面是pad出的port,等號後面寫pad上打的text。
另外,在.spi文件中的出現的變數名,要寫在.GLOBAL後面,否則LVS的時候會報錯。如果有連接關系要註明,則在.spi文件後面寫*.CONNECT後面寫明兩個要連接的名字就可以了。 5、進行LVS
所有準備工作都做完了,開始LVS。 啟動calibre,選nmLVS,出現LVS界面。選左邊一欄的Rules,在Calibre Rules File中填入LVS的rule。一般我們在做LVS的時候,會先把rom,ram,analog等IP部分box起來不查,先讓其他部分的LVS通過了,再查整體的LVS。因此這個rule可以自己加一些box,格式是LVS BOX instance name。
在左邊一欄中選Inputs,Layout一欄不動,選Netlist,在Files處填入你修改好了的.spi文件。之後在上面一條菜單中選Setup>LVS Options,選Connect中的Connect nets with colon (:)。選好後,點左側的Run LVS,則LVS過程就開始了。
運行完後,如果沒有問題,則你會看到綠色的笑臉,如果有問題,則要進行分析,修改.spi或者layout來通過LVS。
補充資料:
Useful Abbreviations
SVRF——Standard Verification Rule Format Mentor Rule
RVE——Results Viewing Environment 顯示環境
SVDB——Standard Verification Rule Database (LVS results)
在LVS rule中寫上這句話,LVS會產生一個SVDB的文件夾存放一些中間結果文件。
ERC——Electrical Rule Verification PEX——Parasitic Ectraction
MDP——Mask Data Preparation 是foundary做的mask的ORC檢查。(ORC:optical rules checking 光學規則校驗)
TVF——Tcl Verification Format 65nm以下的rule file格式,SVRF很難cover所有的corner所以有TVF
Connect nets with colon (:) 虛擬連接,例如A:1和A:2將被認為是一條net
有時候smic18工藝中,ram,rom的LVS netlist文件.cdl是由dataprepare生成的,但是要把文件中N,P後面加上18變成N18和P18(必須保證stdcell和其rule的命名相匹配才可以)還有要把文件中DN改為NDIO18。
在.v轉換成.spi文件的過程中,會在instance前面加X。當有IP Merge時,一些IP的PIN、PORT都要當作BOX注釋掉,否則在LVS中會報錯。
❺ linux實現HA有幾種方法
【實驗配置環境】
伺服器系統:CentOS-5.6
LVS主節點(lvs-master):192.168.2.250(eth0) 心跳直連介面:192.168.1.250(eth1)
LVS備節點(lvs-backup):192.168.2.251(eth0) 心跳直連介面:192.168.1.251(eth1)
Web Server-1:192.168.2.252
Web Server-2:192.168.2.253
VIP(虛擬ip):192.168.2.254
註:4台伺服器已經配置好LNMP(Linux+Nginx+PHP(FastCGI模式)+mysql)網站運行環境,當然使用apache也可以。這里主備節點也當作真實伺服器使用,所以也配置了網站環境。
本文配置拓撲圖:
主備調度器eth1介面使用交叉線相連(理論上是這樣)
線序為: 一頭為568A標准:白綠,綠;白橙,藍;白藍,橙;白棕,棕
另一頭為568B標准:白橙,橙;白綠,藍;白藍,綠;白棕,棕
在LVS主節點和備節點的/etc/hosts中加入以下內容:
#vim /etc/hosts
192.168.2.250 lvs-master
192.168.2.251 lvs-backup
修改主機名:
# vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
hostname=lvs-master
GATEWAY=192.168.2.1
# vim /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 lvs-master localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
這2個文件都要修改,修改完後重啟生效,備份機修改方法一樣,不在重述。
【下載軟體】
[libnet]
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/libnet-1.22.tar.gz
[ipvsadm]
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
[Heartbeat]
wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/STABLE-3.0.4.tar.bz2
[Cluster Glue]
wget http://hg.linux-ha.org/glue/archive/glue-1.0.7.tar.bz2
[Resource Agents]
wget https://download.github.com/ClusterLabs-resource-agents-agents-1.0.4-0-gc06b6f3.tar.gz
一、 配置LVS主節點(lvs-master)
1. 安裝libnet
# tar zxvf libnet-1.1.2.2.tar.gz
# cd libnet
# ./configure
# make && make install
# cd ..
2. 安裝ipvsadm
# yum install kernel-devel //安裝對應內核的kernel-devel
# tar zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
# ln -s /usr/src/kernels/`ls /usr/src/kernels/` /usr/src/linux //將當前使用內核連接到/usr/src/linux
# make && make install
# cd..
3. 安裝Heartbeat
3.1 確認系統已經安裝以下軟體(系統光碟中有)
libxslt、libxslt-devel、libgcrypt-devel、autoconf、automake、pkgconfig、libgpg-error-devel、libtool、sgml-common、opensp、openjade、xml-common、docbook-dtds、docbook-style
如果在編譯安裝過程中出錯,很有可能是因為缺少了相關的軟體包
3.2 安裝glue
# groupadd haclient
# useradd -g haclient -M -s /sbin/nologin hacluster
# tar jxvf glue-1.0.7.tar.bz2
# cd Reusable-Cluster-Components-glue--glue-1.0.7/
# ./autogen.sh
# ./configure
# make && make install
# cd ..
3.3 安裝 agents
# tar zxvf ClusterLabs-resource-agents-agents-1.0.4-0-gc06b6f3.tar.gz
# cd ClusterLabs-resource-agents-c06b6f3/
# ./autogen.sh
# ./configure
# make && make install
# cd..
3.4 安裝Heartbeat
# tar jxvf Heartbeat-3-0-STABLE-3.0.4.tar.bz2
# cd Heartbeat-3-0-STABLE-3.0.4
# ./ConfigureMe configure
# gmake && make install
# cd..
4. 配置lvs啟動腳本
本實驗採用的是lvs-DR模式,該模式的特點是客戶端的請求從主/備節點進入分配到web server,然後web server的響應是直接交付給客戶端的。
# vim /etc/init.d/lvs
#!/bin/sh
#chkconfig: 2345 20 80
#description: start_lvs_of_dr
VIP1=192.168.2.254
RIP1=192.168.2.250
RIP2=192.168.2.251
RIP3=192.168.2.252
RIP4=192.168.2.253
./etc/rc.d/init.d/functions
case "$1" in
start)
echo "開啟LVS DirectorServer..."
#設置虛擬IP地址
#LVS啟動時添加VIP的網口eth0:0
/sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev eth0:0
#清除IPVS表
/sbin/ipvsadm -C
#設置LVS
/sbin/ipvsadm -A -t $VIP1:80 -s lc
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP3:80 –g
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP4:80 -g
#使用ipvsadm來轉發客戶端請求。-s lc為最小連接數演算法,-g是採用DR模式。有多少RIP就添加幾條記錄。
#啟動LVS
/sbin/ipvsadm
;;
stop)
echo "停止LVS DirectorServer..."
#關閉時清除ipvsadm表
/sbin/ipvsadm –C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
註:這個腳本不要使用chkconfig管理,放入/etc/init.d內即可。
5. 安裝ldirectord相關組件
默認安裝完上面的三個軟體包之後,ldirectord已經安裝到系統中,默認路徑在 /usr/etc/ ,由於ldirectord是由perl語言編寫的,所以必須安裝相關的軟體包:Socket6、libwww-perl、URI、MailTools、HTML-Parser
# yum -y install perl-Socket6 perl-libwww-perl perl-URI perl-MailTools perl-HTML-Parser
也可以在http://search.cpan.org/網站下載相關軟體包安裝
安裝方法:
# perl Makefile.PL
# make && make install
6. 配置heartbeat
# cp -a /usr/etc/ha.d/ /etc/
# rm -fr /usr/etc/ha.d/
# ln -s /etc/ha.d/ /usr/etc/
# cp /usr/share/doc/haresources /etc/ha.d/
# cp /usr/share/doc/authkeys /etc/ha.d/
# cp /usr/share/doc/ha.cf /etc/ha.d/
# chmod 600 /etc/ha.d/authkeys //這個文件的許可權必須是600
6.1 修改配置文件
6.1.1 authkeys文件配置(authkeys文件的作用是用來設置心跳信息的加密方式)
vim /etc/ha.d/authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
此設置是使用crc循環冗餘校驗,不採用加密的方式。
6.1.2 ha.cf為heartbeat的主配置文件,修改下面配置。
# vim /etc/ha.d/ha.cf
#日誌文件位置
logfile /var/log/ha-log
#指定主備伺服器多久發送一次心跳
keepalive 2
#指定30秒沒有收到對方心跳就認為對方已經down機
deadtime 30
#10秒沒有收到心跳,便發出警報。
warntime 10
#對方DOWN後120秒重新檢測一次。
initdead 120
#指定監聽埠
udpport 694
#心跳監聽網口,這里為eth1
bcast eth1 //去掉後面#linux
#備份機的心跳線介面與介面IP
ucast eth1 192.168.1.251
#主節點恢復後,自動收回資源。
auto_failback on
#指定主備伺服器的主機名稱,即在hosts文件中指定的。第一個node為主伺服器,第二個node為備伺服器。
node lvs-master //伺服器的主機名
node lvs-backup
#當192.168.2.1、192.168.2.2這兩個IP都不能ping通時,對方即開始接管資源。
ping_group group1 192.168.2.1 192.168.2.2
#啟用ipfail腳本
respawn root /usr/lib/heartbeat/ipfail
#指定運行ipfail的用戶。
apiauth ipfail gid=root uid=root
6.1.3 haresources文件配置,這個文件是指定虛擬IP和改主機控制的腳本。
# vim /etc/ha.d/haresources
lvs-master 192.168.2.254 lvs ldirectord
// master.lvs.net可為主節點主機名,192.168.2.254為虛擬IP
6.1.4 ldirectord.cf是ldirectord進程的配置文件,該進程用來監視web server的運行狀況,如果web server不能響應請求則把它排除在轉發列表外。
復制安裝文件ldirectord目錄上的ldirectord.cf 到/etc/ha.d/conf下,如果找不到可以查找一下:find / -name ldirectord.cf
# mkdir /etc/ha.d/conf
# cp ldirectord.cf /etc/ha.d/conf
# vim /etc/ha.d/conf/ldirectord.cf
# Global Directives
#設置真實web server的超時時間
checktimeout=30
#監視真實web server的時間間隔
checkinterval=10
#如全部真實web server失敗,則轉發至本地
fallback=127.0.0.1:80
#改變配置文件內容,不需要重新ldirectord
autoreload=yes
#指定日誌位置
logfile="/var/log/ldirectord.log"
quiescent=no
# A sample virual with a fallback that will override the gobal setting
#指定虛擬IP
virtual=192.168.2.254:80
#指定真實web server IP及監聽埠
real=192.168.2.250:80 gate
real=192.168.2.251:80 gate
real=192.168.2.252:80 gate
real=192.168.2.253:80 gate
fallback=127.0.0.1:80 gate
service=http
#指定轉發演算法
scheler=lc //這里的演算法要和LVS腳本的演算法一樣
protocol=tcp
#監視VIP伺服器的方法
checktype=negotiate
checkport=80
#監聽測試頁面名稱,這個頁面放入真實web server web服務的根目錄
request="lvs_testpage.html"
#指定測試頁面返回內容
receive="test Page"
virtualhost= lvstest.net
配置文件中的lvs_testpage.html必須存在網站根目錄下,校驗一下配置:
# ldirectord -d /etc/ha.d/conf/ldirectord.cf start //按Ctrl+C結束
# cp /etc/ha.d/shellfuncs /usr/lib/ocf/resource.d/heartbeat/.ocf-shellfuncs
以上lvs和heartbeat配置完成。
LVS備節點(lvs-backup)的配置和LVS主節點(lvs-master)完全一樣。
只是在/etc/ha.d/ha.cf中「ucast eth1 192.168.1.251」此配置地址不一樣。
二、配置真實web server腳本
在每台web server的/etc/init.d目錄下放置realserver腳本,這里主備節點同時也作為web server使用。
# vim /etc/init.d/realserver
#!/bin/bash
# chkconfig: 2345 20 80
# description: lvs_dr_realserver
#指定虛擬IP
VIP=192.168.2.254
host=`/bin/hostname`
case "$1" in
start)
# Start LVS-DR real server on this machine.
/sbin/ifconfig lo down
/sbin/ifconfig lo up
#修改相關內核參數
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
stop)
# Stop LVS-DR real server loopback device(s).
/sbin/ifconfig lo:0 down
;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep "lo" | grep $VIP`
if [ ! "$islothere" -o ! "$isrothere" ];
then
# Either the route or the lo:0 device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit 1
;;
esac
# chmod +x /etc/init.d/lvs
# chmod +x /etc/init.d/realserver
# service heartbeat start //主備LVS調度器上執行
# /etc/init.d/lvs start //主備LVS調度器上執行
# /etc/init.d/realserver start //真實web伺服器上執行
# chkconfig --level 35 heartbeat on
# echo 「/etc/init.d/lvs start」 >> /etc/rc.local //開機啟動
# echo 「/etc/init.d/realserver start」 >> /etc/rc.local //開機啟動
三、測試
配置我已經測試過了,但是不同系統環境可能會出一些意料之外的事情。
❻ 關於keepalived+lvs的老問題.至今沒什麼滿意的答案
這個問題我也遇到了,因為開了會話保持的選項 persistence_timeout 0這個不對,因為單獨做lvs不上keep也不是立即輪詢的。問題解決了嗎求回復答案
❼ 如何編寫LVS對Real Server的健康狀態檢測腳本
編寫LVS對Real Server的健康狀態檢測腳本的方法
設置VS/NAT模式的LVS(這里以web服務為例)
Director:
建立服務
# ipvsadm -A -t VIP:PORT -s rr
如:
# ipvsadm -A -t 192.168.0.220:80 -s rr
設置轉發:
# ipvsadm -a -t VIP:PORT -r RIP_N:PORT -m -w N
如:
# ipvsadm -a -t 192.168.0.220:80 -r 192.168.10.2 -m -w 1 # ipvsadm -a -t 192.168.0.220:80 -r 192.168.10.3 -m -w 1 打開路由轉發功能
# echo "1" > /proc/sys/net/ipv4/ip_forward
服務控制腳本:
#!/bin/bash
#
# chkconfig: - 88 12
# description: LVS script for VS/NAT
#
. /etc/rc.d/init.d/functions
#
VIP=192.168.0.219
DIP=192.168.10.10
RIP1=192.168.10.11
RIP2=192.168.10.12
#
case "$1" in
start)
/sbin/ifconfig eth0:1 $VIP netmask 255.255.255.0 up
# Since this is the Director we must be able to forward packets echo 1 > /proc/sys/net/ipv4/ip_forward
# Clear all iptables rules.
/sbin/iptables -F
# Reset iptables counters.
/sbin/iptables -Z
# Clear all ipvsadm rules/services.
/sbin/ipvsadm -C
# Add an IP virtual service for VIP 192.168.0.219 port 80
# In this recipe, we will use the round-robin scheling method.
# In proction, however, you should use a weighted, dynamic scheling method.
/sbin/ipvsadm -A -t $VIP:80 -s rr
# Now direct packets for this VIP to
# the real server IP (RIP) inside the cluster
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -m
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -m
/bin/touch /var/lock/subsys/ipvsadm.lock
;;
stop)
# Stop forwarding packets
echo 0 > /proc/sys/net/ipv4/ip_forward
# Reset ipvsadm
/sbin/ipvsadm -C
# Bring down the VIP interface
ifconfig eth0:1 down
rm -rf /var/lock/subsys/ipvsadm.lock
;;
status)
[ -e /var/lock/subsys/ipvsadm.lock ] && echo "ipvs is running..." || echo "ipvsadm is stopped..."
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
❽ 如何用shell腳本實現lvs負載均衡
#!/bin/bash for dir in `ls --file-type -1`; do if [ `echo $dir | grep "/$"` ]; then dir=`basename $dir`; tar -zvcf $dir\.tar.gz $dir; fi done 說明:保存至文件名compress.sh,並置於相應目錄下。 運行./compress.sh(或sh compress.sh)
❾ 利用heartbeat搭建LVS,在兩台real_server節點上運行lvsrs腳本後機器就會不通了lvsrs內容如下:
VIP的子網掩碼應該是 255.255.255.255 吧。利用heartbeat搭建LVS,在兩台real_server節點上運行lvsrs腳本後機器就會不通了lvsrs內容如下:
❿ 關於bat腳本編寫問題
@echo off
setlocal enabledelayedexpansion
echo lsb_release -a ^|grep release >1.txt
for /F "tokens=1,2" %%I in (lvs.cfg) do (
for /f "tokens=*" %%k in {'plink -pw 111111 -m 1.txt root@%%I') do set x=%%k
echo %%I !k!
)