环境linux下部署redis
一、redis下载
1、可以从官网下载:Download | Redis
2、官网下载不下来,可以使用其他下载地址,我使用华为的地址:Index of redis-local
二、实验环境
使用3台centos7.6的服务器来部署redis集群:
192.168.92.140 redis主:6379 redis从:6380
192.168.92.141 redis主:6379 redis从:6380
192.168.92.142 redis主:6379 redis从:6380
三、部署redis
1、上传redis包到服务器上,使用版本redis-6.0.16(生产环境建议使用5.x或者其他稳定版本)
# 安装编译需要的库
yum -y install centos-release-scl
# 安装相关编译依赖
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils gcc automake autoconf libtool make
# centos7默认的 gcc 版本为:4.8.5 < 5.3 无法编译(redis6.x开启了多线程代码依赖)
#临时有效,退出 shell 或重启会恢复原 gcc 版本
scl enable devtoolset-9 bash
# 永久有效(重启或者source /etc/profile)
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
# 解压到/usr/local/目录下并做软连接
tar xf redis-6.0.16.tar.gz -C /usr/local/
ln -s /usr/local/redis-6.0.16/ /usr/local/redis
# 指定安装目录
cd /usr/local/redis
make PREFIX=/usr/local/redis install
cd src && make install
# 默认已经在/usr/local/bin已经有了
# 环境变量
vim /etc/profile
export PATH=/usr/local/redis/bin:$PATH
source /etc/profile
# 启动
redis-server &(默认文件)
# 指定文件启动(一般用这个)
redis-server /usr/local/redis/123.conf
# 关闭
redis-cli shutdown
2、bin目录下解释
redis-benchmark # 性能测试工具,查看本地性能如何
redis-check-aof # 修复有问题的AOF文件
redis-check-rdb # 修复有问题的rdb文件
redis-sentinel # redis 集群使用
redis-server # redis服务启动命令
redis-cli # 客服端连接
3、配置文件
# 创建目录(data是数据目录,logs是日志目录,conf是配置文件目录)
mkdir -p /redis-data/6379/{data,logs,conf}
mkdir -p /redis-data/6380/{data,logs,conf}
-------------------------------------------------
port 6379 # 端口
bind 0.0.0.0 # 写自己的IP
daemonize yes # 后台守护模式,默认no
requirepass 123 # 认证密码
masterauth 123 # 密码认证(主节点开机密码,从节点需要认证)
appendonly yes # 开启AOF持久化模式,默认no
dir /redis-data/6379/data # 数据保存位置,默认./(那启动,保存在哪)
logfile "/redis-data/6379/logs/redis.log" # 日志
cluster-enabled yes # 开启集群
cluster-config-file nodes.conf #集群信息数据
cluster-node-timeout 15000 #超时时间
cluster-announce-ip 192.168.92.140 # 集群节点IP
cluster-announce-port 6379 # 集群节点映射端口
cluster-announce-bus-port 16379 # 集群节点总线端口
cluster-replica-validity-factor 10 #0立刻尝试转移 10*15000 故障不会转移
cluster-migration-barrier 1 # 主节点维持最少可用从节点数(默认是1,默认就行)
# 某段插槽主从都挂了,(no)该段插槽数据不能使用,(默认yes,集群都挂了)
cluster-require-full-coverage no
------------------------------------------------
redis有两个节点需要打开TCP连接,一个用于为客户端提供服务的正常redisTCP端口,还有一个是基于6379端口加了10000的端口,比如16379。
第二个端口用于集群总线,使用二进制协议节点到节点通信,节点之间的故障检查,迁移,授权等等
4、部署和启动
# 拷贝一份配置文件作为6380配置文件
cp reids-6379.conf /redis-data/6380/conf/
# 修改端口和配置文件名字
mv reids-6379.conf reids-6380.conf
sed -i 's/6379/6380/g' /redis-data/6380/conf/reids-6380.conf
------------------------------------------------
# 配置文件拷贝到另外两台服务器起
scp reids-6379.conf root@192.168.92.141:/redis-data/6379/conf/
scp reids-6380.conf root@192.168.92.141:/redis-data/6380/conf/
scp reids-6379.conf root@192.168.92.142:/redis-data/6379/conf/
scp reids-6380.conf root@192.168.92.142:/redis-data/6380/conf/
------------------------------------------------
# 不同主机把集群主机IP修改下141和142上执行
sed -i 's#192.168.92.140#192.168.92.141#g' /redis-data/6379/conf/reids-6379.conf
sed -i 's#192.168.92.140#192.168.92.141#g' /redis-data/6380/conf/reids-6380.conf
sed -i 's#192.168.92.140#192.168.92.142#g' /redis-data/6379/conf/reids-6379.conf
sed -i 's#192.168.92.140#192.168.92.142#g' /redis-data/6380/conf/reids-6380.conf
------------------------------------------------
# 启动redis
redis-server /redis-data/6379/conf/reids-6379.conf
redis-server /redis-data/6380/conf/reids-6380.conf
5、生成集群
# 启动6个redis分别写出IP和port 1表示3主3从 写2表示2主4从
redis-cli --cluster create 192.168.92.140:6379 192.168.92.140:6380 192.168.92.141:6379 192.168.92.141:6380 192.168.92.142:6379 192.168.92.142:6380 --cluster-replicas 1 -a 123
# 会提示是否接受上面配置,输入yes就可以了,就开始初始化集群
6、进去redis查看集群
# 客户端集群连接(加上 -c 其他跟普通的一样)
redis-cli -c -p 6379 -a 123 # -c 集群方式登录 -h 主机IP -p 端口 -a 认证
# 查看集群信息
cluster info
# 集群当前已知的所有节点( node)
cluster nodes
redis集群部署成功
验证设置键值,第一次没有成功是因为分配到192.168.92.142节点上去了,需要认证。前面配置文件有注释