CentOS7怎么搭建Redis集群
创始人
2024-12-24 03:01:25
0次

 CentOS 7搭建Redis5.0.5集群(三台机器,3主3备)

准备工作

准备三台centos 7的机器:如下图机器的分配情况(每台机器关闭防火墙):

IP master节点 salve节点

192.168.0.166 redis-166:7001 redis-166:7002

192.168.0.167 redis-167:7001 redis-167:7002

192.168.0.168 redis-168:7001 redis-168:7002

设置三台机器的/etc/hosts,每台都要添加如下三行,保存退出

[root@localhost tools]# vim /etc/hosts

192.168.0.166 redis-166

192.168.0.167 redis-167

192.168.0.168 redis-168 

1

2

3

4

官网下载redis-5.0.5版本: http://download.redis.io/releases/redis-5.0.5.tar.gz

把下载的包上传到上面3台centos中

开始安装

我们以192.168.0.166机器安装为例,其他两台只是配置文件的IP不一样

如果centos中没有gcc环境,则需要先安装gcc。如果有就直接看下一步。

[root@localhost tools]# yum install -y gcc 

1

解压redis包到当前目录下

[root@localhost tools]# tar -zxvf redis-5.0.5.tar.gz 

1

进入刚解压出来的redis目录,开始编译安装

[root@localhost tools]# cd redis-5.0.5/

[root@localhost redis-5.0.5]# make && make PREFIX=/usr/local/redis install 

1

2

查看是否编译安装成功,执行 如下命令,如果输出0 表示redis安装成功了

[root@localhost redis-5.0.5]# echo $?

0 

1

2

配置环境变量,在/etc/profile文件最后添加如下内容:

[root@localhost tools]# vim /etc/profile

 

###### redis env ######

export REDIS_HOME=/usr/local/redis

export PATH=$PATH:$REDIS_HOME/bin

1

2

3

4

5

其他167和168两台机器,安装redis跟上面166机器完全一样

集群配置

我们还是以192.168.0.166机器安装为例,其他两台只是配置文件的IP不一样

分别创建两个7001和7002的配置文件目录conf,日志目录logs,数据存储目录data,如下命令:

mkdir -p /usr/local/redis/redis_cluster/7001/conf/

mkdir -p /usr/local/redis/redis_cluster/7001/logs/

mkdir -p /usr/local/redis/redis_cluster/7001/data/

 

mkdir -p /usr/local/redis/redis_cluster/7002/conf/

mkdir -p /usr/local/redis/redis_cluster/7002/logs/

mkdir -p /usr/local/redis/redis_cluster/7002/data/

1

2

3

4

5

6

7

创建7001的配置文件,并添加如下内容:

vim /usr/local/redis/redis_cluster/7001/conf/redis.conf

 

# 绑定服务器域名或IP地址

bind redis-166

# 设置端口,区分集群中Redis的实例

port 7001

# 后台运行

daemonize yes

# pid进程文件名,以端口号命名

pidfile /var/run/redis-7001.pid

# 日志文件名称,以端口号为目录来区分

logfile /usr/local/redis/redis_cluster/7001/logs/redis.log

# 数据文件存放地址,以端口号为目录名来区分

dir /usr/local/redis/redis_cluster/7001/data

# 启用集群

cluster-enabled yes

# 配置每个节点的配置文件,同样以端口号为名称

cluster-config-file nodes_7001.conf

# 配置集群节点的超时时间

cluster-node-timeout 15000

# 启动AOF增量持久化策略

appendonly yes

# 发生改变,则记录日志

appendfsync always

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

创建7002的配置文件,并添加如下内容:

vim /usr/local/redis/redis_cluster/7002/conf/redis.conf

 

# 绑定服务器域名或IP地址

bind redis-166

# 设置端口,区分集群中Redis的实例

port 7002

# 后台运行

daemonize yes

# pid进程文件名,以端口号命名

pidfile /var/run/redis-7002.pid

# 日志文件名称,以端口号为目录来区分

logfile /usr/local/redis/redis_cluster/7002/logs/redis.log

# 数据文件存放地址,以端口号为目录名来区分

dir /usr/local/redis/redis_cluster/7002/data

# 启用集群

cluster-enabled yes

# 配置每个节点的配置文件,同样以端口号为名称

cluster-config-file nodes_7002.conf

# 配置集群节点的超时时间

cluster-node-timeout 15000

# 启动AOF增量持久化策略

appendonly yes

# 发生改变,则记录日志

appendfsync always

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

其他167和168两台机器,集群配置跟上面166机器配置只是域名不同,其他设置都是一样的

启动集群

在保证上面166,167,168都配置完成后,开始启动166,167,168各节点

redis-server /usr/local/redis/redis_cluster/7001/conf/redis.conf

redis-server /usr/local/redis/redis_cluster/7002/conf/redis.conf

1

2

查看各机器上的各节点是否都启动成功

[root@localhost redis-5.0.5]# ps -ef | grep redis

 

root      6460     1  0 14:14 ?        00:00:10 /usr/local/redis/bin/redis-server redis-166:7001 [cluster]

