redis集群配置

单机基本配置

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
#将redis目录下面utils中的redis_init_script复制到/etc/init.d/目录下,并且改为为redis_端口号
cp redis_init_script /etc/init.d/redis_6379
mkdir /etc/redis #存放redis的配置文件
mkdir /var/redis/6379 #存放redis的持久化文件
修改redis.conf拷贝到/etc/redis/6379.conf中
#修改redis.conf中的配置环境为生产环境
daemonize yes # 让redis以后台方式启动
pidfile /var/run/redis_6379.pid #设置redis的pid文件位置
port 6379 #设置redis的监听端口号
dir /var/redis/6379 #设置持久化文件的存储位置
#在任何目录下都可以使用redis_cli
sudo cp src/redis-cli /usr/local/bin/
sudo cp src/redis-server /usr/local/bin/
#启动redis
cd /etc/init.d/
chmod 777 6379.conf
./redis_6379.conf start
#让redis开机自动启动,在redis_6379的最上面加入下面两行注释
#chkconifg:2345 90 10
#description:Redis is a persistent key-value database
#--------------------------
#在当前目录下执行下面这个命令
chkconfig redis_6379 on
#查看redis是否启动
ps -ef |grep redis

主从复制配置

master

在redis的配置文件中,即/etc/redis/6379.conf

1
2
bind 自己的ip地址
requirepass 密钥(自己随意设置即可)

slave

1
2
3
bind 自己的ip地址
masterauth 上面master设置的密钥
replicaof(比较旧的版本是slaveof) aster的IP地址 端口号(一般默认为6379)

启动redis

1
2
3
4
5
6
7
注意:先启动master再启动slave
#启动redis 进入到/etc/init.d/目录下
./redis.6379 start
#进入redis,设置了requirepass的服务器需要输入密钥,没有设置的不需要,也就是说master是需要输入,而slave不需要输入密钥
redisl-cli -h 当前服务器的ip地址 -a 设置的密钥
#在服务器中可以查看主从配置信息
info replication

master info replication

image.png

slave info replication

image.png

问题

ping通,但是telnet不通

  1. 如果你在从的redis中看见master_link——status 状态是down,可能是telnet到master的端口不通,执行telent master ip地址 redis设置的端口号(默认是6379)
  2. 如果发现没有telnet命令,需要执行 yum install -y telnet
  3. 如果yum出现问题,修改yum的源文件,vim /etc/yum.repos.d/ epel.repo
    将下图中的metalink注释起来,将baseurl取消注释,下图是修改后的结果
    image.png
  4. telnet安装之后,还是slave 可以ping通master,但是telnet不通,这种情况一般就是服务器的防火墙的问题,可以选择直接将服务器关闭
    1
    2
    3
    4
    5
    6
    #关闭开机自动启动防火墙
    systemctl disable firewalld.service
    #查看防火墙的状态
    firewall-cmd --state
    #临时关闭防火墙
    systemctl stop firewalld.service