keepalived+lvs配置安裝

来源:http://www.cnblogs.com/my-notebook/archive/2017/10/28/7746805.html
-Advertisement-
Play Games

安裝: tar -zxvf keepalived-1.2.2.tar.gz yum list all |grep "ipvsadm" yum -y install kernel-devel openssl-develpopt-devel ipvsadm libnl libnl-devel servi ...


安裝:

tar -zxvf keepalived-1.2.2.tar.gz

yum list all |grep "ipvsadm"

yum -y install kernel-devel openssl-develpopt-devel ipvsadm libnl libnl-devel

service iptables stop

setenforce 0

./configure --prefix=/--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64 && make&& make install

添加系統服務:

chkconfig --add keepalived   添加後可以使用service、chkconfig工具管理keepalived服務

chkconfig keepalived on            on級別為2、3、4

chkconfig --list keepalived        查看2、3、4級別是否開啟

 

 

 

全局配置文件:

global_defs {

  notification_email {

    [email protected]

    [email protected]

    [email protected]

   }

  notification_email_from [email protected]

  smtp_server 192.168.1.1

  smtp_connect_timeout 30

  router_id LVS_master

}         

 

 

vrrp_script check_httpd {

#vrrp_script模塊專門用於對集群中服務資源進行監控(HA集群監控)。於此模塊一起使用的還有track_script模塊,track_script模塊主要是調用vrrp_script模塊。還可以檢查埠、shell語句檢查、腳本檢查。在附錄下麵演示

script “killall –O httpd”

#用killall –O httpd 查看httpd服務返回狀態,如果是零則表示運行正常,為1則表示運行異常。

interval 2

#檢查的時間間隔,單位為秒。

}

 

Vrrp配置(keepalived高可用配置)實例:

vrrp_instance VI_1 {

#標識,vrrp實例開始的標識

state MASTER

#定義主備角色master和backup

interface eth0

#指定監聽網卡

virtual_router_id51

#虛擬路由標識,此標識主備不許相同。

priority 100

#優先順序。數字越大優先順序越高,在同一個vrrp-instance下master必須比backup優先順序大

advert_int 1

#設置master與backup之間同步檢查的時間間隔,單位是秒

   authentication {

       auth_type PASS

       auth_pass 1111

         #設定master和backup驗證類型(AH、PASS)和密碼,主備密碼一致才能通信。

}

 

notify_master “/etc/keep/master.sh”

notify_backup “/etc/keep/backup.sh”

notify_fault “/etc/keep/fault.sh”

#指定當keepalived進入master、backup、fault狀態時執行到腳本。腳本舉例在附錄下。

 

track_script {

         check_httpd

}

#調用vrrp_script模塊,check_httpd為vrrp_script模塊後面跟的名字。

 

   virtual_ipaddress { 

       192.168.1.250

#虛擬地址,可以設置多個。它是以ip address add的方式加入地址。

    }

#nopreempt

#不搶占功能,此功能只能用在state狀態是backup的節點上,而且這個節點優先順序要高於其他節點

#preempt_delay 300

#搶占延遲時間,單位是秒。例如:網路有抖動master節點向backup節點發送探測包不及時實際master節點沒有問題,無需主備切換。重啟服務或重啟系統也是如此。

}

vrrp配置附錄———————————————

notify_master “/etc/keep/master.sh” 腳本實例如下:

#!/bin/bash

logfile=/var/log/keep/keep-http-statsu.log

echo “[MASTER]” >>$logfile

date >> $logfile

backup.sh和fault.sh 略過。

 

埠檢查:

vrrp_script check_httpd {

script “</dev/tcp/127.0.0.1/80”

#這個方式是定義了對本機的80埠的狀態檢查。

interval 2

#檢查的時間間隔,單位為秒。

fall 2

#表示檢查到失敗的最大次數

rise 1

#表示檢查到一次成功,則認為節點恢復正常。

}

 

shell語句檢查:

