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上即可。