1. 程式人生 > >keepalived-1.4.2實踐:安裝與測試

keepalived-1.4.2實踐:安裝與測試

一、下載安裝

1、作業系統:CentOS 7.4,先確保安裝了openssl,安裝方法:

 yum -y install openssl-devel

沒有OpenSSL的話,configure會報錯:

 !!! OpenSSL is not properly installed on your system. !!!

  !!! Can not include OpenSSL headers files. 

2、解壓編譯

tar -zxf keepalived-1.4.2.tar.gz

chmod -R 777 keepalived-1.4.2

cd keepalived-1.4.2
./configure #預設安裝
make
make install

會在以下路徑生成:

/usr/local/etc/keepalived/keepalived.conf
/usr/local/etc/sysconfig/keepalived

/usr/local/sbin/keepalived

然後我們需要手動做以下事情:

1、mkdir /etc/keepalived #新建資料夾

再把/usr/local/etc/keepalived/keepalived.conf拷貝到/etc/keepalived/keepalived.conf,

cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

內容修改為:

  1. ! Configuration File for keepalived  
  2. global_defs {  
  3.    notification_email { #指定Keepalived在發生事情的時候,傳送郵件通知,每行一個地址  
  4.      [email protected]  
  5.      [email protected]  
  6.      [email protected]  
  7.    }  
  8.    notification_email_from [email protected] #指定發件人  
  9.    smtp_server 192.168.200.1 #傳送email的smtp地址  
  10.    smtp_connect_timeout 30 #超時時間  
  11.    router_id lb01 #執行Keepalived的機器標識號,主從機必須不同  
  12.    ##vrrp_skip_check_adv_addr #註釋掉vrrp_strict相關是為了解決虛擬ip,ping不通的問題  
  13.    ##vrrp_strict  
  14.    ##vrrp_garp_interval 0  
  15.    ##vrrp_gna_interval 0  
  16. }  
  17. vrrp_instance VI_1 {  
  18.     state MASTER  
  19.     interface ens33 #物理網絡卡名稱,主節點和備節點需要相同  
  20.     virtual_router_id 100 #唯一的id,主從機必須相同  
  21.     priority 150 #優先順序,主節點大於備節點,建議至少相差50  
  22.     advert_int 1 #通訊檢查間隔時間1s  
  23.     authentication {  
  24.         auth_type PASS  
  25.         auth_pass 1111  
  26.     }  
  27.     virtual_ipaddress {  
  28.         172.16.6.200 #虛擬ip,會繫結在ens33網絡卡  
  29.     }  
  30. }  

注意:配置keepalived後發現虛擬ip ping不通的解決辦法,vim /etc/keepalived/keepalived.conf。把vrrp_strict相關的語句註釋就可以了。

