Linux下Redis 5.0.7集羣搭建

一、工具版本

  • redis 5.0.7
  • VMware-workstation-full-14.1.7-12989993
  • CentOS-7-x86_64-DVD-1908
  • putty_V0.63.0.0.43510830
  • FileZilla_3.37.4_win64-setup_bundled

二、排除問題及解決方案

如果是新安裝的CentOS-7系統,需要下載安裝一些命令,不然會遇到各種報錯,下面是我遇到的一些問題及解決方案,提前貼出來,在執行的時候方面查詢!

  1. -bash wget:未找到命令
# -bash wget:未找到命令
# 安裝wget,在下載redis包時提示錯誤信息
yum  install wget 
  1. gcc:命令未找到
# 執行make命令時出錯
yum -y install gcc automake autoconf libtool make
  1. redis編譯報致命錯誤:jemalloc/jemalloc.h:沒有那個文件或目錄
# 執行make命令時出第二個錯
make MALLOC=libc
分配器allocator, 如果有MALLOC  這個 環境變量, 會有用這個環境變量的 去建立Redis。

而且libc 並不是默認的 分配器, 默認的是 jemalloc, 因爲 jemalloc 被證明 有更少的 fragmentation problems 	比libc。

但是如果你又沒有jemalloc 而只有 libc 當然 make 出錯。 所以加這麼一個參數,運行如下命令:
原文鏈接:https://blog.csdn.net/honchou56/article/details/53994708
  1. netstat: 未找到命令
yum -y install net-tools

三、開始安裝

首先選擇redis安裝目錄,我是用的是/usr/local

1.下載和解壓

cd /usr/local/
mkdir redis
cd redis
# 此處出錯查看------>排除問題及解決方案 1
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar xzvf redis-5.0.7.tar.gz
cd redis-5.0.7
# 此處出錯查看------>排除問題及解決方案 2、3
make

2.處理節點配置文件

由於一個系統配置6個節點的僞集羣,我們需要把這6個節點配置文件放置到不同的文件夾裏

#建立配置文件文件夾,目前目錄在redis-5.0.7下
mkdir 7000 7001 7002 7003 7004 7005

3.配置文件redis.conf

#端口
port 7000
#此redis實例作爲集羣的一個節點
cluster-enabled yes
#節點能夠失聯的最大時間
cluster-node-timeout 15000
#集羣配置文件,系統自動維護,不能人工編輯,主要記錄集羣中有哪些節點,狀態等參數
cluster-config-file nodes-7000.conf
#後臺運行
daemonize yes
#持久化
appendonly yes
#非保護模式,設置爲no此時外部網絡可以直接訪問否則需要bind ip
protected-mode no
#redis以守護進程方式運行時
pidfile /var/run/redis_7000.pid

強調: 網絡上很多教程沒有說 cluster-config-file 也需要跟着不同文件改變,導致我最初失敗了很多次,只能啓動一個節點。
portcluster-config-filepidfile 三個配置根據不同文件夾進行更改,最後放入對應的文件夾中。

4、啓動節點

/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7000/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7001/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7002/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7003/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7004/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7005/redis.conf

啓動提示如圖:
在這裏插入圖片描述
查看所有redis進程,可以看到已經啓動的節點

# 這裏提示netstat: 未找到命令 查看------>排除問題及解決方案 4
netstat -ap | grep redis

在這裏插入圖片描述
進入/var/run/目錄下 可以看到每個節點對應的pid文件
在這裏插入圖片描述

5.開啓集羣

5.1 獲取ip

通過ip addr 來獲取ip,如果ens33下沒有inet 地址,請查看下面地址開啓網絡服務Centos 7 輸入ip addr 沒有ip問題
在這裏插入圖片描述

5.2 創建集羣

# 這裏後面的ip是linux系統的ip,自行更改成剛纔獲取到的ip地址
/usr/local/redis/redis-5.0.7/src/redis-cli --cluster create 192.168.122.128:7000 192.168.122.128:7001 192.168.122.128:7002 192.168.122.128:7003 192.168.122.128:7004 192.168.122.128:7005   --cluster-replicas 1

在這裏插入圖片描述
提示如下圖時,集羣已經搭建完畢!
在這裏插入圖片描述
至此已經搭建成功!

四、 測試

1.登錄到一個節點

redis-cli -c -h host -p port -a password

  • -c表示集羣
  • -h表示地址
  • -a表示auth,沒有可省略
/usr/local/redis/redis-5.0.7/src/redis-cli -c -h 192.168.122.128 -p  7000 

2.查看集羣信息

cluster nodes

在這裏插入圖片描述
在節點7005插入aa=123,切換登錄到節點7000後get aa 得到123,認證完畢!

在這裏插入圖片描述

五、加入新的節點

  1. 像前幾步新建7006文件夾,把對應配置文件改好後放進去,啓動節點
#添加7006節點至7000集羣,後面的7000可以是集羣內任意節點,
/usr/local/redis/redis-5.0.7/src/redis-cli --cluster add-node 192.168.122.128:7006   192.168.122.128:7002

有可能會報錯Node 192.168.122.128:7006 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
在這裏插入圖片描述
進入這個新創的節點執行flushdb解決
在這裏插入圖片描述
進入任意一個節點,執行命令

/usr/local/redis/redis-5.0.7/src/redis-cli -c -h 192.168.122.128 -p  7003 
cluster nodes

可以查看到7006已經在裏面
在這裏插入圖片描述

六、 拓展

#查看某節點信息
/usr/local/redis/redis-5.0.7/src/redis-cli -h 127.0.0.1 -p 7006 info 

#7007節點添加至cluster-master-id爲7006的從節點
/usr/redis/bin/redis-cli --cluster add-node 192.168.195.128:7007 192.168.195.128:7000 --cluster-slave --cluster-master-id  ac42afe9091f1f18a8ab609c06b9c64123e97f9b

#分配卡槽
/usr/redis/bin/redis-cli --cluster reshard  192.168.195.128:7000

#還原卡槽
/usr/redis/bin/redis-cli --cluster reshard 192.168.195.128:7000 --cluster-from ac42afe9091f1f18a8ab609c06b9c64123e97f9b --cluster-to 7630463201989e4226421779400e1b31aca74757 --cluster-slots 4096

#關於防火牆如果在虛擬機外部鏈接redis集羣報錯,可能是因爲防火牆問題,比如這個錯誤:
redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: No reachable node in cluster

#查看防火牆狀態
#執行後可以看到綠色字樣標註的“active(running)”,說明防火牆是開啓狀態
systemctl status firewalld.service
#關閉運行的防火牆   
systemctl stop firewalld.service    
#查看防火牆狀態     
systemctl status firewalld.service
#永久關閉防火牆      
systemctl disable firewalld.service 

七、Amazing

剛纔reids官網掛了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章