日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

使用Nginx對Tomcat做負載均衡,nginx.conf中配置upstream

Nginx高可用HA

 

當Nginx請求過多時

Nginx高可用HA

 

Keepalived概念

1:解決單點故障

2:組件免費

3:可以實現高可用的HA機制

4:基于VRRP協議

VRRP:虛擬路由冗余協議

1:virtual router redundancy protocol

2:解決內網單機故障的路由協議

3:構建有多個路由器(Nginx) 的MASTER BACKUP

4:虛擬IP(virtual IP)

Keepalive 雙機主備原理

 

Nginx高可用HA

 

多臺Nginx機器配置之間硬件配置一致(主備),因為主機如果宕機之后,請求都打到備用機,如果此時備用機性能不好的話會很快就宕機了,主機恢復之后,請求重新打到主機

 

Nginx高可用HA

 

Keepalived下載keepalived.org

一、安裝

官方地址 keepalived 下載地址,選擇指定的版本后我們就開始下載

wget https://www.keepalived.org/software/keepalived-2.1.5.tar.gz

解壓縮

tar -zxvf keepalived-2.1.5.tar.gz

進行configure配置,指定安裝目錄:

cd keepalived-1.3.4 && ./configure --prefix=/home/keepalived-2.1.5/

編譯安裝

make && make install

如果安裝出現什么問題,一般都是缺少了環境,只要看報錯信息 yum install 相關環境就o了

二、keepalived 文件介紹(必須理解)

1. keepalived 啟動腳本文件

keepalived 的啟動腳本文件所在

/home/keepalived-2.1.5/keepalived/etc/init.d

啟動腳本文件代碼

#!/bin/sh
#
# Startup script for the Keepalived daemon      Keepalived 守護進程啟動腳本
#
# processname: keepalived
# pidfile: /var/run/keepalived.pid  keepalived.pid  路徑
# config: /etc/keepalived/keepalived.conf  
# chkconfig: - 21 79
# description: Start and stop Keepalived 啟動或者停止Keepalived

# Source function library 指定源函數庫位置(這個文件本身linux自帶不需要我們管)
. /etc/rc.d/init.d/functions

# Source configuration file (we set KEEPALIVED_OPTIONS there)  源配置文件(該文件設置 KEEPALIVED_OPTIONS 的參數) 這個文件需要我們自己移動
. /etc/sysconfig/keepalived

# 返回值 默認0
RETVAL=0

# 指令
prog="keepalived"

# 啟動 
start() {
    echo -n $"Starting $prog: "
    daemon keepalived ${KEEPALIVED_OPTIONS}
    # $? 執行上一個指令的返回值 (顯示最后命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤)
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}

stop() {
    echo -n $"Stopping $prog: "
    echo -n $"Stopping $prog: "
    killproc keepalived
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
}

reload() {
    echo -n $"Reloading $prog: "
    killproc keepalived -1
    RETVAL=$?
    echo
}

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    reload)
        reload
        ;;
    restart)
        stop
        start
        ;;
    condrestart)
                    if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
        fi
        ;;
    status)
        status keepalived
        RETVAL=$?
        ;;
    *)
        echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
        RETVAL=1
esac

exit $RETVAL          

可以看出提供了啟動,暫停,重啟這些命令。

2. keepalived 啟動參數文件

這里的啟動參數文件相當于以上的 KEEPALIVED_OPTIONS 。是啟動文件里的 . /etc/sysconfig/keepalived 文件。源文件在

/home/keepalived-2.1.5/keepalived/etc/sysconfig

我們查看一下內容

# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
# 這里是啟動常用參數 
# --vrrp               -P    Only run with VRRP subsystem. 僅與VRRP子系統一起運行。
# --check              -C    Only run with Health-checker subsystem. 僅與運行狀況檢查子系統一起運行
# --dont-release-vrrp  -V    Dont remove VRRP VIPs & VROUTEs on daemon stop. 不要在守護進程停止時刪除VRRP VIP和VROUTEs。
# --dont-release-ipvs  -I    Dont remove IPVS topology on daemon stop. 不要在守護進程停止時刪除IPVS拓撲。
# --dump-conf          -d    Dump the configuration data. 轉儲配置數據。
# --log-detail         -D    Detailed log messages. 詳細的日志消息。
# --log-facility       -S    0-7 Set local syslog facility (default=LOG_DAEMON) 0-7設置本地syslog工具(默認值=LOG_DAEMON)
#

# 這里就是設置啟動參數
KEEPALIVED_OPTIONS="-D"

這個文件主要是為了保存 keepalived 的啟動參數,要不然你啟動一次,下次你啟動你還記得你輸入過的參數嘛?那啟動參數具體有哪些?繼續往下看。

3.keepalived 啟動文件

位置如下

/home/keepalived-2.1.5/keepalived

查看啟動參數