2、在路徑/etc/init.d/下新建keepalived.sh指令碼,內容如下,重點關注exec和sysconfig的路徑要對的上:

  1. #!/bin/sh   
  2. #   
  3. # keepalived   High Availability monitor built upon LVS and VRRP   
  4. #   
  5. # chkconfig:   - 86 14   
  6. # description: Robust keepalive facility to the Linux Virtual Server project \   
  7. #              with multilayer TCP/IP stack checks.   
  8. ### BEGIN INIT INFO   
  9. # Provides: keepalived   
  10. # Required-Start: $local_fs $network $named $syslog   
  11. # Required-Stop: $local_fs $network $named $syslog   
  12. # Should-Start: smtpdaemon httpd   
  13. # Should-Stop: smtpdaemon httpd   
  14. # Default-Start:    
  15. # Default-Stop: 0 1 2 3 4 5 6   
  16. # Short-Description: High Availability monitor built upon LVS and VRRP   
  17. # Description:       Robust keepalive facility to the Linux Virtual Server   
  18. #                    project with multilayer TCP/IP stack checks.   
  19. ### END INIT INFO   
  20. # Source function library.   
  21. . /etc/rc.d/init.d/functions   
  22. exec="/usr/local/sbin/keepalived"
  23. prog="keepalived"
  24. config="/etc/keepalived/keepalived.conf"
  25. [ -e /usr/local/etc/sysconfig/$prog ] &&  /usr/local/etc/sysconfig/$prog   
  26. lockfile=/var/lock/subsys/keepalived   
  27. start() {   
  28.     [ -x $exec ] || exit 5   
  29.     [ -e $config ] || exit 6   
  30.     echo -n $"Starting $prog: "   
  31.     daemon $exec $KEEPALIVED_OPTIONS  
  32.     retval=$?   
  33.     echo   
  34.     [ $retval -eq 0 ] && touch $lockfile   
  35.     return $retval   
  36. }   
  37. stop() {   
  38.     echo -n $"Stopping $prog: "   
  39.     killproc $prog   
  40.     retval=$?   
  41.     echo   
  42.     [ $retval -eq 0 ] && rm -f $lockfile   
  43.     return $retval   
  44. }   
  45. restart() {   
  46.     stop   
  47.     start   
  48. }   
  49. reload() {   
  50.     echo -n $"Reloading $prog: "   
  51.     killproc $prog -1   
  52.     retval=$?   
  53.     echo   
  54.     return $retval   
  55. }   
  56. force_reload() {   
  57.     restart   
  58. }   
  59. rh_status() {   
  60.     status $prog   
  61. }   
  62. rh_status_q() {   
  63.     rh_status &>/dev/null   
  64. }   
  65. case "$1" in   
  66.     start)   
  67.         rh_status_q && exit 0   
  68.         $1   
  69.         ;;   
  70.     stop)   
  71.         rh_status_q || exit 0   
  72.         $1   
  73.         ;;   
  74.     restart)   
  75.         $1   
  76.         ;;   
  77.     reload)   
  78.         rh_status_q || exit 7   
  79.         $1   
  80.         ;;   
  81.     force-reload)   
  82.         force_reload   
  83.         ;;   
  84.     status)   
  85.         rh_status   
  86.         ;;   
  87.     condrestart|try-restart)   
  88.         rh_status_q || exit 0   
  89.         restart   
  90.         ;;   
  91.     *)   
  92.         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"   
  93.         exit 2   
  94. esac   
  95. exit $?  

二、執行測試

1、獲得許可權

chmod a+x /etc/init.d/keepalived

chmod a+x /usr/local/etc/sysconfig/keepalived

chmod a+x /usr/local/sbin/keepalived

2、啟動

/etc/init.d/keepalived start

或者 service keepalived start

啟動後,可以通過以下命令來檢視是否安裝正確,啟動後有3個keepalive程序表示正確:

  1. [[email protected] init.d]# ps -ef|grep keep|grep -v grep  
  2. root      20163      1  0 10:03 ?        00:00:00 /usr/local/sbin/keepalived -D  
  3. root      20164  20163  0 10:03 ?        00:00:00 /usr/local/sbin/keepalived -D  
  4. root      20165  20163  0 10:03 ?        00:00:00 /usr/local/sbin/keepalived -D  
  5. [[email protected] ~]# ip add|grep 172.16  
  6.     inet 172.16.6.161/24 brd 172.16.6.255 scope global ens33  
  7.     inet 172.16.6.200/32 scope global ens33  

ifconfig只能檢視物理網絡卡,ip addr或者ip a才能看見虛擬ip,172.16.6.161是真實ip,172.16.6.200是虛擬ip

  1. [[email protected] init.d]# ip addr  
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1  
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  
  4.     inet 127.0.0.1/8 scope host lo  
  5.        valid_lft forever preferred_lft forever  
  6.     inet6 ::1/128 scope host   
  7.        valid_lft forever preferred_lft forever  
  8. 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000  
  9.     link/ether 00:0c:29:b9:7b:31 brd ff:ff:ff:ff:ff:ff  
  10.     inet 172.16.6.161/24 brd 172.16.6.255 scope global ens33  
  11.        valid_lft forever preferred_lft forever  
  12.     inet 172.16.6.200/32 scope global ens33  
  13.        valid_lft forever preferred_lft forever  
  14.     inet6 fe80::2176:1363:975e:6c17/64 scope link   
  15.        valid_lft forever preferred_lft forever  

