Redis安装部署(一主二从三哨兵)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介:

Redis安装部署(一主二从三哨兵)

需求:根据当前客户的生产环境,模拟安装部署Redis的测试环境,方便后续的功能测试。

1.准备工作
2.安装编译Redis
3.Redis运行环境配置
4.Redis启动和关闭
1.准备工作
Redis的版本和虚拟主机数量都按照客户的生产环境来准备:Redis版本:3.2.10
准备3台虚拟机,具体环境信息为:

系统版本 主机名 IP地址 主机内存 磁盘空间
RHEL6.8 test01 192.168.1.121 4G 20G
RHEL6.8 test02 192.168.1.122 4G 20G
RHEL6.8 test03 192.168.1.123 4G 20G
使用wget下载redis-3.2.10.tar.gz

wget http://download.redis.io/releases/redis-3.2.10.tar.gz
需要确保安装有gcc @all nodes:

[root@test01 ~]# cluster_run_all_nodes "hostname; rpm -qa gcc"
test01
gcc-4.4.7-23.el6.x86_64
test02
gcc-4.4.7-23.el6.x86_64
test03
gcc-4.4.7-23.el6.x86_64
注:如果没有gcc,可以使用yum安装;
本文用到的cluster_run_all_nodes和cluster_copy_all_nodes两个命令,功能分别是在集群所有节点运行命令和同步文件。

2.安装编译Redis
软件安装&编译 @all nodes:

cd /u01/soft
tar -zxvf redis-3.2.10.tar.gz
mv redis-3.2.10 /usr/local/redis
cd /usr/local/redis
make PREFIX=/usr/local/redis install

实际我这里软件默认是在/root下,各节点同步软件介质、解压、指定安装路径、编译安装:

[root@test01 ~]# cluster_copy_all_nodes /root/redis-3.2.10.tar.gz /root/
[root@test01 ~]# cluster_run_all_nodes "hostname;tar -zxvf redis-3.2.10.tar.gz"
[root@test01 ~]# cluster_run_all_nodes "hostname;mv redis-3.2.10 /usr/local/redis"
--编译安装这步建议手工@all nodes 执行,因为时间长,输出信息多:
cd /usr/local/redis && make PREFIX=/usr/local/redis install
3.Redis运行环境配置
3.1 相关目录的创建:

--REDIS数据落地位置(数据目录)
//数据目录
mkdir -p /u01/redis/6379/data
//日志目录
mkdir -p /u01/redis/6379/log
--SENTINEL日志存放位置
//哨兵sentinel
mkdir -p /u01/redis/6379/temp

cluster_run_all_nodes "hostname;mkdir -p /u01/redis/6379/data"
cluster_run_all_nodes "hostname;mkdir -p /u01/redis/6379/log"
cluster_run_all_nodes "hostname;mkdir -p /u01/redis/6379/temp"
3.2 redis参数配置(主从主要配置):

//生成redis参数文件及存放位置
mkdir /etc/redis
//redis参数文件命名可采用端口号方式,如下,端口为6379,命名为6379.conf
cp /usr/local/redis/redis.conf /etc/redis/6379.conf

cluster_run_all_nodes "hostname;mkdir /etc/redis"
cluster_run_all_nodes "hostname;cp /usr/local/redis/redis.conf /etc/redis/6379.conf"
具体参数设置及说明:

1)主节点:192.168.1.121
vi /etc/redis/6379.conf

bind 192.168.1.121
protected-mode no
port 6379
daemonize yes
pidfile "/var/run/redis_6379.pid"
dir "/u01/redis/6379/data/"
slave-priority 100
appendonly yes
appendfsync everysec
requirepass Redis123
masterauth Redis123
2)从节点1:192.168.1.122
vi /etc/redis/6379.conf

bind 192.168.1.122
protected-mode no
port 6379
daemonize yes
pidfile "/var/run/redis_6379.pid"
dir "/u01/redis/6379/data/"
slaveof 192.168.1.121 6379
slave-read-only yes
slave-priority 80
appendonly yes
appendfsync everysec
requirepass Redis123
masterauth Redis123
3)从节点2:192.168.1.123
vi /etc/redis/6379.conf

bind 192.168.1.123
protected-mode no
port 6379
daemonize yes
pidfile "/var/run/redis_6379.pid"
dir "/u01/redis/6379/data/"
slaveof 192.168.1.121 6379
slave-read-only yes
slave-priority 60
appendonly yes
appendfsync everysec
requirepass Redis123
masterauth Redis123
3.3 redis系统服务配置:

//拷贝redis服务启动文件到/etc/init.d
cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis
//redis启动文件修改分两部分
vi /etc/init.d/redis
//第一部分

!/bin/sh

chkconfig:2345 80 90 <- 这里需要添加这一行,否则chkconfig --add redis会报错“service redis does not support chkconfig”。

//第二部分
REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server <- 这里修改路径为/usr/local/redis
CLIEXEC=/usr/local/redis/bin/redis-cli <- 这里修改路径为/usr/local/redis

//添加redis服务
chkconfig --add redis

实际我这里操作为:

cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis
--这里按照上面引用文档的提示修改对应两部分内容,然后再分发复制到各节点、添加redis服务开机启动:
[root@test01 local]# cluster_copy_all_nodes /etc/init.d/redis /etc/init.d/redis
cluster_run_all_nodes "hostname;chkconfig --add redis"
cluster_run_all_nodes "hostname;chkconfig --list redis"
配置环境变量,确认redis相关命令可用:

//linux环境变量,针对所有用户
vim /etc/profile
export PATH="$PATH:/usr/local/redis/bin"
//立即生效
source /etc/profile

实际我这里操作为:

cluster_run_all_nodes "hostname;echo 'export PATH="$PATH:/usr/local/redis/bin"' >> /etc/profile'"
重新登陆@all nodes,验证环境变量生效。

3.4 哨兵sentinel配置
每台主机可以配置一个或者多个哨兵,取决与每个服务器上跑多少个redis。
系统参数配置:

vi /etc/sysctl.conf
//定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128
net.core.somaxconn= 1024
//sysctl.conf 生效
sysctl -p
//若临时生效,可使用如下命令:
echo 1024 >/proc/sys/net/core/somaxconn

实际我这里操作为:

[root@test01 6379]# cluster_run_all_nodes "hostname; echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf"
[root@test01 6379]# cluster_run_all_nodes "hostname; sysctl -p"
[root@test01 6379]# cluster_run_all_nodes "hostname; cat /proc/sys/net/core/somaxconn"
哨兵配置文件:

//哨兵配置文件位置
cp /usr/local/redis/sentinel.conf /etc/redis
//创建哨兵日志存放位置,最好是与redis的数据文件存放在一起
mkdir -p /u01/redis/6379/temp/

具体配置(每个节点都一样)
vi /etc/redis/sentinel.conf
protected-mode no
port 26379
dir "/u01/redis/6379/temp/"
daemonize yes
logfile "/u01/redis/6379/temp/sentinel.log"
sentinel monitor redis1 192.168.1.121 6379 2
sentinel down-after-milliseconds redis1 10000
sentinel parallel-syncs redis1 2
sentinel failover-timeout redis1 60000
sentinel auth-pass redis1 hundsun@bbep

实际我这里操作为:

[root@test01 local]# cluster_run_all_nodes "hostname; mkdir -p /u01/redis/6379/temp"
--按上面文档配置sentinel.conf 然后分发复制到@all nodes:
[root@test01 local]# cluster_copy_all_nodes /etc/redis/sentinel.conf /etc/redis/sentinel.conf
4.Redis启动和关闭
4.1 启动&关闭REDIS
启动Redis:

service redis start
//查看redis进程
[root@test01 ~]# ps -ef|grep redis
root 29097 1 0 01:14 ? 00:01:07 /usr/local/redis/bin/redis-server 192.168.1.121:6379
root 32072 31964 0 14:18 pts/0 00:00:00 grep redis
关闭Redis:

redis-cli -h
auth
shutdown

实际操作如下:

[root@test01 ~]# redis-cli -h 192.168.1.121
192.168.1.121:6379> auth Redis123
OK
192.168.1.121:6379> shutdown
not connected> exit
4.2 启动&关闭哨兵

启动哨兵:

redis-sentinel /etc/redis/sentinel.conf

[root@test01 ~]# redis-sentinel /etc/redis/sentinel.conf
[root@test01 ~]# ps -ef|grep sentinel
root 32112 1 0 14:21 ? 00:00:00 redis-sentinel *:26379 [sentinel]
root 32117 31964 0 14:21 pts/0 00:00:00 grep sentinel
关闭哨兵:

//杀进程法
ps -ef|grep sentinel
kill

kill -9 32112
AlfredZhao©版权所有「从Oracle起航,领略精彩的IT技术。」
原文地址https://www.cnblogs.com/jyzhao/p/12760557.html

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
Kubernetes NoSQL Redis
k8s快速部署Redis单机
k8s快速部署Redis单机
|
1月前
|
监控 NoSQL 算法
Redis Sentinel(哨兵)详解
Redis Sentinel(哨兵)详解
|
1月前
|
NoSQL Linux Shell
Redis 的安装与部署(图文)
Redis 的安装与部署(图文)
|
2月前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
3月前
|
Kubernetes NoSQL Redis
【Azure Redis】部署在AKS中的应用连接Redis时候出现Unable to connect to Redis server
【Azure Redis】部署在AKS中的应用连接Redis时候出现Unable to connect to Redis server
【Azure Redis】部署在AKS中的应用连接Redis时候出现Unable to connect to Redis server
|
3月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】遇见Azure Redis不能创建成功的问题:至少一个资源部署操作失败,因为 Microsoft.Cache 资源提供程序未注册。
【Azure Redis 缓存】遇见Azure Redis不能创建成功的问题:至少一个资源部署操作失败,因为 Microsoft.Cache 资源提供程序未注册。
|
3月前
|
存储 人工智能 NoSQL
AI自动化!redis高效部署脚本
AI自动化!redis高效部署脚本
47 0