侧边栏壁纸
博主头像
DJ's Blog博主等级

行动起来,活在当下

  • 累计撰写 133 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

【Redis】安装和配置

Administrator
2022-03-15 / 0 评论 / 0 点赞 / 86 阅读 / 6346 字

【Redis】安装和配置

安装

  • 安装升级gcc版本
yum -y install gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
# 临时有效,退出 shell 或重启会恢复原 gcc 版本
sudo scl enable devtoolset-9 bash
# 长期有效
sudo echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
  • 安装tcl
yum install -y tcl
  • 下载最新的6.0.5源码
cd /opt
wget http://download.redis.io/releases/redis-6.0.5.tar.gz
  • 解压缩
tar -zxvf redis-6.0.5.tar.gz
  • 编译源码
cd /opt/redis-6.0.5/
make
make test
  • 安装到指定目录
make install PREFIX=/usr/local/redis
  • 查看redis版本
cd /usr/local/redis/bin
./redis-server -v

配置

  • 拷贝redis.conf配置文件
cd /usr/local/redis/
mkdir conf log data
cp /opt/redis-6.0.5/redis.conf /usr/local/redis/conf/
  • 修改redis.conf配置文件
vim /usr/local/redis/conf/redis.conf
# 注释只能本地访问
#bind 127.0.0.1
# 关闭保护模式
#protected-mode yes
# 开启后台服务运行
daemonize yes
# 指定端口,防止被恶意扫描
port 6479
# 指定日志文件
logfile /usr/local/redis/log/redis.log
# 添加密码
requirepass 123456
# 开启aof
appendonly yes
# 指定aof和rdb的文件路径
dir /usr/local/redis/data/
  • 新建redis.service文件
sudo vim /etc/systemd/system/redis.service
  • 新增内容如下
[Unit]
Description=Redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 重载系统服务
systemctl daemon-reload
  • 启动redis
systemctl start redis
  • 查看redis启动状态
systemctl status redis
  • 设置redis开机启动
systemctl enable redis
  • 去除redis启动日志中warning
vim /etc/sysctl.conf
net.core.somaxconn = 1024
vm.overcommit_memory = 1
sysctl -p
vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
source /etc/rc.local

主从配置

  • 修改redis.conf配置文件
vim redis.conf
  • 在两个slave节点添加如下配置,配置master节点的ip和端口
replicaof 121.41.200.163 6479
  • 在三个节点都添加如下配置,设置访问master节点的密码
masterauth "123456"

要和master节点配置的requirepass的密码相同,不然节点之间无法通信

Sentinel配置

  • 拷贝sentinel.conf配置文件
cd /usr/local/redis/
mkdir sentinel
cp /opt/redis-6.0.5/sentinel.conf /usr/local/redis/conf/
  • 修改sentinel.conf配置文件
vim /usr/local/redis/conf/sentinel.conf
# sentinel进程占用的端口
port 26379
# 以守护进程方式运行
daemonize yes
# sentinel进程的pid文件
pidfile "/var/run/redis-sentinel.pid"
# sentinel的日志
logfile "/usr/local/redis/log/sentinel.log"
# sentinel的数据目录
dir "/usr/local/redis/sentinel"
# sentinel监控的集群名称和master节点
sentinel monitor mymaster 121.41.200.163 6479 2
# 集群之间通信的密码(注意这个配置要放在上面那个配置后面,不然会出现启动sentinel的时候汇报:No such master with specified name异常)
sentinel auth-pass mymaster SuccessHR@2021
# 关闭保护模式
protected-mode no
# 配置sentinel集群之间通信的ip
sentinel announce-ip "121.41.200.163"
  • 启动sentinel
cd /usr/local/redis/bin
./redis-sentinel ../conf/sentinel.conf

常见问题

阿里云ECS安装sentinel集群

问题描述

在ECS上安装sentinel集群,sentinel获取的master节点的IP是内网地址,导致客户端连接失败

解决方法

  1. 保证三个节点的外网IP和端口(6479和26379)都能访问,需要在安全组里面添加对应的白名单
  2. 两个slave节点的redis.conf配置文件添加如下配置:
replicaof master节点外网ip 6479
  1. 三个节点的sentinel.conf配置文件添加如下配置:
sentinel monitor mymaster master节点外网ip 6479 2
sentinel auth-pass mymaster 访问master节点的密码
sentinel announce-ip 服务器外网ip

Redis集群生产环境建议部署在内网,应用服务器使用内网连接,提高查询效率

0

评论区