3、停止

/etc/init.d/keepalived stop
或者 service keepalived stop

4、通過終端命令來檢視虛擬ip是否生效存在:

正確狀態下,主機會生效,命令有返回查詢結果;備機不生效,命令無查詢結果。

主機異常時,備機才生效。

也就是說,正常兩個主機啟動keepalived的時候,應該是master 綁定了虛擬ip。通過命令 ip a 和ip add|grep 172.16.6.200,只有在master機器上能看到繫結的虛擬ip,而backup上是看不到的。

[html]
  1. [[email protected] ~]# ip add|grep 172.16.6.200  
  2.     inet 172.16.6.200/32 scope global ens33  

5、本人的實測環境是:在一臺電腦開了2個CentOS 7虛擬機器,ip分別是

主伺服器A:172.16.6.161

備伺服器B:172.16.6.135

防火牆處於關閉狀態,我通過service keepalived stop命令來測試主備的變化。

按照以上的配置資訊,我現在遇到的問題:兩個keepalived啟動的時候,通過命令ip a和ip add|grep 172.16.6.200, 都能看到綁定了虛擬ip,相當於兩臺都是master,那怎麼辦呢?

出現這問題的場景是在伺服器網路環境中,因為路由交換層禁用了ARP的廣播限制,造成KEEPALIVE主備協議無法通過廣播的方式進行通訊,造成主備兩臺伺服器都強佔HAVIP地址,出現同時兩臺伺服器都有VIP地址的情況出現,必須通過配置來指定IP的兩臺伺服器間進行通訊。也就是說主備vvrp直接無法通訊的原因,改成單播就ok了:

主機配置keepalived.conf如下,重點關注unicast_src_ip和unicast_peer欄位。

[html]
  1. ! Configuration File for keepalived  
  2. global_defs {  
  3.    notification_email { #指定Keepalived在發生事情的時候,傳送郵件通知,每行一個地址  
  4.      [email protected]  
  5.      [email protected]  
  6.      [email protected]  
  7.    }  
  8.    notification_email_from [email protected] #指定發件人  
  9.    smtp_server 192.168.200.1 #傳送email的smtp地址  
  10.    smtp_connect_timeout 30 #超時時間  
  11.    router_id lb01 #執行Keepalived的機器標識號,主從機必須不同  
  12.    ##vrrp_skip_check_adv_addr #註釋掉vrrp_strict相關是為了解決虛擬ip,ping不通的問題  
  13.    ##vrrp_strict  
  14.    ##vrrp_garp_interval 0  
  15.    ##vrrp_gna_interval 0  
  16. }  
  17. vrrp_instance VI_1 {  
  18.     state MASTER  
  19.     interface ens33 #物理網絡卡名稱,主節點和備節點需要相同  
  20.     virtual_router_id 100 #唯一的id,主從機必須相同  
  21.     priority 150 #優先順序,主節點大於備節點,建議至少相差50  
  22.     unicast_src_ip  172.16.6.161 #本地IP地址  
  23.     unicast_peer {  
  24.                   172.16.6.135 #對端IP地址,此地址一定不能忘記  
  25.                        }  
  26.     advert_int 1 #通訊檢查間隔時間1s  
  27.     authentication {  
  28.         auth_type PASS  
  29.         auth_pass 1111  
  30.     }  
  31.     virtual_ipaddress {  
  32.         172.16.6.200 #虛擬ip,會繫結在ens33網絡卡  
  33.     }  
  34. }  

