日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

linux服務(wù)器中搭建redis6.0.7集群_Redis

作者:清明雨上~ ? 更新時(shí)間: 2022-12-08 編程語(yǔ)言

一、安裝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的依賴,因?yàn)镽edis是C語(yǔ)言編寫的,所以主要安裝C的編譯環(huán)境

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

進(jìn)入redis文件夾進(jìn)行編譯安裝

cd /usr/local/redis-6.0.7
# 開(kāi)始編譯
make -j 2

編譯安裝過(guò)程中出現(xiàn)大量錯(cuò)誤如下圖所示:

這是因?yàn)榘惭b6版本的Redis需要5.3以上版本的gcc,而先前YUM安裝的gcc默認(rèn)安裝的是4.8.5版本。

# 查看gcc版本
gcc -v
顯示gcc版本為4.8.5,需要升級(jí)gcc

升級(jí)gcc到9版本

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

然后啟用gcc 9。我看到有些博客中寫到啟用gcc9的方法如下

# 臨時(shí)啟用gcc 9
scl enable devtoolset-9 bash

# 長(zhǎng)期啟用gcc 9
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile

#使配置生效
source /etc/profile
?

這種臨時(shí)啟用的方法發(fā)現(xiàn)單獨(dú)在終端執(zhí)行沒(méi)有問(wèn)題,不過(guò)把它寫到腳本里執(zhí)行的時(shí)候,執(zhí)行到這一句就會(huì)退出腳本。所以在腳本中我直接使用source /opt/rh/devtoolset-9/enable臨時(shí)啟用gcc 9。

執(zhí)行完畢后gcc升級(jí)到9.3.1版本

升級(jí)好gcc后重新編譯

# 清除之前編譯的可執(zhí)行文件及配置文件。
make clean

make -j 2

make install

三、啟動(dòng)Redis

在redis的src目錄下執(zhí)行./redis-server,出現(xiàn)如下界面說(shuō)明Redis算是裝好了。不過(guò)有幾個(gè)警告需要處理一下,解決的方法在警告信息中已經(jīng)給出了。

#啟動(dòng)redis服務(wù)
[root@mysql_master src]# ./redis-server

#解決警告信息
# 第一個(gè)警告的解決方法
echo net.core.somaxconn=511 >> /etc/sysctl.conf

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

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

#之后再重新執(zhí)行./redis-server,可以看到,警告信息消失了。Redis服務(wù)順利啟動(dòng)。

此時(shí)Redis服務(wù)在前臺(tái)執(zhí)行,修改Redis的配置文件,讓Redis服務(wù)可以在后臺(tái)運(yùn)行

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

將daemonize no改為daemonize yes,然后使用配置文件重新啟動(dòng)redis
關(guān)閉加密保護(hù),修改數(shù)據(jù)存儲(chǔ)路徑.......
#redis已成功在后臺(tái)啟動(dòng)
[root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
#測(cè)試redis是否正常工作
[root@mysql_master redis-6.0.7]# ./src/redis-cli 
[root@mysql_master src]# ./redis-cli
127.0.0.1:6379> ping
PONG

后臺(tái)啟動(dòng):

四、配置主從

啟動(dòng)主結(jié)點(diǎn)的redis服務(wù)

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

修改兩臺(tái)從結(jié)點(diǎn)的redis.conf配置文件,指定主節(jié)點(diǎn)ip和端口

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

replicaof 192.168.232.11 6379 主ip+主端口

修改完后啟動(dòng)兩臺(tái)從的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
三臺(tái)都要配置,具體內(nèi)容如下所示,可以刪完然后復(fù)制上去
###############################################################
port 26379
daemonize yes   #后臺(tái)啟動(dòng) 
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
##############################################################
注意:一定要開(kāi)啟后臺(tái)啟動(dòng),否則Ctrl+c退出,sentinel會(huì)自動(dòng)關(guān)閉

啟動(dòng),三臺(tái)都要啟動(dòng)

#讀取sentinel配置文件,三臺(tái)都一樣啟動(dòng)
[root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf 

#查看進(jìn)程是否啟動(dòng):
[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集群搭建

環(huán)境準(zhǔn)備

1.準(zhǔn)備三機(jī)器,關(guān)閉防火墻和selinux
2.制作解析并相互做解析,即三臺(tái)互相ping通,主機(jī)名可改可不改。
注:規(guī)劃架構(gòu)兩種方案,一種是單機(jī)多實(shí)例,這里我們采用多機(jī)器部署:
三臺(tái)機(jī)器,每臺(tái)機(jī)器上面兩個(gè)redis實(shí)例,一個(gè)master一個(gè)slave,第一列做主庫(kù),第二
列做備庫(kù)


#記得選出控制節(jié)點(diǎn)
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臺(tái)機(jī)器都需要安裝redis 服務(wù)

創(chuàng)建實(shí)例目錄

#先裝一個(gè)工具tree
yum install tree

#創(chuàng)建節(jié)點(diǎn)目錄:按照規(guī)劃在每臺(tái)redis節(jié)點(diǎn)的安裝目錄中創(chuàng)建對(duì)應(yīng)的目錄(以端口號(hào)命名)
#具體創(chuàng)建過(guò)程不再描述
查看目錄結(jié)構(gòu)(六臺(tái))
[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
#其他五臺(tái)除了名字不一樣,配置文件不一樣,其他都一樣

配置官方配置文件,去掉#開(kāi)頭的和空格行

#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
#其他五臺(tái)修改一下目錄

創(chuàng)建集群

注意:創(chuàng)建集群:在其中一個(gè)節(jié)點(diǎn)操作就可以

redis節(jié)點(diǎn)搭建起來(lái)后,需要完成redis cluster集群搭建,搭建集群過(guò)程中,需要保證6個(gè)redis實(shí)例都是運(yùn)行狀態(tài)

Redis是根據(jù)IP和Port的順序,確定master和slave的,所以要排好序,再執(zhí)行。
參數(shù):
--cluster-replicas 1:表示為集群中的每個(gè)主節(jié)點(diǎn)創(chuàng)建一個(gè)從節(jié)點(diǎn).書(shū)寫流程:主節(jié)點(diǎn)
ip+port 對(duì)應(yīng)一個(gè)從節(jié)點(diǎn)ip+port(正常是前面三個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),后面的為從節(jié)點(diǎn))

#先把六臺(tái)redis啟動(dòng)起來(lái)再啟動(dòng)集群
[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,等待集群創(chuàng)建
出現(xiàn)以下信息證明創(chuàng)建成功
[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 向客戶端擴(kuò)展

轉(zhuǎn)載請(qǐng)注明出處,未完待續(xù)...

原文鏈接:https://www.cnblogs.com/qsmm/p/16871488.html

欄目分類
最近更新