1. 程式人生 > >Keepalived實現LVS(DR模式)+自動後端健康檢測

Keepalived實現LVS(DR模式)+自動後端健康檢測

上一篇部落格《Keepalived實現NAT+LVS+後端健康檢測》簡單介紹了NAT模式的LVS搭建步驟,下面介紹一下使用更普遍、網路結構更簡單的DR模式搭建方法。

不同與NAT模式,DR模式不需要跨兩個網段,負載均衡伺服器和真實Web伺服器還有客戶端都可以放在同一個網段裡,對網路的複雜性要求降低,而且有一個好處是負載量會提高,因為資料流量不需要通過負載均衡器進行路由,使負載均衡器不會產生瓶頸。但是也有缺點,一是真實Web伺服器需要修改自己的lo網絡卡,這樣需要對真實web伺服器進行一些網路配置,另一個是無法實現NAT中的埠對映功能,比如負載均衡器開放的是80埠,那麼後端的真實Web伺服器也必須開放80埠,而在NAT模式下,對後端伺服器的埠沒有限制。

首先介紹一下網路分配

伺服器 真實地址 虛擬地址 閘道器地址
Keepalived主伺服器 10.100.100.89 10.100.100.200 10.100.100.1
Keepalived備伺服器 10.100.100.88 10.100.100.200 10.100.100.1
真實HTTP服務1 10.100.100.101 10.100.100.200 10.100.100.1
真實HTTP服務2 10.100.100.102 10.100.100.200 10.100.100.1

在這個網路中,所有網路流量都通過閘道器10.100.100.1進行進出,客戶端訪問地址為虛擬地址10.100.100.200,客戶端的請求到達keepalived後,會修改資料包的MAC地址然後傳送給兩臺真實HTTP伺服器,真實HTTP由於也配有虛擬地址,所以會正常接收這個資料包,然後返回流量通過閘道器直接返回給使用者而非流經負載均衡器再走閘道器,所以負載均衡器的壓力相對NAT模式大大減小。負載均衡器和HTTP伺服器均只開放8080埠。因為DR模式下開放的埠必須一致。

在真實Web伺服器上因為要設定lo網絡卡上的虛擬ip,並關閉arp響應(如果不關閉,那麼所有使用vip的伺服器就會造成IP衝突或者說是ARP欺騙),方法很簡單,直接寫一個指令碼即可,並且還可以開機自啟

vi  /etc/init.d/realserver

SNS_VIP=10.100.100.200
#/etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_VIP dev lo:0
       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
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

增加可執行許可權

chmod 755 /etc/init.d/realserver

然後啟動很方便,因為已經註冊為了linux服務

service realserver start

或者

/etc/init.d/realserver start

下面是keepalived主機的配置檔案

! Configuration File for keepalived

global_defs {
   router_id LVS_MASTER
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 91
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.100.100.200
    }
}