備機配置keepalived.conf如下,重點關注unicast_src_ip和unicast_peer欄位。

  1. ! Configuration File for keepalived  
  2. global_defs {  
  3.    notification_email { #指定Keepalived在發生事情的時候,傳送郵件通知,每行一個地址  
  4.      [email protected]  
  5.      [email protected]  
  6.      [email protected]  
  7.    }  
  8.    notification_email_from [email protected] #指定發件人  
  9.    smtp_server 192.168.200.1 #傳送email的smtp地址  
  10.    smtp_connect_timeout 30 #超時時間  
  11.    router_id lb02 #執行Keepalived的機器標識號,主從機必須不同  
  12.    ##vrrp_skip_check_adv_addr #註釋掉vrrp_strict相關是為了解決虛擬ip,ping不通的問題  
  13.    ##vrrp_strict  
  14.    ##vrrp_garp_interval 0  
  15.    ##vrrp_gna_interval 0  
  16. }  
  17. vrrp_instance VI_1 {  
  18.     state BACKUP  
  19.     interface ens33 #物理網絡卡名稱,主節點和備節點需要相同  
  20.     virtual_router_id 100 #唯一的id,主從機必須相同  
  21.     priority 100 #優先順序,主節點大於備節點,建議至少相差50  
  22.     unicast_src_ip  172.16.6.135 #本地IP地址  
  23.     unicast_peer {  
  24.                   172.16.6.161 #對端IP地址,此地址一定不能忘記  
  25.                        }  
  26.     advert_int 1 #通訊檢查間隔時間1s  
  27.     authentication {  
  28.         auth_type PASS  
  29.         auth_pass 1111  
  30.     }  
  31.     virtual_ipaddress {  
  32.         172.16.6.200 #虛擬ip,會繫結在ens33網絡卡  
  33.     }  
  34. }  

6、如果開啟firewall防火牆,則記得要放行VRRP預設的多播地址224.0.0.18,centos7下面改firewall防火牆命令如下:

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT 

firewall-cmd --reload

相關推薦

keepalived-1.4.2實踐安裝測試

一、下載安裝1、作業系統:CentOS 7.4,先確保安裝了openssl,安裝方法: yum -y install openssl-devel沒有OpenSSL的話,configure會報錯: !!! OpenSSL is not properly installed on

spring boot 1.4.2.RELEASE+Thymeleaf+mybatis 整合通用maper,分頁外掛

spring boot 1.4.2.RELEASE+Thymeleaf+mybatis 整合通用maper,與分頁外掛: pom.xml <parent> <groupId>org.springframe

整合Nutch2.3.1/Hadoop2.5.2/Hbase1.1.5/Solr4.10.4構建搜尋引擎安裝及執行

第一次寫部落格,之前從來沒有寫過部落格因為不知道要寫什麼,這次寫部落格是因為自己在學習東西的時候遇見很多問題,國內的技術資料基本都是比較老的,要不就是nutch2.x整合hadoop1.x的,沒有找到整合hadoop2.x的,對hbase的整合度也很少,自己在學習的時候,

1.4.2 暫停恢復Activity

devel 過程 信號 fun ide 然而 -a 動作 好的 在正常使用app時,前端的activity有時會被其他可見的組件阻塞(obstructed),從而導致當前的activity進入Pause狀態。例如,當打開一個半透明的activity時(例如以對話框的形式),

Unity Shaders and Effects Cookbook (4-1)(4-2)靜態立方體貼圖的創建使用

sampler lba into 現實生活 rate valid ase pro 執行 開始學習第4章 - 著色器的反射看完了1、2節,來記錄一下。反射主要是利用了 Cubemap 立方體貼圖。認識Cubemap立方體貼圖。就如同名字所說。在一個立方體上有6張圖。就這樣

Ionic開發1安裝新建項目

onclick 安卓 rdo start 開發工具 布局 情況 技術分享 成了 我們為什麽要選用Ionic(Hybrid)呢? 不必說那些花裏胡哨的話,我曾經是搞Native Android開發的,兩者的區別還是有體會的 比如:我要做一個手機qq好友列表類似得布局,只是布局

易學筆記-計算機底層-第1計算機系統漫遊/1.4 處理器處理記憶體中的指令/1.4.2 執行hello程式

執行hello程式 流程圖 解釋: 從鍵盤接受使用者輸入的hello 把該輸入通過IO橋送到匯流排介面,由匯流排介面送到暫存器 暫存器再通過I/O橋把hello送到主存 敲

lighttpd1.4.20原始碼分析安裝配置

