Redis+Keepalived內存數據庫集群配置
前言: Redis 是一個開源的使用ANSI C 語言 編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value 數據庫 ,并提供多種語言的API。
Redis 是一個key-value 存儲系統 。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list( 鏈表 ) 、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。
Redis 是一種高級key-value數據庫。它跟memcached類似,不過數據可以持久化,而且支持的數據類型很豐富。有字符串,鏈表,集合和有序集合。支持在服務器端計算集合的并,交和補集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數據結構服務 器。
Redis 的所有數據都是保存在內存中,然后不定期的通過異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數據變化都寫入到一個usr/localend only file(aof)里面(這稱為“全持久化模式”)。
為了提升redis高可用性,我們除了備份redis dump數據之外,還需要創建redis主從架構,可以利用從將數據庫持久化(數據持久化通俗講就是把數據保存到磁盤上,保證不會因為斷電等因素丟失數據。
redis 需要經常將內存中的數據同步到磁盤來保證持久化。redis支持兩種持久化方式,一種是 Snapshotting(快照)也是默認方式,另一種是Append-only file(縮寫aof)的方式。)
什么是redis的主從復制呢?
Redis 主從復制,當用戶往Master端寫入數據時,通過Redis Sync機制將數據文件發送至Slave,Slave也會執行相同的操作確保數據一致;且實現Redis的主從復制非常簡單。同時slave上還可以開啟二級slave,三級slave從庫,跟MySQL的主從類似。
安裝redis可以參考上一次課程哦,這里直接安裝slave,只需要在slave redis.conf配置文件中加入如下語句即可:
slaveof 192.168.33.10 6379 # slaveofmaster的ip master的端口。 一、安裝Keepalived:
tar zxf keepalived-1.2.1.tar.gz cd keepalived-1.2.1&&./configure --with-kernel-dir=/usr/src/kernels/2.6.18* &&make&& make install DIR=/usr/local/ ;cp $DIR/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/ &&mkdir -p /etc/keepalived cp $DIR/sbin/keepalived /usr/sbin/
二、配置Keepalived:
vi /etc/keepalived/keepalied.conf
! Configuration File for keepalived
global_defs {
notification_email{
wgkgood@139.com
}
notification_email_fromwgkgood@139.com
smtp_server127.0.0.1
smtp_connect_timeout30
router_idLVS_DEVEL
}
# VIP1
vrrp_instance VI_1 {
state BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id151
priority 100
advert_int 5
nopreempt
authentication {
auth_typePASS
auth_pass2222
}
virtual_ipaddress{
192.168.33.100
}
}
virtual_server 192.168.33.100 6379 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout60
protocol TCP
real_server 192.168.33.10 6379 {
weight 100
notify_down/data/sh/redis.sh
TCP_CHECK {
connect_timeout10
nb_get_retry3
delay_before_retry3
connect_port6379
}
}
}三、從Keepalived配置:
Redis 從服務器配置keepalived.conf跟master一樣,只需要把Realserver IP修改成:
real_server 192.168.33.11 ;優先級從100改成90即可。
vi /etc/keepalived/keepalied.conf
! Configuration File for keepalived
global_defs {
notification_email{
wgkgood@139.com
}
notification_email_fromwgkgood@139.com
smtp_server127.0.0.1
smtp_connect_timeout30
router_idLVS_DEVEL
}
# VIP1
vrrp_instance VI_1 {
state BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id151
priority 90
advert_int 5
nopreempt
authentication {
auth_typePASS
auth_pass2222
}
virtual_ipaddress{
192.168.33.100
}
}
virtual_server 192.168.33.100 6379 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout60
protocol TCP
real_server 192.168.33.11 6379 {
weight 100
notify_down/data/sh/redis.sh
TCP_CHECK {
connect_timeout10
nb_get_retry3
delay_before_retry3
connect_port6379
}
}
}四、創建切換腳本:
在master、slave數據庫上創建/data/sh/redis.sh腳本,內容為:
/etc/init.d/keepalived stop
然后分別重啟兩臺Redis數據庫上keepalived服務即可。
最后測試停止master Mysql服務,是否會自動切換到Backup上即可。