從0到1搭建redis6.0.7

来源:https://www.cnblogs.com/qsmm/archive/2022/11/08/16871488.html
-Advertisement-
Play Games

redis集群搭建 一、安裝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

源碼安裝:

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

編譯安裝過程中出現大量錯誤如下圖所示:
image
這是因為安裝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版本

image
升級好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

後臺啟動:
image

四、配置主從

啟動主結點的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+主埠
image
修改完後啟動兩台從的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會自動關閉

image
啟動,三台都要啟動

讀取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

image
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.

image
查看是否切換成集群模式

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

image

七、redis cluster 向客戶端擴展

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分頁查詢 1、分頁查詢的好處 MyBatis作為持久層框架,主要任務就是操作資料庫,即是對數據的增、刪、查、改,其中大多數業務是查詢功能,這也是這四個操作中最常用操作。所以為了減少資料庫的負擔,我們使用對數據進行分頁查詢,這樣的話在面對查詢大量數據時,每次只需要查詢小部分數據,隨之查詢的次數隨增加了 ...
  • 課程將人工神經網路與統計學概念相關聯,在數學&概念層面上解釋深度學習與生成模型,並強調深度學習的實踐,對於構建深度學習技能有很大幫助。 ...
  • 在電腦世界里只有二進位。唯有人類才會對數據進行類型與價值判斷。例如,認為某些文件是文本文件、是WORD/EXCEL文件或者是圖片。對於加密演算法來說也是一樣的,加解密演算法處理的只是位元組流,根本不關心所謂的文件類型。 ...
  • 大家好,我是沙漠盡頭的狼。 .NET是免費,跨平臺,開源,用於構建所有應用的開發人員平臺。 本文演示如何在WPF中使用Blazor開發漂亮的UI,為客戶端開發註入新活力。 註 要使WPF支持Blazor,.NET版本必須是 6.0 或更高版本,本文所有示例使用的.NET 7.0,版本要求見鏈接,截圖 ...
  • 各位好啊,我是會編程的蝸牛,作為java開發者,我們平常肯定會接觸Linux操作系統,其實除了一般的部署應用外,它還可以幫助我們生成密碼。解決我們平常自己想各種複雜密碼的煩惱,以後我會講一講如何安全地保存我們的密碼。 ...
  • 安裝Docker Docker 分為 CE 和 EE 兩大版本。CE 即社區版(免費,支持周期 7 個月),EE 即企業版,強調安全,付費使用,支持周期 24 個月。 Docker CE 分為 stable test 和 nightly 三個更新頻道。 官方網站上有各種環境下的 安裝指南,這裡主要介 ...
  • 一、Installing RabbitMQ-3.10.2 on CentOS 7.9 1 地址 https://www.rabbitmq.com https://github.com/rabbitmq/rabbitmq-server https://github.com/rabbitmq/rabbi ...
  • 蘋果電腦哪款系統活動監控器好用呢?iStat Menus for mac是一款Mac OS電腦硬體信息監控軟體,提供的信息包括 CPU 使用情形、記憶體用量、硬碟使用情形、網路傳輸、機器溫度、風扇轉速等等。在新版本中,您還可以自由的對iStat Menus顯示的信息進行設置,將您關註的系統信息放在頂部 ...
一周排行
    -Advertisement-
    Play Games
  • 基於.NET Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...