在Linux上安装Redis集群(redis-6.2.5)

记录:441

场景:在CentOS 7.9操作系统上,使用redis-6.2.5版本,在三台机器上,安装Redis集群。

版本:Redis-6.2.5,CentOS 7.9,Linux kernel-5.4.218,gcc 9.3.1。

1.主机规划

目标:使用三台主机部署三主三从Redis集群。

每台机器分布一个主节点(Master)一个从节点(Slave)。

主机app161;IP:192.168.19.161;端口:27001,27002。

主机app162;IP:192.168.19.162;端口:27001,27002。

主机app163;IP:192.168.19.163;端口:27001,27002。

2.安装gcc

在主机app161中操作,给3台主机安装gcc。

2.1安装gcc

命令:

for host_name in app161 app162 app163;do ssh -t root@$host_name 'yum  install -y devtoolset-9-gcc devtoolset-9-gcc-c++  devtoolset-9-binutils gcc';done

2.2配置gcc

安装完成后需要配置生效。

命令:

for host_name in app161 app162 app163;do ssh -t root@$host_name "echo 'source /opt/rh/devtoolset-9/enable'>>/etc/profile; source /etc/profile";done

2.3查看版本

命令:gcc --version

3.下载Redis安装包

下载版本:redis-6.2.5.tar.gz

下载地址:http://download.redis.io/releases

下载命令:wget http://download.redis.io/releases/redis-6.2.5.tar.gz

解析:下载完成后,redis-6.2.5.tar.gz包在当前目录。

4.解压redis包到指定目录

命令:tar -zxvf /home/apps/software/redis-6.2.5.tar.gz -C /home/opt/

解析:解压到指定目录:/home/opt/redis-6.2.5

5.编译redis

操作目录:cd /home/opt/redis-6.2.5

编译命令:make -C /home/opt/redis-6.2.5/

解析:编译redis后,在redis-6.2.5/src目录下生成.o文件和redis-server等文件,生成./deps文件夹。

6.安装redis

操作目录:cd /home/opt/redis-6.2.5

安装命令:make install PREFIX=/home/opt/redis-6.2.5/

解析:把redis指定安装在/home/opt/redis-6.2.5/,则会在此目录下生成bin目录。一般默认安装到目录:/usr/local/。

7.创建集群目录

7.1集群目录规划

在集群每个节点都创建如下目录。

集群主目录:mkdir -p /home/opt/redis-cluster

节点27001目录:mkdir -p /home/opt/redis-cluster/node-27001

节点27002目录:mkdir -p /home/opt/redis-cluster/node-27002

节点27001目录:

配置目录:mkdir -p /home/opt/redis-cluster/node-27001/conf

数据目录:mkdir -p /home/opt/redis-cluster/node-27001/data

日志目录:mkdir -p /home/opt/redis-cluster/node-27001/log

运行目录:mkdir -p /home/opt/redis-cluster/node-27001/run

节点27002目录:

配置目录:mkdir -p /home/opt/redis-cluster/node-27002/conf

数据目录:mkdir -p /home/opt/redis-cluster/node-27002/data

日志目录:mkdir -p /home/opt/redis-cluster/node-27002/log

运行目录:mkdir -p /home/opt/redis-cluster/node-27002/run

7.2远程执行创建目录

脚本名称:makedir.sh

脚本内容:

#!/bin/bash
for host_name in app161 app162 app163
do
  ssh -t root@$host_name 'mkdir -p /home/opt/redis-cluster/node-27001/conf; \
  mkdir -p /home/opt/redis-cluster/node-27001/data;\
  mkdir -p /home/opt/redis-cluster/node-27001/log;\
  mkdir -p /home/opt/redis-cluster/node-27001/run;\
  mkdir -p /home/opt/redis-cluster/node-27002/conf;\
  mkdir -p /home/opt/redis-cluster/node-27002/data;\
  mkdir -p /home/opt/redis-cluster/node-27002/log;\
  mkdir -p /home/opt/redis-cluster/node-27002/run'
done

执行脚本:bash makedir.sh

8.拷贝redis.conf到节点node-27001和node-27002

在主机app161中操作。

命令:

for i in 1 2 ;do cp -r /home/opt/redis-6.2.5/redis.conf  /home/opt/redis-cluster/node-2700${i}/conf/ ;done

解析:把redis.conf配置拷贝到节点node-27001和node-27002中。

9.修改redis.conf配置文件

在主机app161中操作。

9.1修改节点node-27001

修改命令:vi /home/opt/redis-cluster/node-27001/conf/redis.conf

修改内容:

port 27001
bind 192.168.19.161
daemonize yes 
pidfile /home/opt/redis-cluster/node-27001/run/redis.pid
logfile "/home/opt/redis-cluster/node-27001/log/stdout.pid"
dir /home/opt/redis-cluster/node-27001/data
cluster-enabled  yes 
cluster-config-file  nodes_27001.conf 
cluster-node-timeout  15000
appendonly  yes
masterauth  <demo12345678>
requirepass  demo12345678
#bind 127.0.0.1 -::1

9.2修改节点node-27002

修改命令:vi /home/opt/redis-cluster/node-27002/conf/redis.conf