1、有兩種渠道下載原始碼,分別是: http://www.lighttpd.net/download/ -- 官網https://github.com/lighttpd -- GitHub 官網下載的原始碼和GitHub的略有不同,我們以前者,也就是官網的為準。   2

mongodb學習-1安裝基本語句

1.安裝MongoDB     - 安裝     - 配置環境變數         C:\Program Files\MongoDB\Server\3.2\bin     - 在c盤根目錄         - 建立一個資料夾 data         - 在data中建立一個

安裝k8s 1.9.0 實踐問題集錦

[[email protected] ~]# systemctl status kubelet ● kubelet.service - kubelet: The Kubernetes Node Agent Loaded: loaded (/etc/systemd/system/kubelet.

Linux-7.2 下 Solr4.10.4 單機模式的安裝部署圖文詳解

《 Linux下Solr4.10.4搜尋引擎的安裝與部署 》 瞭解Solr: Solr是來自Apache Lucene專案的流行的,快速的,開源的NoSQL搜尋平臺。它的主要功能包括強大

Py之Beautiful Soup 4.2.0Beautiful Soup 4.2.0的簡介、安裝、使用方法詳細攻略

Beautiful Soup 4.2.0的簡介     Beautiful Soup 是一個可以從HTML或XML檔案中提取資料的Python庫.它能夠通過你喜歡的轉換器實現慣用的文件導航,查詢,修改文件的方式.Beautiful Soup會幫你節省數小時甚至數天的工作時間

Laravel學習日記1安裝初識

前話: 一直使用ThinkPHP框架,最近計劃由tp3升級到tp5,結果發現tp5相關的文件都是收費的,準備棄之,換用Laravel。 工作的環境都是Linux,因此只討論Linux下的操作,不涉及windows相關。 相對於TP而

Flink 1.4.2安裝

依賴需求 Java 1.8.0 Scala code runner version 2.11.2 Hadoop2.7 配置安裝 首先解壓安裝包flink-1.4.2-bin-hadoop27-scala_2.11.tgz [[email pro

在RedHat9.0下安裝Subversion 1.4.2

使用了多年的CVS,苦來酸甜都嚐遍。一直垂涎subversion,卻沒有機會。而今機緣巧合得以在部門內推廣subversion, 不亦悅乎。因部門開發需要使用RedHat9.0,伺服器一直使用這個版本的linux沒有升級。9.0自帶的subversion版本太低(0.17.1

3.1 Java以及Lucene的安裝配置

clas font style edi 面向對象 上進 net ref ips Lucene是Java開發的一套用於全文檢索和搜索的開源程序庫,它面向對象多層封裝,提供了一個低耦合、與平臺無關的、可進行二次開發的全文檢索引擎架構,是這幾年最受歡迎的信息檢索程序庫[1]。對L

菜鳥運維筆記安裝配置Apacheserver

str .cn apach tps 官網 壓縮 ron entos 本地 前幾天在在阿裏花了49.5買了一個月的主機。試著好用再續費吧。 地域:青島可用區:青島可用區ACPU:1核內存:512MB帶寬:1Mbps操作系統:CentOS 6.5 64位雲盾:是

jQuery treeTable v 1.4.2

ica select angularjs ron tree repeat style cond 4.2 angularJs版本: 如圖所示即為treeTable的效果,三個紅色框每個微一級 外科>骨科>骨科一病區 html: <table class=

【轉】Poco 1.4.2 HTTPClientSession/HTTPRequest 使用使用代理(proxy)需要註意的一點

方法 xxx and aid csdn 代理 ref cpp logs Poco 1.4.2 HTTPClientSession/HTTPClientSession 在使用代理的時候,request的URI不能包含協議和主機。否則會出錯。 不使用代理的時候,以下代碼能正

初識vue 2.0(2路由組件

組件化 script -128 watch css image 暫時 效果 默認 1,在上一篇的創建工程中,使用的的模版 webpack-simple 只是創建了一個簡單的demo,並沒有組件和路由功能,此次采用了webpack模版,自動生成組件和路由。^_^ 在模版初始