安裝redis3.0+集羣

  1. redis安裝環境
    yum install gcc-c++
  2. 拷貝到/usr/local/src/下
    安裝redis需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要連外網安裝gcc,安裝命令如下:
    解壓:tar -zxvf redis-3.0.0.tar.gz
  3. 進入解壓後的目錄進行編譯
    cd /usr/local/src/redis-3.0.0
    make
    4.安裝到指定目錄,如 /usr/local/src/redis
    cd /usr/local/src/redis-3.0.0
    make PREFIX=/usr/local/src/redis install
    5.拷貝配置文件到安裝目錄下
    進入源碼目錄,裏面有一份配置文件 redis.conf,然後將其拷貝到安裝路徑的bin目錄下
    cd /usr/local/src/redis

cp /usr/local/src/redis-3.0.0/redis.conf /usr/local/src/redis/bin
1)前端啓動(不推薦)
直接運行bin/redis-server將以前端模式啓動,切換到bin目錄下,執行以下命令: ./redis-server 即可以前端模式啓動redis;
前端模式啓動的缺點是ssh命令窗口關閉則redis-server程序結束,不推薦使用此方法。
2)後端模式啓動(推薦)
修改redis.conf配置文件, daemonize yes 以後端模式啓動。
cd /usr/local/src/redis/bin
./redis-server ./redis.conf
執行如下命令啓動redis:
redis默認使用6379端口。
ps -ef | grep redis : 查看服務有沒有開啓或
ss -lnp| grep 6379 : 查看有無端口被服務使用
./redis-cli shutdown
停止:強行終止Redis進程可能會導致redis持久化數據丟失。正確停止Redis的方式應該是向Redis發送SHUTDOWN命令,方法爲:
6.啓動
yum -y install gcc
1.CentOS5.7默認沒有安裝gcc,這會導致我們無法make成功。使用yum安裝:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error “Newer version of jemalloc required”
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src’
make: *** [all] Error 2
2.make時報如下錯誤:
make MALLOC=libc
原因是jemalloc重載了Linux下的ANSI C的malloc和free函數。解決辦法:make時添加參數。
3.make之後,會出現一句提示
Hint: To run ‘make test’ is a good idea 😉
但是不測試,通常是可以使用的。若我們運行make test ,會有如下提示
[devnote@devnote src]$ make test
You need tcl 8.5 or newer in order to run the Redis test
make: ***[test] Error_1
yum install tcl
解決辦法是用yum安裝tcl8.5(或去tcl的官方網站http://www.tcl.tk/下載8.5版本,並參考官網介紹進行安裝)
7.安裝過程可能出現的問題:
一主二從三哨兵集羣搭建
環境:Centos7.2(3臺虛擬機)+redis3.0
redis搭建可參考其上文章
內網IP:192.168.146.153、192.168.146.154、192.168.146.155
#支持內網/本地訪問,比如 bind 192.168.146.153 127.0.0.1
bind 本機內網IP 127.0.0.1
#如下圖:
在每個redis.conf裏進行修改
1.通用配置
安裝redis3.0+集羣
2019年10月5日 17:10
分區 Centos-7 的第 1 頁
#支持後臺運行,默認值爲no
daemonize yes
#日誌文件,比如redis.log、sentinel.log
logfile xxx.log
#指定master
slaveof 192.168.146.153 6379
slave配置(在2個slave的redis.conf下指定master) #後臺啓動開啓
daemonize yes
#set log 指定日誌存儲位置
logfile “/usr/local/src/redis-3.0/bin/sentinel.log”
#指定監控的master,最後一位表示quorum(法人數量),即認定master’客觀下線’成立的最低票數
sentinel monitor mymaster 192.168.146.153 6379 2
配置如下圖:
注:按其上寫前三個配置行即可,port 26379端口後的配置會在啓動後自動生成,俺在redis自帶的sentinel.conf配置文件中修改添加均啓動不了哨兵,無奈,手寫了配置文件(放在bin目錄下)
sentinel配置(在3個sentinel.conf下指定監控的master)
分別啓動主從redis, 驗證沒問題,再分別啓動哨兵,假設已進入redis/bin目錄
./redis-server ./redis.conf
tail -100f redis.log
./redis-cli
運行redis
info replication
下圖是master的信息
下面是其中一個slave的信息
查看主從信息(連接成功後)
在master上寫入變量,在slave上查看是否同步
測試主從同步
./redis-sentinel ./sentinel.conf
運行哨兵
ps -ef | grep redis
查詢後可得知已成功啓動,如下圖所示:
./redis-cli -h 192.168.146.153 -p 26379 info sentinel
在master、slave服務器上都可以查看哨兵相關信息(node1爲master節點)
2.主從/哨兵運行
分區 Centos-7 的第 2 頁
./redis-cli -h 192.168.146.153 -p 26379 info sentinel
模擬發生故障, 進入master主機172.31.175.142, kill掉redis-server進程.接下來, 查看各個哨兵的日誌, 大抵可以看出哨兵的工作過程, 如下

  1. 主觀下線(sdown)
    當某個哨兵心跳檢測master超時後,則認定其sdown
    +sdown master mymaster 192.168.146.153 6379
  2. 客觀下線(odown)
    當認定sdown的哨兵數>=quorum時,則master下線事實最終成立,即odown
    +odown master mymaster 192.168.146.153 6379 #quorum 2/2
  3. 選舉哨兵leader
    各哨兵協商,選舉出一個leader,由其進行故障轉移操作
    +vote-for-leader 6198a2cb8afa9a57f33bcbdd8c5fdca7b486d84f 1
  4. 故障轉移
    選擇一個slave作爲新的master, 並將其他節點設置爲新master的slave (剛纔已下線的老master的配置文件也會被設置slaveof…)
    +switch-master mymaster 192.168.146.153 6379 192.168.146.155 6379
    當故障轉移成功後, redis就是一主一從,
    主機 角色
    192.168.146.153 哨兵、master
    192.168.146.154 哨兵、slave
    192.168.146.155 哨兵、slave -> master
    查看日誌如下圖所示:
    3.故障轉移
    進入新的master192.168.146.155,查看redis主從信息,還剩一從
    故障恢復
    模擬故障恢復,進入老的master192.168.146.153,重啓剛纔搞掉的redis,之後查看其主從信息,發
    現老的master已經變成slave了,如下
    分區 Centos-7 的第 3 頁
    因爲192.168.146.153的redis.conf在故障轉移時被修改了,所以重啓之後就直接成了slave
    進入新的master192.168.146.155下,再去查看最新的主從信息,發現加入了新的slave,如下
    故障恢復之後,redis恢復到了一主二從三哨兵,只不過master/slave換了地方
    //若想要調整master/slave,則需要手動操作,所以爲了方便起見,建議在故障轉移之前備份配置文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章