Redis系列四(keepalived+lvs搭建負載均衡)

  

  1.安裝Keepalived(主備服務器都要安裝)linux

  10.8.80.218  主服務器redis

  10.8.80.217  備服務器  算法

  10.8.80.200  虛擬IPvim

$ wget http://www.keepalived.org/software/keepalived-1.2.0.tar.gz
$ tar -zxvf keepalived-1.2.0.tar.gz
$ cd keepalived-1.2.0
$ ./configure --prefix=/usr/local/keepalived
$ make && make install後端

  文件Copy服務器

$ cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
$ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
$ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
$ mkdir -p /etc/keepalived/
$ cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf網絡

  keepalived.conf配置以下:負載均衡

10.8.80.218主服務器:oop

global_defs { } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.8.80.200 } } virtual_server 10.8.80.200 6379 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 protocol TCP real_server 10.8.80.218 6379 { weight 1 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } real_server 10.8.80.217 6379 { weight 1 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }

有幾個地方解釋一下:性能

 state MASTER :表示是主服務器

 priority 101    : 主的權重要高於從

 virtual_ipaddress :對外提供的虛擬IP

 lb_algo rr :    LVS有8種調度算法:

    1. 輪叫(Round Robin)
      調度器經過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。

    2. 加權輪叫(Weighted Round Robin)
      調度器經過"加權輪叫"調度算法根據真實服務器的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。

    3. 最少連接(Least Connections)
      調度器經過"最少鏈接"調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器具備相近的系統性能,採用"最小鏈接"調度算法能夠較好地均衡負載

    4. 加權最少連接(Weighted Least Connections)
      在集羣系統中的服務器性能差別較大的狀況下,調度器採用"加權最少連接"調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。

    5. 基於局部性的最少連接(Locality-Based Least Connections)
      "基於局部性的最少連接" 調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器 是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用"最少連接"的原則選出一個可用的服務 器,將請求發送到該服務器。

    6. 帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication)
      "帶複製的基於局部性最少連接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不一樣之處是它要維護從一個 目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務 器組,按"最小鏈接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小鏈接"原則從這個集羣中選出一 臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的 程度。

    7. 目標地址散列(Destination Hashing)
      "目標地址散列"調度算法根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。

    8. 源地址散列(Source Hashing)
      "源地址散列"調度算法根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空

lb_kind :LVS的3種包轉發模式:

NAT(網絡地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)
NAT: Net Address Translation
原理:經過網絡地址轉換,調度器(Load Balancer)重寫請求報文的目標地址,根據預設的算法,將請求分配給後端的真是服務器;真實服務器響應給Load Balancer;在返回給客戶端;(因爲請求和響應都要通過LoadBalance,因此Load Balance有性能瓶頸)
IP Tunneling:
原理:Load Balance 把請求報文經過IP隧道 轉發給真實服務器,真實服務器直接返回給客戶端。
Direct Routing:
DR經過改寫報文的MAC地址,將請求發送給真實服務器,真實服務器直接返回給客戶端。要求Load Balance和真實服務器在同一個網段上。

protocol TCP: 採用TCP/UDP協議

real_server:    物理服務器

 

10.8.80.217從服務器:

vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 10 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.8.80.200 } } virtual_server 10.8.80.200 6379 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 protocol TCP real_server 10.8.80.218 6379 { weight 1 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } real_server 10.8.80.217 6379 { weight 1 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }

配置基本和主服務器同樣,要注意的是state 是BACKUP。

  2.安裝配置ipvsadm

  1.下載ipvsadm

# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
# ln -s /usr/src/kernels/2.6.32-279.el6.i686//usr/src/linux/
# tar zxvf ipvsadm-1.26.tar.gz
# cd ipvsadm-1.26
# make && make install

  2.開啓路由轉發
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p

  3.添加ifcfg-eth:0文件

拷貝ifcfg-eth0文件,名稱爲ifcfg-eth0:0,而後編輯ifcfg-eth0:0將文件中的IPADDR修改成VIP,DEVICE設置爲「eth0:0

設置完成後從新啓動network服務(service network restart)

  4.在ipvsadm添加配置

 ipvsadm -C ipvsadm -A -t 10.8.80.200:6379 -s rr ipvsadm -a -t 10.8.80.200:6379 -r 10.8.80.222 -g ipvsadm -a -t 10.8.80.200:6379 -r 10.8.80.221 -g  

幾點說明一下:

  -C:清除虛擬內核服務器表中記錄

  -A: 添加虛擬服務器

  -s:使用的調度算法,有這樣幾個選項rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認的調度算法是:wlc

  -a:-add-server    在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器記錄。也就是在一個虛擬服務器中增長一臺新的真實服務器

  -r:   真實的服務器

  -g:--gatewaying      指定LVS 的工做模式爲直接路由模式(也是LVS 默認的模式)

  

  3.配置物理Redis服務器

  添加sh腳本,腳本內容以下:

VIP = 10.8.80.200
 /etc/rc.d/init.d/functions case $1 in start) echo "Start Realserver"
        /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 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 ;; stop) echo "Stop Realserver"
        /sbin/ifconfig lo:0 down 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 "Usage: $0 (start | stop)" exit 1 esac

  而後使用sh命令執行。

  4.在Master和Backup上啓動keepalived:

cd /etc/init.d/keepalived ./keepalived start

  啓動redis客戶端,輸入ipvsadm -L --stats 查看調用狀況

相關文章
相關標籤/搜索