redis 三主三从 搭建步骤

时间:2024-01-23 22:34:34

redis 三主三从 搭建步骤_服务器

步骤:

搭建 Redis 三主三从的步骤如下:

  1. 安装 Redis:在每台服务器上安装 Redis。可以通过源码编译安装、使用包管理工具(如apt、yum)安装或下载预编译的二进制文件进行安装。
  2. 配置主服务器:选择其中一台服务器作为主服务器,在其配置文件(redis.conf)中进行如下配置:
  • 设置bind参数,指定主服务器的IP地址;
  • 设置port参数,指定主服务器的端口号;
  • 设置daemonize参数为yes,以后台运行 Redis;
  • 设置requirepass参数,指定主服务器的密码。
  1. 配置从服务器:在剩下的服务器上作为从服务器,在其配置文件(redis.conf)中进行如下配置:
  • 设置bind参数,指定从服务器的IP地址;
  • 设置port参数,指定从服务器的端口号;
  • 设置daemonize参数为yes,以后台运行 Redis;
  • 设置requirepass参数,指定从服务器的密码;
  • 设置masterauth参数,指定主服务器的密码;
  • 设置slaveof参数,指定主服务器的IP地址和端口号。
  1. 启动 Redis:在每台服务器上启动 Redis 服务,可以使用redis-server命令启动。
  2. 验证主从关系:在主服务器上执行info replication命令,查看主从复制的状态。如果显示有从服务器连接到主服务器,并且状态为up,则表示主从关系建立成功。
  3. 测试主从复制:在主服务器上设置一个键值对,然后在从服务器上验证是否复制成功。可以使用set和get命令进行测试。
  4. 配置持久化:在主服务器和从服务器的配置文件中,设置RDB和AOF持久化方式。可以选择使用RDB方式、AOF方式、或者两者同时使用。
  5. 处理故障情况:如果主服务器宕机,从服务器中的一台可以自动切换为主服务器。可以在从服务器的配置文件中设置slave-priority参数,指定优先级,以确定哪台从服务器将成为新的主服务器。

相关的脚本:

mkdir -p /home/opt/redis-cluster
mkdir -p /home/opt/redis-cluster/node-6379
mkdir -p /home/opt/redis-cluster/node-6479

mkdir -p /home/opt/redis-cluster/node-6379/conf
mkdir -p /home/opt/redis-cluster/node-6379/data
mkdir -p /home/opt/redis-cluster/node-6379/log
mkdir -p /home/opt/redis-cluster/node-6379/run

mkdir -p /home/opt/redis-cluster/node-6479/conf
mkdir -p /home/opt/redis-cluster/node-6479/data
mkdir -p /home/opt/redis-cluster/node-6479/log
mkdir -p /home/opt/redis-cluster/node-6479/run

for i in 1 2 ;do 

cp -r /home/opt/redis-6.2.5/redis.conf  /home/opt/redis-cluster/node-6379/conf/ 
cp -r /home/opt/redis-6.2.5/redis.conf  /home/opt/redis-cluster/node-6479/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



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




#!/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


 scp -r /home/opt/redis-cluster/* root@198.10.51.101:/home/opt/redis-cluster/


vi /home/opt/redis-cluster/node-6379/conf/redis.conf
vi /home/opt/redis-cluster/node-6379/conf/redis.conf


#!/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-6379/conf/redis.conf ;\
   /home/opt/redis-6.2.5/bin/redis-server /home/opt/redis-cluster/node-6479/conf/redis.conf'
done


/home/opt/redis-6.2.5/bin/redis-server  /home/opt/redis-cluster/node-6379/conf/redis.conf ;\
   /home/opt/redis-6.2.5/bin/redis-server /home/opt/redis-cluster/node-6479/conf/redis.conf
   
   
   
/home/opt/redis-6.2.5/bin/redis-server  /home/opt/redis-cluster/node-6379/conf/redis.conf \
   /home/opt/redis-6.2.5/bin/redis-server /home/opt/redis-cluster/node-6479/conf/redis.conf
   
   
   
   
/home/opt/redis-6.2.5/bin/redis-cli -a demo12345678 --cluster create  198.10.51.100:6379 198.10.51.100:6479 198.10.51.101:6379 198.10.51.101:6479 198.10.51.102:6379 198.10.51.102:6479 --cluster-replicas 1   

/home/opt/redis-6.2.5/bin/redis-cli -h 198.10.5.100  -p 6379 -a demo12345678 -c


/home/opt/redis-6.2.5/bin/redis-cli -h 198.10.5.100  -p 6379 -a demo12345678 cluster info


/home/opt/redis-6.2.5/bin/redis-cli -h 198.10.5.100  -p 6379 -a demo12345678 -c
/home/opt/redis-6.2.5/bin/redis-cli -h 198.10.5.101  -p 6379 -a demo12345678 -c


参考资料:

1.https://blog.csdn.net/zhangbeizhen18/article/details/131097115?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-131097115-blog-103408425.235%5Ev40%5Epc_relevant_anti_vip_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-131097115-blog-103408425.235%5Ev40%5Epc_relevant_anti_vip_base&utm_relevant_index=2

2.https://blog.51cto.com/u_16099249/6349361

3.https://blog.csdn.net/zczzsq/article/details/8162339

4.https://blog.csdn.net/weixin_51468875/article/details/114269711


可能遇到的问题:

1.权限问题

报XXX文件不够 直接 chmod a+x 文件名即可

2.集群通信问题

 firewall-cmd --permanent --zone=trusted  --add-source=198.10.51.0/24

firewall-cmd --reload

3.[ERR] Node 192.168.117.134:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

删除对应数据节点的文件数据即可。