LVS+Redis部署手冊


Redis是一個開源,先進的key-value存儲,並用於構建高性能,可擴展的Web應用程序的完美解決方案。

Redis從它的許多競爭繼承來的三個主要特點:

Redis數據庫完全在內存中,使用磁盤僅用於持久性。

相比許多鍵值數據存儲,Redis擁有一套較為豐富的數據類型。

Redis可以將數據復制到任意數量的從服務器。

REDIS優勢

異常快速:Redis的速度非常快,每秒能執行約11萬集合,每秒約81000+條記錄。

支持豐富的數據類型:Redis支持最大多數開發人員已經知道像列表,集合,有序集合,散列數據類型。這使得它非常容易解決各種各樣的問題,因為我們知道哪些問題是可以處理通過它的數據類型更好。

操作都是原子性:所有Redis操作是原子的,這保證了如果兩個客戶端同時訪問的Redis服務器將獲得更新后的值。

多功能實用工具:Redis是一個多實用的工具,可以在多個用例如緩存,消息,隊列使用(Redis原生支持發布/訂閱),任何短暫的數據,應用程序,如Web應用程序會話,網頁命中計數等。

 

REDIS安裝

在redis官網下載最新的源碼包

http://download.redis.io/releases/redis-2.8.3.tar.gz

  1. 解壓

# tar xzf redis-3.0.0.tar.gz

  1. 拷貝目錄

# mv redis-3.0.0 /usr/local/redis

  1. 進入目錄

# cd /usr/local/redis

  1. 編譯

# make && make install

  1. 查看命令運行結果,如果是0則是成功

# echo $?

 

REDIS啟動

# redis-server

第一次啟動時可能會有提示的warning信息;可以忽略,但最好是按照提示的處理辦法修改。

 

REDIS客戶端啟動

# redis-cli

驗證客戶端操作

# redis> set iom dtsoft

OK

# redis> get iom

“dtsoft”

REDIS主從同步

編輯主機配置文件

# vim redis.conf

daemonize yes                    –進程后台啟動

logfile /usr/local/redis/redis.log       –日志文件

syslog-enabled no                –日志不寫進系統日志

dir /usr/local/redis/data      –數據文件存放

requirepass system                      –認證密碼

編輯從機配置文件

# vim redis.conf

daemonize yes

logfile /usr/local/redis/redis.log

syslog-enabled no

dir /usr/local/redis/data

slaveof 192.168.10.5 6379           –主服務器的IP地址和端口

masterauth system                       –主服務器上的認證密碼

 

啟動服務

1、主機節點:

# cd /usr/local/redis/src/

# ./redis-server ../redis.conf –后面的配置文件一定要加上

2、從機節點:

# cd /usr/local/redis/src/

# ./redis-server ../redis.conf –后面的配置文件一定要加上

 

3、檢查端口

分別在主從機上執行,查看兩機相連端口是否是ESTABLISHED狀態。

# netstat -antp | grep 6379

4、驗證同步

主機節點:

# ./redis-cli

127.0.0.1:6379> set iom 123456

(error) NOAUTH Authentication required.        –需要認證權限

127.0.0.1:6379> auth system

OK

127.0.0.1:6379> set iom 123456

OK

127.0.0.1:6379> get iom

“123456”

 

從機節點:

# ./redis-cli

127.0.0.1:6379> get iom             –在從服務器不需要認證權限

“123456”

keepalived配置

路由機配置

編輯/etc/keepalived/keepalived.cnf文件

global_defs {

router_id LVS_MASTER   #BACKUP上修改為LVS_BACKUP

}

 

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.10.252       #redis

}

}

 

 

 

 

virtual_server 192.168.10.252 6379 {

delay_loop 6

lb_algo rr

lb_kind DR

#lb_kind NAT

#    persistence_timeout 3

protocol TCP

 

real_server 192.168.10.3 6379 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 6379

}

}

 

real_server 192.168.10.5 6379 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 6379

}

}

}

重啟keepalived服務

# service keepalived restart

redis主從機配置

編寫執行腳本

#vi  lvs_real

  1. #!/bin/bash
  2. #description:startrealserver
  3. VIP=192.168.10.252
  4. case “$1” in
  5. start)
  6. echo “startLVSofREALServer”
  7. /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  8. echo “1”>/proc/sys/net/ipv4/conf/lo/arp_ignore
  9. echo “2”>/proc/sys/net/ipv4/conf/lo/arp_announce
  10. echo “1”>/proc/sys/net/ipv4/conf/all/arp_ignore
  11. echo “2”>/proc/sys/net/ipv4/conf/all/arp_announce
  12. sysctl –p >/dev/null 2>&1
  13. ;;
  14. stop)d
  15. /sbin/ifconfig lo:0 down
  16. echo “closeLVSDirectorserver”
  17. echo “0”>/proc/sys/net/ipv4/conf/lo/arp_ignore
  18. echo “0”>/proc/sys/net/ipv4/conf/lo/arp_announce
  19. echo “0”>/proc/sys/net/ipv4/conf/all/arp_ignore
  20. echo “0”>/proc/sys/net/ipv4/conf/all/arp_announce
  21. ;;
  22. *)
  23. echo “Usage:$0{start|stop}”
  24. exit 1
  25. esac

 

執行腳本

# /lvs_real start

 

系統測試

1、測試環境

VIP/路由機:192.168.10.252

redis主:192.168.10.3

redis備:192.168.10.4

客戶機:192.168.10.1

 

2、測試過程

客戶機運行redis客戶端:

# redis-cli –h 192.168.10.252 –p 6379

redis:6379> auth system –第一次需要輸入密碼

OK

redis:6379> get iom

“123456”

 

關掉redis主機

 

客戶機運行redis客戶端

redis:6379> get iom

“123456”   –仍能得到iom值

 

啟動redis主機

 

客戶機重啟redis客戶端

# redis-cli –h 192.168.10.252 –p 6379

 

路由機運行lvs監控命令。

# watch ipvsadm –lc

可以看到destination顯示的是主節點IP。

 

每次客戶機重啟redis客戶端,destination顯示IP在主備節點替換(lvs路由配置為輪詢,即lb_algo rr

)。

 

3、測試注意

  • redis從節點默認配置為只讀,客戶機連接分配到從節點后只能執行查詢操作,不能增刪。從節點若想也可執行修改操作需將redis配置文件的slave-read-only選項改為no。
  • 客戶機只要沒退出redis客戶端,將一直固定連接同個redis節點。
  • redis節點故障恢復后keepalived會立刻將其並入redis集群,但此時有可能恢復的redis節點數據比其它節點舊,一定要先同步數據再將其並入集群。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM