Redis 主从+哨兵安装与部署

1 前言

  redis集群常见的部署方式有:
  • 采用主从复制 + sentinel(哨兵)监控的方式;
  • 采用redis-cluster集群(去中心化分片集群)的方式
  本文以笔者内部项目为例,采用主从复制+哨兵的方式部署。

2 版本说明

  • 三台服务器(一主两从):192.168.1.60 为主服务器,192.168.1.59 和192.168.1.58 为从服务器
  • 操作系统:CentOS Linux release 7.4.1708 (Core)
  • JDK版本:jdk 1.8.0_171
  • REDIS版本:redis 4.0.10

3 配置主服务器 192.168.1.60

  • 创建安装文件夹,把下载的redis版本放到文件夹中
mkdir -p /data/software
  • redis源码获取
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
  • 若提示找不到wget命令,需先安装wget工具
yum -y install wget
  • 解压,并切换到redis根目录下
tar -zvxf redis-4.0.10.tar.gz
cd ./redis4.0.10
  • 编译和安装redis
make && make install
  • 创建redis存储数据文件的文件夹redis-data
mkdir /data/software/redis 4.0.10/redis-data
  • 创建统一存储Log日志的文件夹LOG
mkdir /data/log/redis
  • 修改redis配置文件,修改的内容如下所示
vim ./redis.conf

--- 将redis设置为守护进程的方式运行,启用后redis会在/var/run文件夹下生成记录pid的文件:”daemonize yes”

--- 保护模式默认开启,当未绑定ip或设置密码时,无法进行非本地连接,可关闭保护模式(因下面已绑定ip及设置密码,这一步配置可忽略,否则加上):”protected-mode no”

--- 将绑定ip修改为本机ip:即”bind 192.168.1.60“

--- 指定记录日志路径:logfile "/data/log/redis/redis.log"

--- 指定redis工作路径,redis的数据保存到磁盘将在此路径下(文件名默认为dump.rdb): “dir  ‘/data/………/redis-data’ “

--- 添加客户端连接redis服务时的访问密码(*号代表自己设置的密码): “requirepass *** ”

--- 配置从服务器访问主服务器密码: “masterauth *** ”

常规配置按以上配置即可,需进一步配置redis其他参数,如快照或AOF等,可参考redis.conf详细配置说明:https://www.cnblogs.com/qq78292959/archive/2013/09/21/3331032.html

  • 启动redis服务
./src/redis-server ./redis.conf
  • 启动服务后,可能出现下列WARNING信息:
① overcommit_memory的警告信息(下图所示),表示overcommit_memory当前设置为0,当系统内存不足时,内存申请可能会不成功。这可能会导致可用内存低时,redis无法保存日志等问题。
解决办法:截图的警告已给出解决办法,分别执行以下三个指令,将overcommit_memory设置为1后重新执行文件:
echo "vm.overcommit_memory=1" > /etc/sysctl.conf
reboot
echo 1 > /proc/sys/vm/overcommit_memory
 
②  警告内核参数默认128,这对于负载很大的服务是不够的。
解决方法,执行以下指令:
echo 511 > /proc/sys/net/core/somaxconn

4  配置从服务器192.168.1.59 和 192.168.1.58

  redis安装步骤与主服务器操作相同,只是修改配置文件时略有不同:
  • 修改redis配置文件
vim ./redis.conf

--- 将redis设置为守护进程的方式运行:”daemonize yes”

--- 将绑定ip修改为本机ip:”bind 192.168.1.59 “

--- 配置跟随主服务器: “slaveof 192.168.1.60 6379”

--- 指定记录日志路径:logfile "/data/log/redis/redis.log"

--- 指定redis工作路径: “dir  ‘/data/………/redis-data’ “

--- 添加客户端连接redis服务时的访问密码: “requirepass *** ”

--- 配置从服务器访问主服务器密码: “masterauth *** ”


5 redis主从测试

  • redis客户端连接主服务器,添加键值对
./src/redis-cli -h 192.168.1.60 -p 6379 -a ***
-> set name testredis
-> get name 
  • redis客户端连接其中一台从服务器,获取键值对的值
./src/redis-cli -h 192.168.1.58 -p 6379 -a Kingdee@dbadmin
-> get name
  在主服务器上写入键值对后,从服务器能够读取,证明配置正常。

6 配置哨兵,每台服务器配置1个哨兵,在三台服务器均进行相同配置

  • 切换到redis根目录下,配置哨兵
cd ./redis4.0.10
vim ./sentinel.conf

--- 哨兵监控主节点的ip & port:sentinel monitor mymaster 192.168.1.60 6379 2

--- 将redis设置为守护进程的方式运行:”daemonize yes”

--- 关闭保护模式:”protected-mode no”

--- 哨兵工作目录为redis根目录:”dir ‘/data/software/redis4.0.10’ “

--- 指定记录日志路径:logfile "/data/log/redis/sentinel.log"

--- 配置主节点多少毫秒无响应后被视为主观下线(sdown):”sentinel down-after-milliseconds mymaster 10000”

--- 配置主服务客观下线时,进行故障转移的时效,在这个时间段内如果转移没完成,则本次转移失效:”sentinel failover-timeout mymaster 30000”

--- 配置哨兵sentinel连接主从的密码:”sentinel auth-pass mymaster *** ”

  注意点:哨兵配置文件中,若没有配置连接服务器的密码,启动后无法正常监控服务器。

  • 三台服务器均启动哨兵
./src/redis-sentinel ./sentinel.conf
  • 哨兵运行情况测试
  进入主服务器192.168.1.60,杀死redis-server进程:
ps -ef|grep redis-server
kill 主服务进程号
 
  查看sentinel.log 日志,日志记录主服务主观停止(sdown),哨兵进行投票(vote)后判断主服务器客观停止(odown),继续查看日志,哨兵将主服务切换(switch)到其他从服务器,证明哨兵配置生效。

7 配置redis服务和哨兵 开启自启动

  • 编辑rc.local

  注:rc.local文件是系统全局脚本文件,会在其他开机进程脚本文件执行完毕后执行该文件。

vim /etc/rc.d/rc.local
在rc.local文件末尾加入命令:
# start the redis-server 启动服务
/data/software/redis4.0.10/src/redis-server "data/software/redis4.0.10/redis.conf"

# start the redis-sentinel 启动哨兵
/data/software/redis4.0.10/src/redis-sentinel
"data/software/redis4.0.10/sentinel.conf"
  • 为rc.local增加可执行权限
chmod +x /etc/rc.d/rc.local
  • 重启系统,查看服务是否自动开启
ps -ef|grep redis
  若看到redis-server和redis-sentinel进程,则配置生效。
 

猜你喜欢

转载自www.cnblogs.com/cheerjude/p/10077505.html
今日推荐