標籤:
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
- 解壓
# tar xzf redis-3.0.0.tar.gz
- 拷貝目錄
# mv redis-3.0.0 /usr/local/redis
- 進入目錄
# cd /usr/local/redis
- 編譯
# make && make install
- 查看命令運行結果,如果是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
- #!/bin/bash
- #description:startrealserver
- VIP=192.168.10.252
- case “$1” in
- start)
- echo “startLVSofREALServer”
- /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
- sysctl –p >/dev/null 2>&1
- ;;
- stop)d
- /sbin/ifconfig lo:0 down
- echo “closeLVSDirectorserver”
- 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
執行指令碼
# /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節點資料比其它節點舊,一定要先同步資料再將其併入叢集。
LVS+Redis部署手冊