[root@localhost keepalived]# ./keepalived -h
Usage: ./keepalived [OPTION...]
  -f, --use-file=FILE          使用指定的配置文件
  -P, --vrrp                   僅與VRRP子系統一起運行
  -C, --check                  僅與運行狀況檢查子系統一起運行
      --all                    強制所有子進程運行,即使沒有配置
  -l, --log-console            將消息記錄到本地控制臺
  -D, --log-detail             詳細的日志消息
  -S, --log-facility=[0-7]     將syslog facility設置為LOG_LOCAL[0-7]
  -G, --no-syslog              不通過系統日志記錄
  -u, --umask=MASK             umask for file creation (in numeric form)
  -X, --release-vips           從信號機過渡時放下VIP。
  -V, --dont-release-vrrp      不要在守護進程停止時刪除VRRP VIP和VRRoute
  -I, --dont-release-ipvs      在守護進程停止時不刪除IPV拓撲
  -R, --dont-respawn           不要重新生成子進程
  -n, --dont-fork              不要分叉守護進程
  -d, --dump-conf              轉儲配置數據
  -p, --pid=FILE               為父進程使用指定的pidfile
  -r, --vrrp_pid=FILE          為VRRP子進程使用指定的PID文件
  -c, --checkers_pid=FILE      對checkers子進程使用指定的pidfile
  -a, --address-monitoring     報告通過netlink通知的所有地址添加/刪除
  -s, --namespace=NAME         在網絡命名空間名稱中運行(重寫配置)
  -m, --core-dump              異常終止時產生堆芯轉儲
  -M, --core-dump-pattern=PATN Also set /proc/sys/kernel/core_pattern to PATN (default 'core')
  -i, --config-id id           Skip any configuration lines beginning '@' that don't match id
                                or any lines beginning @^ that do match.
                                The config-id defaults to the node name if option not used
      --signum=SIGFUNC         Return signal number for STOP, RELOAD, DATA, STATS, STATS_CLEAR
  -t, --config-test[=LOG_FILE] Check the configuration for obvious errors, output to
                                stderr by default
  -v, --version                Display the version number
  -h, --help                   Display this help message

4. keepalived .conf 配置文件

文件路徑

/home/keepalived-2.1.5/keepalived/etc/keepalived

文件內容簡介

# 全局配置
global_defs {
   # 指定keepalived在發生切換時需要發送email到的對象,一行一個郵件地址
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   # 指定發件人
   notification_email_from Alexandre.Cassen@firewall.loc
   # 指定smtp服務器地址
   smtp_server 192.168.200.1
   # 指定smtp連接超時時間
   smtp_connect_timeout 30
   # 運行keepalived機器的一個標識,必須唯一
   router_id LVS_DEVEL

   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#vrrp 實例部分定義,VI_1自定義名稱
vrrp_instance VI_1 {
    # 指定 keepalived 的角色,必須大寫 可選值:MASTER|BACKUP
    state MASTER
    # 網卡設置,lvs需要綁定在網卡上,RealServer 綁定在回環口。區別:lvs對訪問為外,realserver為內不易暴露本機信息
    interface eth0
    # 虛擬路由標識,是一個數字,同一個vrrp 實例使用唯一的標識,MASTER和BACKUP 的 同一個 vrrp_instance 下 這個標識必須保持一致
    virtual_router_id 51
    # 定義優先級,數字越大,優先級越高。
    priority 100
    # 設定 MASTER 與 BACKUP 負載均衡之間同步檢查的時間間隔,單位為秒,兩個節點設置必須一樣
    advert_int 1
    # 設置驗證類型和密碼,兩個節點必須一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 設置虛擬IP地址,可以設置多個虛擬IP地址,每行一個
    virtual_ipaddress {
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
     # 當前節點成為master時,通知腳本執行任務
    # notify_master "/etc/keepalived/start_haproxy.sh start" 
    # 當前節點成為backup時,通知腳本執行任務
    # notify_backup "/etc/keepalived/start_haproxy.sh stop"
    # 當當前節點出現故障,執行的任務;
    # notify_fault  "/etc/keepalived/start_haproxy.sh stop"
}

# 定義RealServer 對應的VIP及服務端口,IP和端口之間用空格隔開
virtual_server 192.168.200.16 1358 {
    # 健康檢查時間間隔
    delay_loop 6
    # lvs調度算法rr wrr lc wlc lblc sh dh
    lb_algo rr
    # 負載均衡轉發規則 NAT DR RUN
    lb_kind NAT
    # 同一IP的連接50秒內被分配到同一臺realserver
    persistence_timeout 50
    # 使用的協議
    protocol TCP
    # 備用機,所有realserver失效后啟用
    sorry_server 192.168.200.200 1358

    real_server 192.168.200.2 1358 {
        # 權重,最大越高,lvs就越優先訪問
        weight 1
        # keepalived的健康檢查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            # 要檢測的URL,可以有多個
            url {
              # 具體路徑
              path /testurl3/test.jsp
              # 檢測效驗碼
              digest 640205b7b0fc66c1ea91c463fac6334d
              # 檢測返回http狀態碼
              status_code 200         
            }
            # 3秒無響應超時
            connect_timeout 3
            # 重連次數3次
            retry 3
            # 重連間隔時間
            delay_before_retry 3
        }
    }

    real_server 192.168.200.3 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334c
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334c
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

keepalived 文件分為4種,啟動腳本文件、啟動參數文件、keepalived.conf文件、啟動文件。他們的執行關系是 啟動腳本文件 -> 找到啟動參數文件 -> 啟動參數文件里描述了keepalived.conf的路徑和日志等指令 -> 然后交給啟動文件執行(真實啟動)。

三、keepalived 啟動

啟動

./keepalived -f /home/keepalived-2.1.5/keepalived/etc/keepalived/keepalived.conf

快捷啟動

cp /home/keepalived-2.1.5/keepalived/etc/init.d/keepalived /etc/init.d/
cp /home/keepalived-2.1.5/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /home/keepalived-2.1.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
service keepalived [start | stop | reload | restart ]

keepalived 日志默認在

/var/log/messages

沒有配置正確的 keepalived.conf 啟動會提示成功,但實際沒有啟動,需要自己去改配置。 keepalived 日志信息需要仔細閱讀才能找到問題。

以上配置來源于網絡

分享到:
標簽:Nginx
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定