安装环境
1.从官方网站下载最新的稳定版本,目前是redis-5.0.3.tar.gz
https://redis.io/download
2.三台Linux系统服务器:
server.1=10.255.29.29
server.2=10.255.29.30
server.3=10.255.29.31
3.将下载的redis-5.0.3.tar.gz压缩包放在/home/bak/software目录下
配置主服务器
1.解压缩
cd /home/bak/software
tar -zxvf redis-5.0.3.tar.gz
mv redis-5.0.3 /opt/
2.创建软链接
cd /opt
ln -s redis-5.0.3 redis
3.编译
cd redis
make
make报错:
第一种可能:
redis编译时,需要依赖gcc
解决方案:yum安装gcc依赖
yum install gcc
第二种可能:
出现这个错误是因为,在构建Redis时,默认情况下编译并链接到libc malloc,但在Linux系统上默认的内存分配器是jemalloc。linux系统之所以选择jemalloc作为默认的内存分配器,是因为jemalloc被证明比libc malloc具有更少的碎片问题。所以,通过设置“MALLOC”环境变量来选择非默认的内存分配器。
make MALLOC=libc
make命令执行完成编译后,会在src目录下生成6个可执行文件,
分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-rdb、redis-sentinel。
4.编译测试
make test
make test报错,执行命令,查看是否安装tcl
rpm -qa|grep tcl
yum list installed
如果是因为缺少tcl依赖导致的错误,则安装
yum install tcl
再次make test
,保证下载的代码可以在环境中正确执行。
5.启动redis
cd /opt/redis
src/redis-server redis.conf
6.修改配置文件
在/etc下创建redis目录
mkdir /etc/redis
将 /opt/redis下的redis.conf和sentinel.conf复制到/etc/redis下
修改redis.conf配置文件
vi /etc/redis/redis.conf
修改:
第一点:daemonize yes
第二点:requirepass “test2019” (密码)
第三点:bind 0.0.0.0
配置从服务器
1.将redis复制到两台从服务器的/opt目录下
scp -r /opt/redis-5.0.3 root@10.255.29.30:/opt/
2.创建软连接
cd /opt
ln -s redis-5.0.3 redis
3.配置从服务器的redis.conf文件
scp -r /etc/redis/redis.conf root@10.255.29.30:/etc/redis/
vi /etc/redis/redis.conf
requirepass “test2019”
daemonize yes
bind 0.0.0.0
slaveof 10.255.29.29 6379
masterauth “test2019”
最后将10.255.29.30关于redis的内容复制到10.255.29.31
scp -r /opt/redis-5.0.3 root@10.255.29.31:/opt/
scp -r /etc/redis/redis.conf root@10.255.29.31:/etc/redis/
配置哨兵
1.主服务器
vim /etc/redis/sentinel.conf
第一点:
daemonized yes
第二点:
sentinel monitor mymaster 10.255.29.29 6379 2
第三点:
sentinel auth-pass mymaster test2019
第四点:
sentinel down-after-milliseconds mymaster 60000
第五点:
sentinel failover-timeout mymaster 180000
第六点:
sentinel parallel-syncs mymaster 1
第七点:
protected-mode no
2.从服务器
将主服务器的sentinel.conf配置文件,复制到两个从服务器
scp -r /etc/redis/sentinel.conf root@10.255.29.30:/etc/redis/
scp -r /etc/redis/sentinel.conf root@10.255.29.31:/etc/redis/
启动服务
启动redis:
[root@app01 ~]# cd /opt/redis/
[root@app01 ~]# src/redis-server /etc/redis/redis.conf
启动哨兵:
[root@app01 ~]# cd /opt/redis/
[root@app01 ~]# src/redis-sentinel /etc/redis/sentinel.conf
三台服务器均使用以上命令启动服务
检查redis集群是否配置成功
主服务器向set中添加元素(由于原来的主服务器10.255.29.29出现问题,主服务器变更为10.255.29.30)
从服务器可以查看新添加的元素
redis设置服务自启动
添加开机启动服务
vim /etc/systemd/system/redis.service
在该文件内粘贴如下:
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis/src/redis-server /etc/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置开机启动
systemctl daemon-reload
systemctl status redis
systemctl stop redis
systemctl start redis