vrrp_script check_httpd {

script “if [ -f /var/run/httpd/httpd.pid ];hten exit 0; else exit 1; fi”

# 檢查pid文件是否存在,如果返回0表示正常,返回1則表示異常。

interval 2

#檢查的時間間隔,單位為秒。

fall 2

#表示檢查到失敗的最大次數

rise 1

#表示檢查到一次成功,則認為節點恢復正常。

}

 

vrrp_script需要track_script模塊調用我在演示時省略,但是不要忘記在vrrp_instance配置實例中調用。

------------------------------------------------------------------------------------------

 

LVS(負載均衡)配置實例:

virtual_server 192.168.1.250 {

#LVS配置實例已virtual_server表示開始

delay_loop 6

#設置健康檢查的間隔,單位是秒。

lb_algo rr

#負載調度演算法,有rr(輪巡)、wrr(加權輪詢)、lc、wlc、lblc、sh、dh等

lb_kind NAT

#負載均衡機制,有NAT、TUN、DR。

nat_mask255.255.255.0

#不知道是什麼意思,後續在查。

persistence_timeout50

#同一IP的連接50秒內被分配到同一臺realserver

persistence_granularity255.255.255.0

#此選項是配合persistence_timeout,如果後面寫的是4個255就代表單個ip,如果是255.255.255.0則代表客戶端所在的整個網段的請求都會分配到同一臺real_server上。

   protocol TCP

    #指定轉發協議類型有tcp和udp。

sorry_server192.168.1.120 80

#相當一個備用節點,當所有real_server節點失效則啟用備用節點

real_server192.168.1.108 80 {

# real_server段的開始標識,後面跟著的是後端節點真實ip地址。Ip和埠用空格分開。

       weight 1

                   #權重。數值越大權重越高。為性能高的節點分配高權重。合理使用節點

                   notify_up/root/keepalived/keepup.sh

                   notify_down/root/keepalived/keepdown.sh

                   #表示在檢測到real_server節點是up或是down時執行的腳本。

      HTTP_GET |SSL_GET {

                   #Http和SSL檢測方式實例

           url {

                            #可以指定多個URL

              path /index.html

                                     #後面跟詳細的路徑

              digestff20ad2481f97b1754ef3e12ecd3a9cc

                                     #SSl檢查後的摘要信息,這個摘要信息可以通過ganhash命令工具獲取。例如:ganhash -s192.168.1.108 –p 80 –u /。

                              status_code 200

                            #返回的結果是200狀態碼。

           }

                            connect_port80

                            #健康檢查的埠,如果不指定,預設是real_server指定的埠

                            bindto192.168.1.108

                            #通過此地址發送請求檢查伺服器健康狀態。

           connect_timeout 3

                            #無響應時間,單位是秒。

           nb_get_retry 3

                            #重試次數

           delay_before_retry 3

                            #重試次數的間隔。

       }

    }

}

 

lvs配置附錄----------------------------------------

除了HTTP_GET 、SSL_GET這兩個real_server健康狀態檢查外還有TCP_CHECK、MISC_CHECK、SMTP_CHECK這三個。

 

接下來演示TCP_CHECK(埠檢查)、MISC_CHECK(外部程式檢查也就是腳本檢查)

 

