首頁 > 軟體

linux伺服器中搭建redis6.0.7叢集

2022-11-11 14:02:34

一、安裝redis

原始碼安裝:

1.下載原始碼包:

wget http://download.redis.io/releases/redis-6.0.7.tar.gz

2.解壓到指定目錄下:

tar xf redis-6.0.7.tar.gz -C /usr/local/

二、編譯安裝

下載編譯安裝Redis的依賴,因為Redis是C語言編寫的,所以主要安裝C的編譯環境

yum install gcc g++ gcc-c++ make -y

進入redis資料夾進行編譯安裝

cd /usr/local/redis-6.0.7
# 開始編譯
make -j 2

編譯安裝過程中出現大量錯誤如下圖所示:

這是因為安裝6版本的Redis需要5.3以上版本的gcc,而先前YUM安裝的gcc預設安裝的是4.8.5版本。

# 檢視gcc版本
gcc -v
顯示gcc版本為4.8.5,需要升級gcc

升級gcc到9版本

yum install centos-release-scl -y
yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils -y

然後啟用gcc 9。我看到有些部落格中寫到啟用gcc9的方法如下

# 臨時啟用gcc 9
scl enable devtoolset-9 bash

# 長期啟用gcc 9
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile

#使設定生效
source /etc/profile
 

這種臨時啟用的方法發現單獨在終端執行沒有問題,不過把它寫到指令碼裡執行的時候,執行到這一句就會退出指令碼。所以在指令碼中我直接使用source /opt/rh/devtoolset-9/enable臨時啟用gcc 9。

執行完畢後gcc升級到9.3.1版本

升級好gcc後重新編譯

# 清除之前編譯的可執行檔案及組態檔。
make clean

make -j 2

make install

三、啟動Redis

在redis的src目錄下執行./redis-server,出現如下介面說明Redis算是裝好了。不過有幾個警告需要處理一下,解決的方法在警告資訊中已經給出了。

#啟動redis服務
[root@mysql_master src]# ./redis-server

#解決警告資訊
# 第一個警告的解決方法
echo net.core.somaxconn=511 >> /etc/sysctl.conf

# 第二個警告的解決方法
echo vm.overcommit_memory=1 >> /etc/sysctl.conf
# 使/etc/sysctl.conf生效
sysctl -p

# 第三個警告的解決方法
echo never > /sys/kernel/mm/transparent_hugepage/enabled

#之後再重新執行./redis-server,可以看到,警告資訊消失了。Redis服務順利啟動。

此時Redis服務在前臺執行,修改Redis的組態檔,讓Redis服務可以在後臺執行

vim /usr/local/redis-6.0.7/redis.conf

將daemonize no改為daemonize yes,然後使用組態檔重新啟動redis
關閉加密保護,修改資料儲存路徑.......
#redis已成功在後臺啟動
[root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
#測試redis是否正常工作
[root@mysql_master redis-6.0.7]# ./src/redis-cli 
[root@mysql_master src]# ./redis-cli
127.0.0.1:6379> ping
PONG

後臺啟動:

四、設定主從

啟動主結點的redis服務

[root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf

修改兩臺從結點的redis.conf組態檔,指定主節點ip和埠

注意:redis6版本和redis4版本設定主從的名稱不一樣

replicaof 192.168.232.11 6379 主ip+主埠

修改完後啟動兩臺從的redis,讀取redis.conf才能生效

[root@mysql_slave1 redis-6.0.7]# ./src/redis-server redis.conf

五、redis-sentinel---哨兵模式

部署Sentinel:

#檢視sentinel.conf裡面設定資訊
[root@mysql_master redis-6.0.7]# grep -Ev "^$|#" sentinel.conf
三臺都要設定,具體內容如下所示,可以刪完然後複製上去
###############################################################
port 26379
daemonize yes   #後臺啟動 
pidfile /var/run/redis-sentinel.pid
logfile "/var/log/redis/sentinel.log"
sentinel announce-ip 0.0.0.0
dir /tmp
sentinel monitor mymaster 192.168.232.11 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000
sentinel deny-scripts-reconfig yes
##############################################################
注意:一定要開啟後臺啟動,否則Ctrl+c退出,sentinel會自動關閉

啟動,三臺都要啟動

#讀取sentinel組態檔,三臺都一樣啟動
[root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf 

#檢視程序是否啟動:
[root@mysql_master redis-6.0.7]# ps -ef | grep redis-sentinel

sentinel操作

[root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf 
[root@mysql_master redis-6.0.7]# ./src/redis-cli -p 26379
127.0.0.1:26379> sentinel master mymaster
1) "name"
 2) "mymaster"
 3) "ip"
 4) "192.168.232.11"
 5) "port"
 6) "6379"
 7) "runid"
 8) "4e5793b30c65c08c1f784a045dbb81f8a327414f"
 9) "flags"
