Redis+Keepalived內存數據庫集群配置

jopen 9年前發布 | 17K 次閱讀 Redis NoSQL數據庫

 

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!