TCP_CHECK{

                            connect_port80

                            #健康檢查的埠,如果不指定,預設是real_server指定的埠

           connect_timeout 3

                            #無響應時間,單位是秒。

           nb_get_retry 3

                            #重試次數

           delay_before_retry 3

                            #重試次數的間隔。

 

 

 

MISC_CHECK{

misc_path “/usr/local/bin/script.sh 1.1.1.180 http://www.baidu.com”

#指定腳本的執行路徑,後面可以帶參數。跟普通方式執行腳本相同。

misc_timeout 5

#設定腳本的超時時間

! misc_dynamic

#表示不啟用節點動態調整real_server權重。

#如果啟用並且返回碼是零則表示檢查正常,權重不變。如果是1則表示節點異常權重降為零。如果返回值是2-255之間的數字則用返回值減2。如:返回值是10,權重則是8(10-2)

/usr/local/bin/script.sh 腳本如下:

cat/usr/local/bin/check_squidproxy.sh  1.1.1.1  80  http://www.baidu.com

#!/bin/bash

 if [ $#-ne 3 ];then

  echo"Warning: check_command error."

  exit 1

else

  PROXY_IP=$1

  PROXY_PORT=$2

  CHECK_URL=$3

  CMD=`/usr/bin/curl-I -x ${PROXY_IP}:${PROXY_PORT} "${CHECK_URL}" 2>/dev/null | grep"200 OK" | wc -l`

  if [ ${CMD} -ne 1];then

    echo"CRITCAL: check proxy ${PROXY_IP} failed."

    exit 1

  else

    echo"OK: check proxy ${PROXY_IP} OK."

    echo0

  fi

fi

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在 /etc/profile 文件中,有一段腳本: 這裡的 “點號 + 空格 + 文件” 是什麼含義? 1、如果我們要執行某個文件,但是此文件不可執行,此時我們要用 chmod u+x file_name 來使文件具有可執行許可權2、可是有時我們不想更改此文件的執行許可權,但又想執行此文件,可以採用(點 ...
  • 一、準備工作 1. DiskGenius:分區工具,為 Linux 建立單獨的分區。(Linux 公社下載源) 2. UUI:Universal USB Installer,通用 U 盤安裝器,用來製作一個功能類似 WinPE 的 Linux 系統。在這個 Linux 系統里我們安裝 Ubuntu。 ...
  • 這篇不是專業權威的tmux指南,只是我的一點點使用經驗,更詳盡的資料請google。 tmux 是什麼 先說說tmux是什麼,不要被什麼視窗會話管理嚇到了,工具都是用來解決問題的。 在遠程linux機器開發是每個程式員工作中最常見的場景,不可避免地會遇到問題:一個視窗不夠用!最初我在windows系 ...
  • 在高可用(HA)系統中,當聯繫2個節點的“心跳線”斷開時,本來為一整體、動作協調的HA系統,就分裂成為2個獨立的個體。由於相互失去了聯繫,都以為是對方出了故障。兩個節點上的HA軟體像“裂腦人”一樣,爭搶“共用資源”、爭起“應用服務”,就會發生嚴重後果——或者共用資源被瓜分、2邊“服務”都起不來了;或 ...
  • 1>監控概述 通常運維人員在一個企業當中所需要管理一臺或者多台伺服器,或者甚至更多,特別是BAT公司或者門戶級別的公司,一個人管理的伺服器可能上百甚至上千台 而在這些管理的過程當中,作為運維人員我們需要知道我所管理的每一個伺服器所運行的詳細狀態,其中包括,物理資源的消耗狀態(CPU 記憶體 硬碟 IO ...
  • U盤啟動。進入到此界面後 按Tab鍵,將命令修改為:>vmlinuz initrd=initrd.img linux dd quiet 改好之後回車,然後就會列出你的設備列表了,找到你的U盤所在的盤符。並且記住了,後面要用 再次通過U盤啟動電腦,繼續修改第2步中出現的命令 重覆第2步,然後將底下的命 ...
  • MSYS2下載:http://www.msys2.org/ MSYS2是什麼 MSYS2 (Minimal SYStem 2) 是一個MSYS的獨立改寫版本,主要用於 shell 命令行開發環境。同時它也是一個在Cygwin (POSIX 相容性層) 和 MinGW w64(從"MinGW 生成") ...
  • 一、服務分類 1、二進位包 (1)、 快速安裝、卸載、升級和管理軟體 (2)、安裝簡潔、速度快 (3)、經過封裝,無法直接獲取源代碼 (4)、功能選擇性差,功能定製不靈活 2、源碼包 (1)、獲得最新的軟體版本,及時修複bug (2)、根據用戶需要,靈活定製軟體功能 二、RPM包的服務管理 RPM包 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...