10) "master"
127.0.0.1:26379> sentinel slaves mymaster
1)  1) "name"
    2) "192.168.232.12:6379"
    3) "ip"
    4) "192.168.232.12"
    5) "port"
    6) "6379"
    7) "runid"
    8) "7172974215efed734fd000bcd9fcc340dd8796ae"
    9) "flags"
   10) "slave"
   11) "link-pending-commands"
2)  1) "name"
    2) "192.168.232.20:6379"
    3) "ip"
    4) "192.168.232.20"
    5) "port"
    6) "6379"
    7) "runid"
    8) "9a4f10acbd6c339df8930a1478455ecaffc8c5ca"
    9) "flags"
   10) "slave"

六、redis cluster叢集搭建

環境準備

1.準備三機器,關閉防火牆和selinux
2.製作解析並相互做解析,即三臺互相ping通,主機名可改可不改。
注:規劃架構兩種方案,一種是單機多範例,這裡我們採用多機器部署:
三臺機器,每臺機器上面兩個redis範例,一個master一個slave,第一列做主庫,第二
列做備庫

#記得選出控制節點
redis-cluster01 192.168.232.11 7000、7001
redis-cluster02 192.168.232.12 7002、7003
redis-cluster03 192.168.232.20 7004、7005

安裝redis 並設定redis-cluster

1、redis安裝 ,注意3臺機器都需要安裝redis 服務

建立範例目錄

#先裝一個工具tree
yum install tree

#建立節點目錄:按照規劃在每臺redis節點的安裝目錄中建立對應的目錄(以埠號命名)
#具體建立過程不再描述
檢視目錄結構(六臺)
[root@mysql_master src]# cd /redis
[root@mysql_master redis]# tree
.
└── cluster
    ├── 7000
    │   ├── conf
    │   │   ├── nodes.conf
    │   │   └── redis.conf
    │   ├── data
    │   │   ├── appendonly.aof
    │   │   └── dump.rdb
    │   ├── log
    │   │   └── redis.log
    │   └── redis.pid
    └── 7001
        ├── conf
        │   ├── nodes.conf
        │   └── redis.conf
        ├── data
        │   ├── appendonly.aof
        │   └── dump.rdb
        ├── log
        │   └── redis.log
        └── redis.pid
#其他五臺除了名字不一樣,組態檔不一樣,其他都一樣

設定官方組態檔,去掉#開頭的和空格行

#cat redis.conf | grep -v ^# | grep -v ^$

修改組態檔

[root@mysql_master redis]# cd cluster/7000/conf
[root@mysql_master conf]# cat redis.conf 
bind 0.0.0.0
protected-mode no
port 7000
daemonize yes
dir /redis/cluster/7000/data
cluster-enabled yes
cluster-config-file /redis/cluster/7000/conf/nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /redis/cluster/7000/redis.pid
logfile /redis/cluster/7000/log/redis.log
#其他五臺修改一下目錄

建立叢集

注意:建立叢集:在其中一個節點操作就可以

redis節點搭建起來後,需要完成redis cluster叢集搭建,搭建叢集過程中,需要保證6個redis範例都是執行狀態

Redis是根據IP和Port的順序,確定master和slave的,所以要排好序,再執行。
引數:
--cluster-replicas 1:表示為叢集中的每個主節點建立一個從節點.書寫流程:主節點
ip+port 對應一個從節點ip+port(正常是前面三個節點為主節點,後面的為從節點)

#先把六臺redis啟動起來再啟動叢集
[root@mysql_master src]# ./redis-server /redis/cluster/7000/conf/redis.conf 
[root@mysql_master src]# ./redis-server /redis/cluster/7001/conf/redis.conf
[root@mysql_master src]# ./redis-cli --cluster create --cluster-replicas 1 192.168.232.11:7000 192.168.232.11:7001 192.168.232.12:7002 192.168.232.12:7003 192.168.232.20:7004 192.168.232.20:7005

....................
輸入yes,等待叢集建立
出現以下資訊證明建立成功
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


檢視是否切換成叢集模式

[root@mysql_master conf]# ps -ef | grep redis

七、redis cluster 向用戶端擴充套件

轉載請註明出處,未完待續...

到此這篇關於linux伺服器中搭建redis6.0.7叢集的文章就介紹到這了,更多相關搭建redis6.0.7內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com