论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
从0到1搭建redis6.0.7
从0到1搭建redis6.0.7
曂沅仴駦
金牌会员
|
2022-11-8 22:33:35
|
显示全部楼层
|
阅读模式
楼主
主题
859
|
帖子
859
|
积分
2577
redis集群搭建
一、安装redis
源码安装:
1.下载源码包:
wget http://download.redis.io/releases/redis-6.0.7.tar.gz
复制代码
2.解压到指定目录下:
tar xf redis-6.0.7.tar.gz -C /usr/local/
复制代码
二、编译安装
下载编译安装Redis的依赖,因为Redis是C语言编写的,所以主要安装C的编译环境
yum install gcc g++ gcc-c++ make -y
复制代码
进入redis文件夹进行编译安装
cd /usr/local/redis-6.0.7
# 开始编译
make -j 2
复制代码
编译安装过程中出现大量错误如下图所示:
这是因为安装6版本的Redis需要5.3以上版本的gcc,而先前YUM安装的gcc默认安装的是4.8.5版本。
# 查看gcc版本
gcc -v
显示gcc版本为4.8.5,需要升级gcc
复制代码
升级gcc到9版本
yum install centos-release-scl -y
yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils -y
复制代码
然后启用gcc 9。我看到有些博客中写到启用gcc9的方法如下
# 临时启用gcc 9
scl enable devtoolset-9 bash
# 长期启用gcc 9
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
#使配置生效
source /etc/profile
这种临时启用的方法发现单独在终端执行没有问题,不过把它写到脚本里执行的时候,执行到这一句就会退出脚本。所以在脚本中我直接使用source /opt/rh/devtoolset-9/enable临时启用gcc 9。
执行完毕后gcc升级到9.3.1版本
复制代码
升级好gcc后重新编译
# 清除之前编译的可执行文件及配置文件。
make clean
make -j 2
make install
复制代码
三、启动Redis
在redis的src目录下执行./redis-server,出现如下界面说明Redis算是装好了。不过有几个警告需要处理一下,解决的方法在警告信息中已经给出了。
#启动redis服务
[root@mysql_master src]# ./redis-server
#解决警告信息
# 第一个警告的解决方法
echo net.core.somaxconn=511 >> /etc/sysctl.conf
# 第二个警告的解决方法
echo vm.overcommit_memory=1 >> /etc/sysctl.conf
# 使/etc/sysctl.conf生效
sysctl -p
# 第三个警告的解决方法
echo never > /sys/kernel/mm/transparent_hugepage/enabled
#之后再重新执行./redis-server,可以看到,警告信息消失了。Redis服务顺利启动。
复制代码
此时Redis服务在前台执行,修改Redis的配置文件,让Redis服务可以在后台运行
vim /usr/local/redis-6.0.7/redis.conf
将daemonize no改为daemonize yes,然后使用配置文件重新启动redis
关闭加密保护,修改数据存储路径.......
#redis已成功在后台启动
[root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
#测试redis是否正常工作
[root@mysql_master redis-6.0.7]# ./src/redis-cli
[root@mysql_master src]# ./redis-cli
127.0.0.1:6379> ping
PONG
复制代码
后台启动:
四、配置主从
启动主结点的redis服务
[root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
复制代码
修改两台从结点的redis.conf配置文件,指定主节点ip和端口
注意:redis6版本和redis4版本配置主从的名称不一样
replicaof 192.168.232.11 6379 主ip+主端口
修改完后启动两台从的redis,读取redis.conf才能生效
[root@mysql_slave1 redis-6.0.7]# ./src/redis-server redis.conf
复制代码
五、redis-sentinel---哨兵模式
部署Sentinel:
#查看sentinel.conf里面配置信息
[root@mysql_master redis-6.0.7]# grep -Ev "^$|#" sentinel.conf
三台都要配置,具体内容如下所示,可以删完然后复制上去
###############################################################
port 26379
daemonize yes #后台启动
pidfile /var/run/redis-sentinel.pid
logfile "/var/log/redis/sentinel.log"
sentinel announce-ip 0.0.0.0
dir /tmp
sentinel monitor mymaster 192.168.232.11 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000
sentinel deny-scripts-reconfig yes
##############################################################
注意:一定要开启后台启动,否则Ctrl+c退出,sentinel会自动关闭
复制代码
启动,三台都要启动
读取sentinel配置文件,三台都一样启动
[root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf
查看进程是否启动:
[root@mysql_master redis-6.0.7]# ps -ef | grep redis-sentinel
复制代码
sentinel操作
[root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf
[root@mysql_master redis-6.0.7]# ./src/redis-cli -p 26379
127.0.0.1:26379> sentinel master mymaster
1) "name"
2) "mymaster"
3) "ip"
4) "192.168.232.11"
5) "port"
6) "6379"
7) "runid"
8) "4e5793b30c65c08c1f784a045dbb81f8a327414f"
9) "flags"
10) "master"
127.0.0.1:26379> sentinel slaves mymaster
1) 1) "name"
2) "192.168.232.12:6379"
3) "ip"
4) "192.168.232.12"
5) "port"
6) "6379"
7) "runid"
8) "7172974215efed734fd000bcd9fcc340dd8796ae"
9) "flags"
10) "slave"
11) "link-pending-commands"
2) 1) "name"
2) "192.168.232.20:6379"
3) "ip"
4) "192.168.232.20"
5) "port"
6) "6379"
7) "runid"
8) "9a4f10acbd6c339df8930a1478455ecaffc8c5ca"
9) "flags"
10) "slave"
复制代码
六、redis cluster集群搭建
环境准备
1.准备三机器,关闭防火墙和selinux
2.制作解析并相互做解析,即三台互相ping通,主机名可改可不改。
注:规划架构两种方案,一种是单机多实例,这里我们采用多机器部署:
三台机器,每台机器上面两个redis实例,一个master一个slave,第一列做主库,第二
列做备库
#记得选出控制节点
redis-cluster01 192.168.232.11 7000、7001
redis-cluster02 192.168.232.12 7002、7003
redis-cluster03 192.168.232.20 7004、7005
复制代码
安装redis 并配置redis-cluster
1、redis安装 ,注意3台机器都需要安装redis 服务
创建实例目录
#先装一个工具tree
yum install tree
#创建节点目录:按照规划在每台redis节点的安装目录中创建对应的目录(以端口号命名)
#具体创建过程不再描述
查看目录结构(六台)
[root@mysql_master src]# cd /redis
[root@mysql_master redis]# tree
.
└── cluster
├── 7000
│ ├── conf
│ │ ├── nodes.conf
│ │ └── redis.conf
│ ├── data
│ │ ├── appendonly.aof
│ │ └── dump.rdb
│ ├── log
│ │ └── redis.log
│ └── redis.pid
└── 7001
├── conf
│ ├── nodes.conf
│ └── redis.conf
├── data
│ ├── appendonly.aof
│ └── dump.rdb
├── log
│ └── redis.log
└── redis.pid
#其他五台除了名字不一样,配置文件不一样,其他都一样
复制代码
配置官方配置文件,去掉#开头的和空格行
#cat redis.conf | grep -v ^# | grep -v ^$
复制代码
修改配置文件
[root@mysql_master redis]# cd cluster/7000/conf
[root@mysql_master conf]# cat redis.conf
bind 0.0.0.0
protected-mode no
port 7000
daemonize yes
dir /redis/cluster/7000/data
cluster-enabled yes
cluster-config-file /redis/cluster/7000/conf/nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /redis/cluster/7000/redis.pid
logfile /redis/cluster/7000/log/redis.log
#其他五台修改一下目录
复制代码
创建集群
注意:创建集群:在其中一个节点操作就可以
redis节点搭建起来后,需要完成redis cluster集群搭建,搭建集群过程中,需要保证6个redis实例都是运行状态
Redis是根据IP和Port的顺序,确定master和slave的,所以要排好序,再执行。
参数:
--cluster-replicas 1:表示为集群中的每个主节点创建一个从节点.书写流程:主节点
ip+port 对应一个从节点ip+port(正常是前面三个节点为主节点,后面的为从节点)
#先把六台redis启动起来再启动集群
[root@mysql_master src]# ./redis-server /redis/cluster/7000/conf/redis.conf
[root@mysql_master src]# ./redis-server /redis/cluster/7001/conf/redis.conf
[root@mysql_master src]# ./redis-cli --cluster create --cluster-replicas 1 192.168.232.11:7000 192.168.232.11:7001 192.168.232.12:7002 192.168.232.12:7003 192.168.232.20:7004 192.168.232.20:7005
....................
输入yes,等待集群创建
出现以下信息证明创建成功
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
复制代码
查看是否切换成集群模式
[root@mysql_master conf]# ps -ef | grep redis
复制代码
七、redis cluster 向客户端扩展
转载请注明出处,未完待续...
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
曂沅仴駦
金牌会员
这个人很懒什么都没写!
楼主热帖
教你如何解决T+0的问题
ICA:1靶场
Excel文件校验
国内IT硬件如何铸就新辉煌? ...
JS中的Set与Map
架构设计基础设施保障IaaS之计算篇 ...
监控和可观测性的异同究竟是什么? ...
实时展示用户上传的头像
必知必会的设计原则——迪米特原则 ...
如何筑造数据安全边界
标签云
挺好的
服务器
快速回复
返回顶部
返回列表