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技術及健身,獲取更多幹貨。