1. 程式人生 > 實用技巧 >Redis單機安裝以及叢集搭建

Redis單機安裝以及叢集搭建

今天主要來看一下Redis的安裝以及叢集搭建(我也是第一次搭建)。

環境:CentOS 7.1,redis-5.0.7

一、單機安裝

1、將Redis安裝包放置伺服器並解壓

2、進入redis安裝目錄(筆者的是/usr/soft/redis-5.0.7)執行make && make install命令,安裝完成後出現下圖的場景,則說明安裝成功

3、在redis安裝目錄建立兩個資料夾etc(用於存放redis.conf),bin(存放相應的命令指令碼)

將redis.conf移到etc目錄中,將src下的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server移到bin目錄中

mv redis.conf etc/
#進入src目錄下
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server ../bin/

3、配置redis.conf(常用配置項)

#註釋掉這一行,否則其它機器不可以訪問當前redis,也可以改成其他ip
#bind 127.0.0.1
#將protected-mode後面的yes改成no,也是為了讓其他ip訪問當前redis 
protected-mode no
#將daemonize後面的no改成yes,這個是為了讓redis後臺執行。 
daemonize yes
#日誌檔案所在目錄
logfile 
/usr/soft/redis-5.0.7/logs/redis.log #可配置密碼,也可不配,例如123456是我設定的密碼 #如果配置了密碼,在用redis-cli連線的時候需要用【auth ‘密碼’】命令才用使用 requirepass 123456

4、將redis安裝目錄加入環境變數

vim ~/.bashrc(也可以是/etc/profile)

儲存之後執行source ~/.bashrc(如果是/etc/profile檔案,則是source /etc/profile)

5、啟動redis

#/usr/soft/redis-5.0.7/etc/redis.conf是配置檔案
redis-server /usr/soft/redis-5.0
.7/etc/redis.conf

6、客戶端連線

用redis-cli建立一個key、value鍵值對

(推薦一個視覺化連線工具RedisDesktopManager)

7、關閉redis

#也可以直接通過kill -9殺掉程序
redis-cli shutdown

二、叢集安裝

Redis叢集是去中心化的,並沒有主從節點之分。叢集中要求節點數量必須是奇數,所以至少要有三個節點,並且每個節點至少有一備份節點,所以至少需要6個redis服務例項。

我這邊有三個伺服器,每個伺服器上啟兩個redis,一個active節點,一個standby節點

#三臺伺服器,每臺伺服器redis埠號為7001,7002
192.169.197.100
192.169.197.110
192.169.197.120

1、在redis目錄下建立redis_cluster目錄,在redis_cluster目錄下建立7001,7002兩個節點目錄,將redis.conf(基於單機安裝,配置項跟之前的一樣)複製到7001,7002兩個目錄中。

2、分別修改7001,7002目錄下的redis.conf配置檔案

#7001目錄下的redis.conf
port 7001 #埠
pidfile /var/run/redis_7001.pid #程序檔案
cluster-enabled yes #開啟叢集功能
cluster-config-file nodes-7001.conf #叢集配置檔案,叢集啟動後生成
appendonly yes  #開啟日誌

#7002目錄下的redis.conf
port 7002 #埠
pidfile /var/run/redis_7002.pid #程序檔案
cluster-enabled yes #開啟叢集功能
cluster-config-file nodes-7002.conf #叢集配置檔案,叢集啟動後生成
appendonly yes  #開啟日誌

3、將redis_cluster用scp命令分發到另外兩臺伺服器

4、依次啟動6個redis例項,(下面以指令碼統一啟動)

#!/bin/bash
echo '開始啟動redis-cluster'

redisnodes=('cnode-1' 'cnode-2' 'cnode-3')
ports=('7001' '7002')

for ip in ${redisnodes[@]};
do
   for port in ${ports[@]};
   do
      echo "start redis $ip:$port"
      ssh $ip redis-server /usr/soft/redis-5.0.7/redis_cluster/$port/redis.conf
   done
done

echo '啟動redis-cluster結束'

指令碼執行結果:

5、建立叢集命令,一共六個節點

#如果沒設定密碼,需要把【-a 123456】去掉
redis-cli -a 123456 --cluster create 192.168.197.100:7001 192.168.197.110:7001 192.168.197.120:7001 192.168.197.100:7002 192.168.197.110:7002 192.168.197.120:7002 --cluster-replicas 1

執行之後會發現slots的分佈

6、驗證叢集

#[-c]引數是為了啟動叢集模式,缺少此引數會在設值的時候直接報錯
redis-cli -c -h 192.168.197.100 -p 7001 -a 123456

7、關閉叢集

可以一個一個關閉,但這邊使用指令碼統一關閉

#!/bin/bash
#所有伺服器節點的hostname
allnodes=('cnode-1' 'cnode-2' 'cnode-3')
#埠號開始
PORT=7001
#結束埠號
ENDPORT=7003
#密碼,如果redis沒配置密碼可省略
PASSWROD=123456
while [ $((PORT < ENDPORT)) != "0" ]; do
    for ip in ${allnodes[@]};
    do
        #判斷某個埠是否已被佔用,如果是,則執行關閉命令
        count=`ssh $ip lsof -i:$PORT | wc -l`
        if [ $count -gt 0 ];
        then
            echo "Stopping Redis $ip:$PORT"
            ssh $ip redis-cli -p $PORT -a $PASSWROD shutdown 2>/dev/null
        else
            echo "no redis $ip:$PORT"
        fi
    done
    PORT=$((PORT+1))
done
exit 0

指令碼執行結果:

上述就是Redis單機版安裝和叢集部署的全部步驟。

=======================================================

我是Liusy,一個喜歡健身的程式設計師。

歡迎關注公眾號【Liusy01】,一起交流Java技術及健身,獲取更多幹貨。