修改内容:

port 27002
bind 192.168.19.161
daemonize yes 
pidfile /home/opt/redis-cluster/node-27002/run/redis.pid
logfile "/home/opt/redis-cluster/node-27002/log/stdout.pid"
dir /home/opt/redis-cluster/node-27002/data
cluster-enabled  yes 
cluster-config-file  nodes_27002.conf 
cluster-node-timeout  15000
appendonly  yes
masterauth  <demo12345678>
requirepass  demo12345678
#bind 127.0.0.1 -::1

10.拷贝主机app161的redis和redis-cluster到其它主机

在主机app161已经完成编译、安装、配置等操作,只需将app161主机redis相关内容拷贝到主机app162和app163。针对少量差异配置适配修改接口,比如修改绑定的IP。

10.1拷贝主机app161的redis和redis-cluster到其它主机

脚本名称:bash scpconfig.sh

脚本内容:

#!/bin/bash
#创建目录
for host_name in app162 app163
do
  ssh -t root@${host_name} 'mkdir -p /home/opt/redis-6.2.5/'
done
#拷贝文件
for host_name in app162 app163
do
  scp -r /home/opt/redis-cluster/* root@${host_name}:/home/opt/redis-cluster/
  scp -r /home/opt/redis-6.2.5/* root@${host_name}:/home/opt/redis-6.2.5/
done

执行脚本:bash scpconfig.sh

10.2分别修改主机app162和app163集群配置

修改命令:vi /home/opt/redis-cluster/node-27001/conf/redis.conf

修改命令:vi /home/opt/redis-cluster/node-27002/conf/redis.conf

主机app162修改:bind 192.168.19.162

主机app163修改:bind 192.168.19.163

11.更改redis目录所有权

此步骤前安装和配置redis使用root用户操作,实际生产中一般使用普通用户启动和维护redis,因此将redis相关目录更改所有权为普通用户:learn。

脚本名称:chgown.sh

脚本内容:

#!/bin/bash
for host_name in app161 app162 app163
do
   ssh -t root@${host_name} 'chown -R learn:learn /home/opt/redis-6.2.5/ ; \
    chown -R learn:learn /home/opt/redis-cluster/'
done

执行脚本:bash chgown.sh

12.启动集群全部redis

12.1启动redis集群

脚本名称:redis-start.sh

脚本内容:

#!/bin/bash

for host_name in app161 app162 app163
do
   ssh -t learn@${host_name} '/home/opt/redis-6.2.5/bin/redis-server  /home/opt/redis-cluster/node-27001/conf/redis.conf ;\
   /home/opt/redis-6.2.5/bin/redis-server /home/opt/redis-cluster/node-27002/conf/redis.conf'
done

执行脚本:bash redis-start.sh

12.2查看redis端口

脚本名称:redis-status.sh

脚本内容:

#!/bin/bash

for host_name in app161 app162 app163
do
   echo "查看主机 ${host_name} 启动的节点:"
   ssh -t learn@${host_name} 'ps -ef | grep 27001 ;ps -ef | grep 27002'
done

执行脚本:bash redis-status.sh

13.创建集群

在主机app161操作。

命令:

home/opt/redis-6.2.5/bin/redis-cli -a demo12345678 --cluster create  192.168.19.161:27001 192.168.19.161:27002 192.168.19.162:27001 192.168.19.162:27002 192.168.19.163:27001 192.168.19.163:27002 --cluster-replicas 1

解析:redis-cli,客户端。 -a demo12345678,访问密码。--cluster create,创建集群。--cluster-replicas 1,创建一个副本。

14.常用命令

14.1查看集群状态

命令:

/home/opt/redis-6.2.5/bin/redis-cli -h 192.168.19.161  -p 27001 -a demo12345678 cluster info

解析:redis-cli,客户端。-h,指定主机IP。-p,指定端口。-a demo12345678,指定密码。cluster info,集群信息。

14.2使用命令行登录

(1)在主机app161登录并写入数据

命令:

/home/opt/redis-6.2.5/bin/redis-cli -h 192.168.19.161  -p 27001 -a demo12345678 -c

写入数据:set D:2023060701 Hangzhou

日志信息:

[learn@app161 opt]$ /home/opt/redis-6.2.5/bin/redis-cli -h 192.168.19.161  -p 27001 -a demo12345678 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.19.161:27001> set D:2023060701 Hangzhou
OK

(2)在主机app162登录并读出数据

命令:

/home/opt/redis-6.2.5/bin/redis-cli -h 192.168.19.162  -p 27001 -a demo12345678 -c 

写入数据:get D:2023060701

日志信息:

[learn@app162 ~]$ /home/opt/redis-6.2.5/bin/redis-cli -h 192.168.19.162  -p 27001 -a demo12345678 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.19.162:27001> get D:2023060701
-> Redirected to slot [852] located at 192.168.19.161:27001
"Hangzhou"

(2)小结

示例中,在一个节点写入数据,其它节点读出数据,集群已经正常工作。

以上,感谢。

2023年6月7日

猜你喜欢

转载自blog.csdn.net/zhangbeizhen18/article/details/131097115