virtual_server 10.100.100.200 8080 {
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
	nat_mask 255.255.255.0
    protocol TCP

    real_server 10.100.100.101 8080 {
        weight 1
        HTTP_GET {
            url {
              path /hello
              digest d7f986677d9f563bd1794b09d82206a3
			  status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
	
	real_server 10.100.100.102 8080 {
        weight 1
        HTTP_GET {
            url {
              path /hello
              digest 3dc49f3f365e728446c8f8df2475464d
			  status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

啟動命令

service keepalived start

keepalived主的啟動日誌如下 /var/log/message

Jul 27 22:26:27 lvsnat1 systemd: Starting LVS and VRRP High Availability Monitor...
Jul 27 22:26:27 lvsnat1 Keepalived[7331]: Starting Keepalived v2.0.6 (07/23,2018)
Jul 27 22:26:27 lvsnat1 Keepalived[7331]: Running on Linux 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 (built for Linux 3.10.0)
Jul 27 22:26:27 lvsnat1 Keepalived[7331]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 27 22:26:27 lvsnat1 Keepalived[7332]: Starting Healthcheck child process, pid=7333
Jul 27 22:26:27 lvsnat1 systemd: Started LVS and VRRP High Availability Monitor.
Jul 27 22:26:27 lvsnat1 Keepalived[7332]: Starting VRRP child process, pid=7334
Jul 27 22:26:27 lvsnat1 Keepalived_healthcheckers[7333]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 27 22:26:27 lvsnat1 Keepalived_healthcheckers[7333]: Unknown keyword 'nat_mask'
Jul 27 22:26:27 lvsnat1 Keepalived_healthcheckers[7333]: Gained quorum 1+0=1 <= 2 for VS [10.100.100.200]:tcp:8080
Jul 27 22:26:27 lvsnat1 Keepalived_healthcheckers[7333]: Activating healthchecker for service [10.100.100.101]:tcp:8080 for VS [10.100.100.200]:tcp:8080
Jul 27 22:26:27 lvsnat1 Keepalived_healthcheckers[7333]: Activating healthchecker for service [10.100.100.102]:tcp:8080 for VS [10.100.100.200]:tcp:8080
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: Registering Kernel netlink reflector
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: Registering Kernel netlink command channel
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: Assigned address 10.100.100.89 for interface ens192
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: Assigned address fe80::7602:aaf3:d259:a375 for interface ens192
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: Registering gratuitous ARP shared channel
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: (VI_1) removing VIPs.
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: (VI_1) Entering BACKUP STATE (init)
Jul 27 22:26:27 lvsnat1 Keepalived_vrrp[7334]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(8,9)]
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: (VI_1) Receive advertisement timeout
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: (VI_1) Entering MASTER STATE
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: (VI_1) setting VIPs.
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: (VI_1) Sending/queueing gratuitous ARPs on ens192 for 10.100.100.200
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:31 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:36 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:36 lvsnat1 Keepalived_vrrp[7334]: (VI_1) Sending/queueing gratuitous ARPs on ens192 for 10.100.100.200
Jul 27 22:26:36 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:36 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:36 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 27 22:26:36 lvsnat1 Keepalived_vrrp[7334]: Sending gratuitous ARP on ens192 for 10.100.100.200

由於添加了頁面MD5值來判斷服務的可用性,於是我們修改頁面,模擬http服務頁面錯誤,觀察keepalived的日誌

Jul 27 22:28:34 lvsnat1 Keepalived_healthcheckers[7333]: MD5 digest error to server [10.100.100.102]:tcp:8080.
Jul 27 22:28:37 lvsnat1 Keepalived_healthcheckers[7333]: MD5 digest error to server [10.100.100.102]:tcp:8080.
Jul 27 22:28:40 lvsnat1 Keepalived_healthcheckers[7333]: MD5 digest error to server [10.100.100.102]:tcp:8080.
Jul 27 22:28:43 lvsnat1 Keepalived_healthcheckers[7333]: MD5 digest error to server [10.100.100.102]:tcp:8080.
Jul 27 22:28:43 lvsnat1 Keepalived_healthcheckers[7333]: Check on service [10.100.100.102]:tcp:8080 failed.
Jul 27 22:28:43 lvsnat1 Keepalived_healthcheckers[7333]: Removing service [10.100.100.102]:tcp:8080 to VS [10.100.100.200]:tcp:8080

可以看到在多次檢查MD5值錯誤之後,keepalived將真實伺服器移出列表,再次之後就訪問不到這個伺服器上的HTTP服務了。但是在這之前是可以訪問到錯誤頁面的。

然後我們再把真實伺服器的頁面內容改回來,模擬服務恢復正常,觀察keepalived的日誌

ul 27 23:55:16 lvsnat1 Keepalived_healthcheckers[7333]: MD5 digest success to [10.100.100.102]:tcp:8080 url(1).
Jul 27 23:55:16 lvsnat1 Keepalived_healthcheckers[7333]: Remote Web server [10.100.100.102]:tcp:8080 succeed on service.
Jul 27 23:55:16 lvsnat1 Keepalived_healthcheckers[7333]: Adding service [10.100.100.102]:tcp:8080 to VS [10.100.100.200]:tcp:8080

然後又可以正常的負載均衡了。

下面再看一下備機的配置檔案寫法

! Configuration File for keepalived
 
global_defs {
   router_id LVS_BACKUP            #BACKUP上修改為LVS_BACKUP
}
 
vrrp_instance VI_1 {
    state BACKUP                   #BACKUP上修改為BACKUP
    interface ens192               #此處是要繫結虛擬IP的網絡卡名稱
    virtual_router_id 91           #此處要與master一致
    priority 80                    #BACKUP上修改為80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.100.100.200             #此處要與master一致
    }
}

 
virtual_server 10.100.100.200 8080 {
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
 
    real_server 10.100.100.101 8080 {
        weight 1
        HTTP_GET {
            url {
              path /hello
              digest d7f986677d9f563bd1794b09d82206a3
			  status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
	
	real_server 10.100.100.102 8080 {
        weight 1
        HTTP_GET {
            url {
              path /hello
              digest 3dc49f3f365e728446c8f8df2475464d
			  status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

啟動日誌

Jul 28 00:32:15 lvsdr1 systemd: Starting LVS and VRRP High Availability Monitor...
Jul 28 00:32:15 lvsdr1 Keepalived[1811]: Starting Keepalived v2.0.6 (07/23,2018)
Jul 28 00:32:15 lvsdr1 Keepalived[1811]: Running on Linux 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 (built for Linux 3.10.0)
Jul 28 00:32:15 lvsdr1 Keepalived[1811]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 28 00:32:15 lvsdr1 Keepalived[1811]: WARNING - 1 missing '}'(s) in the config file(s)
Jul 28 00:32:15 lvsdr1 Keepalived[1812]: Starting Healthcheck child process, pid=1813
Jul 28 00:32:15 lvsdr1 systemd: Started LVS and VRRP High Availability Monitor.
Jul 28 00:32:15 lvsdr1 Keepalived[1812]: Starting VRRP child process, pid=1814
Jul 28 00:32:15 lvsdr1 Keepalived_healthcheckers[1813]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 28 00:32:15 lvsdr1 Keepalived_healthcheckers[1813]: Gained quorum 1+0=1 <= 2 for VS [10.100.100.200]:tcp:8080
Jul 28 00:32:15 lvsdr1 Keepalived_healthcheckers[1813]: Activating healthchecker for service [10.100.100.101]:tcp:8080 for VS [10.100.100.200]:tcp:8080
Jul 28 00:32:15 lvsdr1 Keepalived_healthcheckers[1813]: Activating healthchecker for service [10.100.100.102]:tcp:8080 for VS [10.100.100.200]:tcp:8080
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: Registering Kernel netlink reflector
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: Registering Kernel netlink command channel
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: Opening file '/etc/keepalived/keepalived.conf'.
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: WARNING - 1 missing '}'(s) in the config file(s)
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: Assigned address 10.100.100.88 for interface ens192
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: Assigned address fe80::7602:aaf3:d259:a375 for interface ens192
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: Registering gratuitous ARP shared channel
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: (VI_1) removing VIPs.
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: (VI_1) Entering BACKUP STATE (init)
Jul 28 00:32:15 lvsdr1 Keepalived_vrrp[1814]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(8,9)]

可以看到,沒有廣播VIP的ARP,並且沒有繫結VIP的地址,如下

[[email protected] ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:be:8d:18 brd ff:ff:ff:ff:ff:ff
    inet 10.100.100.88/24 brd 10.100.100.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::7602:aaf3:d259:a375/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

然後我們此時停掉主keepalived,看備伺服器能否順利接管VIP,日誌如下

Jul 28 00:32:36 lvsdr1 Keepalived_vrrp[1814]: (VI_1) Backup received priority 0 advertisement
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: (VI_1) Receive advertisement timeout
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: (VI_1) Entering MASTER STATE
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: (VI_1) setting VIPs.
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: (VI_1) Sending/queueing gratuitous ARPs on ens192 for 10.100.100.200
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:37 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:42 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:42 lvsdr1 Keepalived_vrrp[1814]: (VI_1) Sending/queueing gratuitous ARPs on ens192 for 10.100.100.200
Jul 28 00:32:42 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:42 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:42 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200
Jul 28 00:32:42 lvsdr1 Keepalived_vrrp[1814]: Sending gratuitous ARP on ens192 for 10.100.100.200

可以看到,備機已經偵測到主機掛掉,並順利接管了VIP

[[email protected] ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:be:8d:18 brd ff:ff:ff:ff:ff:ff
    inet 10.100.100.88/24 brd 10.100.100.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet 10.100.100.200/32 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::7602:aaf3:d259:a375/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

然後我們啟動keepalived主伺服器,觀察備伺服器能否主動將VIP讓出

Jul 28 00:36:30 lvsdr1 Keepalived_vrrp[1814]: (VI_1) Master received advert from 10.100.100.89 with higher priority 100, ours 80
Jul 28 00:36:30 lvsdr1 Keepalived_vrrp[1814]: (VI_1) Entering BACKUP STATE
Jul 28 00:36:30 lvsdr1 Keepalived_vrrp[1814]: (VI_1) removing VIPs.

可以看到,VIP已經成功從備伺服器上摘除

另外,Keepalived非常的只能,在檢測到real server故障之後不僅可以自動切換,自動維護LVS列表,而且可以通過呼叫指令碼的方式執行命令,實現報警和日誌記錄的功能,方法很簡單。

對於real server的切換,我們在/etc/keepalived目錄下建立如下四個檔案

web1down.sh  web1up.sh  web2down.sh  web2up.sh

內容類似下面的web1down.sh:

#!/bin/bash
echo "`date` web1 down" >> /tmp/lvs.log

這樣就實現了一個切換日誌記錄的功能,你也可以在指令碼中加入其他的報警命令。

然後在keepalived.conf中的後端server部分加入兩行,分別是notify_up和notify_down,如下

virtual_server 10.100.100.200 8080 {
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
 
    real_server 10.100.100.101 8080 {
        weight 1
		notify_up /etc/keepalived/web1up.sh
        notify_down /etc/keepalived/web1down.sh
        HTTP_GET {
            url {
              path /hello
              digest d7f986677d9f563bd1794b09d82206a3
			  status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
	
	real_server 10.100.100.102 8080 {
        weight 1
		notify_up /etc/keepalived/web2up.sh
        notify_down /etc/keepalived/web2down.sh
        HTTP_GET {
            url {
              path /hello
              digest 3dc49f3f365e728446c8f8df2475464d
			  status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

就實現了real server切換的報警和日誌記錄功能。同樣可以對keepalived主機備機切換記錄日誌和報警,具體指令碼寫法請參考另一篇部落格《Haproxy加持KeepAlived+程序自動檢測

相關推薦

Keepalived實現LVSDR模式+自動健康檢測

上一篇部落格《Keepalived實現NAT+LVS+後端健康檢測》簡單介紹了NAT模式的LVS搭建步驟,下面介紹一下使用更普遍、網路結構更簡單的DR模式搭建方法。 不同與NAT模式,DR模式不需要跨兩個網段,負載均衡伺服器和真實Web伺服器還有客戶端都可以放在同一個網段裡

基於keepalived+nginx+lvs的負載均衡的實現DR模式

LVS結合keepalive LVS可以實現負載均衡,但是不能夠進行健康檢查,比如一個rs出現故障,LVS 仍然會把請求轉發給故障的rs伺服器,這樣就會導致請求的無效性。keepalive 軟體可以進行健康檢查,而且能同時實現 LVS 的高可用性,解決 LVS 單點故障的問

lvs負載均衡叢集DR模式

DR模式叢集。 實際中都應該是網際網路的IP,這裡模擬現象。由web 直接回包給client。 會出現的問題 1、群集地址 (web回包IP與client請求不同)需要建立vip。 2、路由器ARP請求(需要關閉web1、web2部分arp響應)。 3、lvs關閉ICMP響應 (I

LVS | LVS負載均衡原理DR模式

一、LVS基本資訊 1、叢集 (1)什麼是叢集呢? 叢集就是一組獨立的計算機,通過網路連線組合成一個組合來共同完一個任務。 計算機叢集簡稱叢集是一種計算機系統,它通過一組鬆散整合的計算機軟體和/或硬體連線起來高度緊密地協作完成計算工作。在某種意義上,他們可以被看

Lvs負載均衡dr模式

1.安裝Lvs   安裝ipvsadm工具 yum -y install ipvsadm   2.先進行儲存再進行啟動 service ipvsadm save service ipvsadm start   3.開啟路由轉發功能,並啟動生效。 vi  /etc/sysc

LVM配置DR模式

地方 cal 定義 效率 oss 文件 cti 網絡 sch **LVS-DR模式工作原理:原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應,所有RS對本身這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求全部定向給DR,而DR收

Nginx知多少系列之(十四)Linux下.NET Core專案Nginx+Keepalived高可用主從模式

目錄 1.前言 2.安裝 3.配置檔案詳解 4.工作原理 5.Linux下託管.NET Core專案 6.Linux下.NET Core專案負載均衡 7.負載均衡策略 8.加權輪詢(round robin)策略剖析 9.IP雜湊(ip hash)策略剖析 10.最少連線(least_conn)策略剖析 11

LVSDR + Keepalived 實現負載均衡

lvs keepalived apacheLVS(DR) + Keepalived 實現負載均衡高可用一、為什麽要使 用負載均衡技術?1、 系統高可用性2、 系統可擴展性3、 負載均衡能力 LVS+keepalived能很好的實現以上的要求,LVS提 供負載均衡,keepalived提供健康檢查,

CentOS 7 部署LVS集群DR模式、NAT模式LVS+keepalived

楓雨1.簡介1.1LVS linux虛擬服務器,是一個虛擬的服務器集群系統,可以在Unix和linux平臺下實現負載均衡集群的功能。1.2LVS與nginx的對比 1)工作在網絡模型的7層,可以針對http應用做一些分流的策略,nginx單憑這點可利用的場合遠多於LVS。 2)最新版的nginx也支持4

LVS叢集-DR模式直接路由模式

1. 給realserver繫結vip地址,並設定網路介面幫兄弟介面收發IP包,且忽略arp廣播包。 web30,web40 繫結虛擬IP地址192.168.4.60 [[email protected] ~]# ifconfig lo:1 192.168.4.60/32 [[em

基於CentOS實現LVS的nat模式DR模式

linux lvs nat dr關於LVS的錯誤總結見以下:nat模式:http://amelie.blog.51cto.com/12850951/1979172DR模式:http://amelie.blog.51cto.com/12850951/1979437來自於某國內名企架構師的說法——LVS學好了,網

kotlin實現鴨子例子的設計模式行為模式

init 使用 win 必須 fun ray play 建立 arc package com.duck/** * 一. * 這樣做降低了程序的耦合度,但接口不具有實現方法,實現接口無法達到代碼的復用 * 關鍵字:耦合度,復用 */interface Flyable {

puppet單機模式-基於模塊方式實現redis主從

puppet redis主從 模塊 說明:puppet模塊存放位置有固定要求,不過為了實驗方便,先建一個臨時目錄來存放,當配置完成後移動到指定目錄。實現步驟:1、實現如下目錄結構[root@manifests modules]# tree ~/modules~/modules└── redis

LVS負載均衡群集1NAT模式

虛擬機 主從 實驗 a13 dac exp www 高可用群集 權限 一、群集技術概述 1、群集的類型1)負載均衡群集:主要的功能將來自客戶機的訪問請求分流給多臺服務器,從而緩單臺服務器的負載壓力,例如京東淘寶的購物節的時候,當天的並發量是分常大的,單臺服務器是無法承載的。

Keepalived實現LVS-DR集群高可用

cti 上線 bash 自己的 高可用性 touch from 輔助 lib 一、集群高可用概述 單純的lvs/nginx反向代理模型做負載集群應用時,DR(director)存在單點故障隱患,故需要有機制來保證DR的高可用性。常用的高可用性方案有Keepalived、co

Nginx + keepalived 雙機熱備主從模式

綁定 html 負載均衡 基於 模式 主備 class 接管 主主 雙機高可用一般是通過虛擬IP(飄移IP)方法來實現的,基於Linux/Unix的IP別名技術。 雙機高可用方法目前分為兩種: 1)雙機主從模式:即前端使用兩臺服務器,一臺主服務器和一臺熱備服務器,正常情況

模擬實現任務分配模板模式

在實際應用中有這樣一個場景:有m臺伺服器,有n個任務,需要把這n個任務按一定策略分配給m臺伺服器來執行,請按以下要求實現該場景: 1、使用List列表代表伺服器(列表中每個元素為一個IP地址); 2、使用List列表代表任務(列表中每個元素為任務ID); 3、分配的過程就是把IP地址與任務ID對

lvs負載均衡叢集NAT模式

群集的型別 1、負載均衡叢集:(LB)以提高系統的響應能力,儘可能處理更多的訪問請求、減少延遲為目標,獲得高併發、高負載的整體效能。 2、高可用叢集:(HA)以提高應用系統的可靠性,儘可能減少中斷時間為目標、確保服務的連續性,達到高可用的容錯效果。 3、高效能運算叢集:(H

互動式系統MVC模式 虛擬碼實現

上一篇博文簡要概述了MVC的基本框架流程 https://blog.csdn.net/yangfahe1/article/details/84075227        下面將利用虛擬碼編寫MVC建立流程,其中(1)到(6)是編寫MVC軟體框架的基本步

DES演算法的JAVA實現ECB模式

文章目錄 一、演算法原理概述 加密過程 初始置換IP 迭代T Feistel輪函式 子祕鑰生成 逆置換IP-1 解