root      6471     1  0 14:14 ?        00:00:10 /usr/local/redis/bin/redis-server redis-166:7002 [cluster]

1

2

3

4

[root@localhost redis-5.0.5]# ps -ef | grep redis

 

root      6532     1  0 14:14 ?        00:00:10 /usr/local/redis/bin/redis-server redis-167:7001 [cluster]

root      6548     1  0 14:14 ?        00:00:10 /usr/local/redis/bin/redis-server redis-167:7002 [cluster]

1

2

3

4

[root@localhost redis-5.0.5]# ps -ef | grep redis

 

root      6486     1  0 14:14 ?        00:00:10 /usr/local/redis/bin/redis-server redis-168:7001 [cluster]

root      6498     1  0 14:14 ?        00:00:10 /usr/local/redis/bin/redis-server redis-168:7002 [cluster]

1

2

3

4

使用 reids-cli 创建Redis集群 (注:这里必须使用IP,如果使用像redis-166这样的域名,则会报错,具体原因我也不清楚)

redis-cli –cluster create 192.168.0.166:7001 192.168.0.167:7001 192.168.0.168:7001 192.168.0.166:7002 192.168.0.167:7002 192.168.0.168:7002 –cluster-replicas 1

1

查看我们刚创建集群的状态,如下命令:(在3台集群中的任意一台机器查看任意节点都一样,会带出所有的节点信息)

[root@localhost redis-5.0.5]# redis-cli –cluster check 192.168.0.167:7001

 

192.168.0.167:7001 (b909c05c…) -> 0 keys | 5462 slots | 1 slaves.

192.168.0.166:7001 (e136a43b…) -> 0 keys | 5461 slots | 1 slaves.

192.168.0.168:7001 (4bf0b7df…) -> 1 keys | 5461 slots | 1 slaves.

[OK] 1 keys in 3 masters.

0.00 keys per slot on average.

>>> Performing Cluster Check (using node 192.168.0.167:7001)

M: b909c05ca4c89695fee7b4799050312ed20c989e 192.168.0.167:7001

   slots:[5461-10922] (5462 slots) master

   1 additional replica(s)

M: e136a43b8dbfd7612f48fe2c17e33203d5329eed 192.168.0.166:7001

   slots:[0-5460] (5461 slots) master

   1 additional replica(s)

M: 4bf0b7df6ce34ad2d3ee87ab500b200f3ae64cee 192.168.0.168:7001

   slots:[10923-16383] (5461 slots) master

   1 additional replica(s)

S: 84ada651baf494cbcdbfe26232b0061146260a3d 192.168.0.167:7002

   slots: (0 slots) slave

   replicates e136a43b8dbfd7612f48fe2c17e33203d5329eed

S: 4b9a181365ba49dde3def4d9d562c5a4d4ef657e 192.168.0.166:7002

   slots: (0 slots) slave

   replicates 4bf0b7df6ce34ad2d3ee87ab500b200f3ae64cee

S: 02c3fc75bc6e6d4e070563f2b42a41f2616f66a5 192.168.0.168:7002

   slots: (0 slots) slave

   replicates b909c05ca4c89695fee7b4799050312ed20c989e

[OK] All nodes agree about slots configuration.

>>> Check for open slots…

>>> Check slots coverage…

[OK] All 16384 slots covered.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

测试集群是否正常:

在集群中的任意一台测试都可以,如我们可以在166上连接167上的7002节点并添加一个数据

[root@localhost redis-5.0.5]# redis-cli -c -h 192.168.0.167 -p 7002

 

192.168.0.167:7002> set key001 helloRredis

-> Redirected to slot [274] located at 192.168.0.166:7001

OK

192.168.0.166:7001> get key001

“helloRredis”

192.168.0.166:7001> 

1

2

3

4

5

6

7

8

再去167上连接7001节点和168上连接7001或者7002看是否可以查询到数据

 

[root@localhost redis-5.0.5]# redis-cli -c -h 192.168.0.167 -p 7001

 

192.168.0.167:7001> get key001

-> Redirected to slot [274] located at 192.168.0.166:7001

“helloRredis”

192.168.0.166:7001> 

1

2

3

4

5

6

[root@localhost redis-5.0.5]# redis-cli -c -h 192.168.0.168 -p 7002

 

192.168.0.168:7002> get key001

-> Redirected to slot [274] located at 192.168.0.166:7001

“helloRredis”

192.168.0.166:7001> 

1

2

3

4

5

6

出现上面的结果,说明我们搭建的集群运作正常

如果需要配置开机自启动,添加如下两行:(每台机器都要配置),保存退出即可。以后开机就会自动启动集群

[root@localhost redis-5.0.5]# vim /etc/rc.local

 

/usr/local/redis/bin/redis-server /usr/local/redis/redis_cluster/7001/conf/redis.conf

/usr/local/redis/bin/redis-server /usr/local/redis/redis_cluster/7002/conf/redis.conf

1

2

3

4

如果上面设置了,还是不能开机自启动,则有可能是/etc/rc.d/rc.local没有执行权限,需要给一个执行权限,如下:

[root@localhost redis-5.0.5]# chmod +x /etc/rc.d/rc.local

1


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...