Centos7中搭建Redis6集群操作步骤
下载安装包
# 进入软件下载目录
cd /root/software
# 下载安装包
wget https://download.redis.io/releases/redis-6.2.0.tar.gz
# 确认下载安装包
ll
解压安装装包
# 进入安装目录
cd /root/program
# 创建安装软件目录
mkdir redis
cd redis
# 确认当前目录
pwd
# /root/program/redis
# 复制安装包
cp /root/software/redis-6.2.0.tar.gz .
# 解压目录
tar -xvf redis-6.2.0.tar.gz
安装依赖
# 确认gcc是否已安装及版本
gcc -v
# 安装gcc依赖
yum install gcc
# CentOS7默认安装的是4.8.5,而redis6.0只支持5.3以上版本,这里将gcc升级到9
yum install centos-release-scl
yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
# 永久切换gcc版本
echo “source /opt/rh/devtoolset-9/enable” >> /etc/profile
# 临时切换gcc版本
scl enable devtoolset-9 bash
# 查看gcc版本
gcc -v
安装
# 进入解压后目录
cd /root/program/redis/redis-6.2.0
# 编译
make MALLOC=libc
# 安装
make install PREFIX=/usr/local/redis
# 确认是否安装成功
cd /usr/local/redis/bin
# 如果出现下面的结果则证明已安装成功
[root@localhost bin]# ll
total 8424
-rwxr-xr-x. 1 root root 963456 Mar 1 10:00 redis-benchmark
lrwxrwxrwx. 1 root root 12 Mar 1 10:00 redis-check-aof -> redis-server
lrwxrwxrwx. 1 root root 12 Mar 1 10:00 redis-check-rdb -> redis-server
-rwxr-xr-x. 1 root root 1202888 Mar 1 10:00 redis-cli
lrwxrwxrwx. 1 root root 12 Mar 1 10:00 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 6452272 Mar 1 10:00 redis-server
# 配置全局可以使用Redis命令
cp redis-cli /usr/bin/redis-cli
cp redis-server /usr/bin/redis-server
# 确认是否可以使用全局变量
redis-cli
创建目录
# 创建对应数据文件目录
cd /root/
mkdir data
cd data/
mkdir redis
cd redis/
# 确认当前所在的操作目录
pwd
# /root/data/redis
# 创建相应的文件目录
mkdir run log data conf
# 创建数据对应rdb文件每个端口对应目录
cd data
mkdir 7000 7001 7002 7003 7004 7005
设置配置文件
# 进入安装包目录
cd /root/program/redis/redis-6.2.0
# 复制配置文件到目标目录
cp redis.conf /root/data/redis/conf/redis_7000.conf
# 进入配置文件对应目录
cd /root/data/redis/conf
# 配置配置文件内容,修改文件内容如下:
vim redis_7000.conf
# 一.允许远程访问
#1. 注释掉下面代码,或者改为 bind 0.0.0.0,第75行
bind 0.0.0.0
#2. 关闭保护模式,第94行
protected-mode no
# 二.通用配置
#1. 开启守护进程,第247行
daemonize yes
#2. 配置密码(必须设置相同的密码,不设masterauth的话宕机了不能自动恢复),第879行
requirepass tdfdsfnkinki.net
#集群节点间的访问密码,第474行
masterauth tdfdsfnkinki.net
# 持久化类型
appendonly yes
appendfilename "appendonly-7000.aof"
# 三.集群配置
port 7000 #配置端口,第98行
cluster-enabled yes #开启集群,第1363行
cluster-config-file nodes-7000.conf #集群节点配置文件,第1371行
pidfile /root/data/redis/run/redis_7000.pid #进程文件ID对应文件,第279行
cluster-node-timeout 5000 #集群节点超时时间,超过这个时间,集群认为该节点故障,如果是主节点,会进行相应的主从切换,第1377行
# 四.配置对应目录
logfile /root/data/redis/log/redis_7000.log #日志文件,第292行
dir /root/data/redis/data/7000 #目录要提前创建好,第444行
# 将当前7000的配置文件复制为其他端口的配置文件,7001、7002、7003、7004、7005
# 复制配置文件
cp redis_7000.conf redis_7001.conf
cp redis_7000.conf redis_7002.conf
cp redis_7000.conf redis_7003.conf
cp redis_7000.conf redis_7004.conf
cp redis_7000.conf redis_7005.conf
# 修改与端口号有关的配置,对应端口号与当前端口号一致,在所有的配置文件中均需要进行修改配置,具体修改内容如下所示:
# 二.通用配置
appendfilename "appendonly-7000.aof"
# 三.集群配置
port 7001 #配置端口,第98行
cluster-config-file nodes-7001.conf #集群节点配置文件,第1371行
pidfile /root/data/redis/run/redis_7001.pid #进程文件ID对应文件,第279行
# 四.配置对应目录
logfile /root/data/redis/log/redis_7001.log #日志文件,第292行
dir /root/data/redis/data/7001 #目录要提前创建好,第444行
创建启动服务
下面以7000端口为例创建系统服务,其余端口模仿此配置进行修改,需修改对应的端口号数据。
# 创建服务文件
vim /etc/systemd/system/redis-7000.service
# 文件内容如下:
[Unit]
Description=The redis-cluster-server-7000 Process Manager
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /root/data/program/redis/data/conf/redis_7000.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 重新加载
systemctl daemon-reload
# 启动服务
systemctl start redis-7000
# 查看服务状态
systemctl status redis-7000
# 设置开机启动
systemctl enable redis-7000
制作启动文件
# 系统对应的服务即可
systemctl start redis-7000
systemctl start redis-7001
systemctl start redis-7002
systemctl start redis-7003
systemctl start redis-7004
systemctl start redis-7005
启动并验证Redis
# 查看启动状态
ps aux | grep redis
开放防火墙端口
# 查看防火墙状态
systemctl status firewalld
# 查看已经开放的端口
firewall-cmd --list-ports
# 开放端口
firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=7005/tcp --permanent
# 开放通信端口
firewall-cmd --zone=public --add-port=17000/tcp --permanent
firewall-cmd --zone=public --add-port=17001/tcp --permanent
firewall-cmd --zone=public --add-port=17002/tcp --permanent
firewall-cmd --zone=public --add-port=17003/tcp --permanent
firewall-cmd --zone=public --add-port=17004/tcp --permanent
firewall-cmd --zone=public --add-port=17005/tcp --permanent
# 重新加载配置
firewall-cmd --reload
# 查看端口开放状态
firewall-cmd --list-ports
创建集群
用以下命令创建集群,--cluster-replicas 1 参数表示希望每个主服务器都有一个从服务器,这里则代表3主3从,前3个代表3个master,后3个代表3个slave。
通过该方式创建的带有从节点的机器不能够自己手动指定主节点,Redis集群会尽量把主从服务器分配在不同机器上。
# 进入启动脚本目录
cd /root/data/redis
# 启动集群
./cluster_start.sh
# 创建集群
redis-cli -a tdfdsfnkinki.net --cluster create 192.168.110.129:7000 192.168.110.129:7001 192.168.110.129:7002 192.168.110.129:7003 192.168.110.129:7004 192.168.110.129:7005 --cluster-replicas 1
# 确认对应主从节点配置信息,没有问题后输入yes即可,输出的信息如下所示:
[root@localhost redis]# redis-cli -a ttknoa@cnki.net --cluster create 192.168.110.129:7000 192.168.110.129:7001 192.168.110.129:7002 192.168.110.129:7003 192.168.110.129:7004 192.168.110.129:7005 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.110.129:7004 to 192.168.110.129:7000
Adding replica 192.168.110.129:7005 to 192.168.110.129:7001
Adding replica 192.168.110.129:7003 to 192.168.110.129:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: a91202256714e5c1988e651e0561f36fa3e893af 192.168.110.129:7000
slots:[0-5460] (5461 slots) master
M: 9e9a9dd3256aef33108c33955237b593df64448c 192.168.110.129:7001
slots:[5461-10922] (5462 slots) master
M: e6c4b9ead90526d54713f5471f4bdb763a32156f 192.168.110.129:7002
slots:[10923-16383] (5461 slots) master
S: 1c1a7082395374d3364f856317afaaec01251c9a 192.168.110.129:7003
replicates e6c4b9ead90526d54713f5471f4bdb763a32156f
S: 81880bd5afd523932df5f201141fbca2c422d267 192.168.110.129:7004
replicates a91202256714e5c1988e651e0561f36fa3e893af
S: c7f24bdc1d7648f1841d3a958d108279bd552025 192.168.110.129:7005
replicates 9e9a9dd3256aef33108c33955237b593df64448c
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 192.168.110.129:7000)
M: a91202256714e5c1988e651e0561f36fa3e893af 192.168.110.129:7000
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: e6c4b9ead90526d54713f5471f4bdb763a32156f 192.168.110.129:7002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: c7f24bdc1d7648f1841d3a958d108279bd552025 192.168.110.129:7005
slots: (0 slots) slave
replicates 9e9a9dd3256aef33108c33955237b593df64448c
M: 9e9a9dd3256aef33108c33955237b593df64448c 192.168.110.129:7001
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 1c1a7082395374d3364f856317afaaec01251c9a 192.168.110.129:7003
slots: (0 slots) slave
replicates e6c4b9ead90526d54713f5471f4bdb763a32156f
S: 81880bd5afd523932df5f201141fbca2c422d267 192.168.110.129:7004
slots: (0 slots) slave
replicates a91202256714e5c1988e651e0561f36fa3e893af
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
集群其他操作
# 连接到集群上(任何一个节点即可),进行集群信息的查看
redis-cli -c -h 192.168.110.129 -p 7000 -a tdfdsfnki.net
# 查看节点信息
cluster nodes
# 查看集群信息
cluster info
# 查看槽位信息
cluster slots
# 计算某个key的槽位
cluster keyslot xxx
# 关闭redis
./redis-cli shutdown
#直接结束线程
kill -p pid
注意
这里是在一台服务器部署的,所以各个redis实例之间是可以相互通信的,如果是多服务器部署cluster,除了保证redis基础端口开放,还要保证cluster的通信端口开放,即 通信端口=基础端口号 + 10000 。
主节点上有槽位,删除前必须先把槽位迁移。
新加进去的节点默认都为master主节点。
当被删除掉的节点重新起来之后不能自动加入集群,但其和主的复制还是正常的,也可以通过该节点看到集群信息(通过其他正常节点已经看不到该被del-node节点的信息)。
如果想要再次加入集群,则需要先在该节点执行cluster reset,再用add-node进行添加,进行增量同步复制。
Centos7中搭建Redis6集群操作步骤的更多相关文章
- 在CentOS7中搭建Zookeeper集群
前几天装了CentOS7.并安装了一些基本的工具,现在我手上有三台机器:分别是master,slave1,slave2. 今天我将搭建zookeeper,使用的版本是zookeeper-3.4.11. ...
- 实验室中搭建Spark集群和PyCUDA开发环境
1.安装CUDA 1.1安装前工作 1.1.1选取实验器材 实验中的每台计算机均装有双系统.选择其中一台计算机作为master节点,配置有GeForce GTX 650显卡,拥有384个CUDA核心. ...
- linux系统centOS7下搭建redis集群中ruby版本过低问题的解决方法
问题描述: 在Centos7中,通过yum安装ruby的版本是2.0.0,但是如果有些应用需要高版本的ruby环境,比如2.2,2.3,2.4... 那就有点麻烦了,譬如:我准备使用redis官方给的 ...
- docker容器中搭建kafka集群环境
Kafka集群管理.状态保存是通过zookeeper实现,所以先要搭建zookeeper集群 zookeeper集群搭建 一.软件环境: zookeeper集群需要超过半数的的node存活才能对外服务 ...
- 从零开始学习docker之在docker中搭建redis(集群)
docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...
- centos7 快速搭建redis集群环境
本文主要是记录一下快速搭建redis集群环境的方式. 环境简介:centos 7 + redis-3.2.4 本次用两个服务6个节点来搭建:192.168.116.120 和 192.168.1 ...
- CentOs7.3 搭建 SolrCloud 集群服务
一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方式.C ...
- Docker中搭建zookeeper集群
1.获取官方镜像 从dockerhub获取官方的zookeeper镜像: docker pull zookeeper 2.了解镜像内容 拉取完镜像后,通过 docker inspect zookeep ...
- Centos7上搭建activemq集群和zookeeper集群
Zookeeper集群的搭建 1.环境准备 Zookeeper版本:3.4.10. 三台服务器: IP 端口 通信端口 10.233.17.6 2181 2888,3888 10.233.17.7 2 ...
- centos7上搭建zookeeper集群
1.下载zookeeper http://www.apache.org/dyn/closer.cgi/zookeeper/ 可以登录这个网站下载,然后上传到 centos上 修改成自己需要的版本 , ...
随机推荐
- day11:return关键字&全局/局部变量&函数名的使用&函数的嵌套&nonlocal关键字&locals/globals
关键字:return 自定义函数的返回值,return可以把值返回到函数的调用处 1.return+六大标准数据类型,还有类和对象,函数 如果不定义return,默认返回的 ...
- 基于sanic和爬虫创建的代理ip池
搭建免费的代理ip池 需要解决的问题: 使用什么方式存储ip 文件存储 缺点: 打开文件修改文件操作较麻烦 mysql 缺点: 查询速度较慢 mongodb 缺点: 查询速度较慢. 没有查重功能 re ...
- 微软出品的UI自动化测试工具Playwright(三)
微软出品的UI自动化测试工具Playwright(三) 网址 说明 https://playwright.dev/ 官网首页 https://playwright.dev/python/docs/in ...
- win10环境下 VMware Workstation Pro 安装centos7无法上网
一.安装centos7 网上类似的教程太多了,我就不一一写了,提供两个网址,先按照教程安装 VMware Workstation Pro ,秘钥在第二个链接里面(亲测可用), 安装完VMware在根据 ...
- Java双向链表实现队列
将双向链表做简单的改造,即可实现一个FIFO(First Input First Out)队列, 该队列只在头节点出队,尾节点入队. 一般来说定义节点类只需一个后驱节点next即可. 这里保留pre节 ...
- 6个优化策略,助你降低K8S成本
Kubernetes 早已成为容器编排引擎的事实标准,而随着 Kubernetes 环境的复杂性持续增长,成本也在不断攀升.CNCF 发布的调查报告<Kubernetes 的 FinOps> ...
- [人脸活体检测] 论文:Face Anti-Spoofing Using Patch and Depth-based CNNs
Face Anti-Spoofing Using Patch and Depth-based CNNs 这篇文章是人脸防伪领域比较容易理解,适合入手的一篇,主要运用到了两个CNN网络,根据输入图像的细 ...
- 数据结构(DataStructure)-01
数据结构-01 **数据结构与算法** **算法概述** **时间复杂度概述** **时间复杂度 - 计算规则** **数据结构概述** **抽象数据类型** **线性表 - 顺序表** **线性表 ...
- 2022-09-12:以下go语言代码输出什么?A:true;B:false;C:无法编译;D:运行时 panic。 package main func main() { var x chan<-
2022-09-12:以下go语言代码输出什么?A:true:B:false:C:无法编译:D:运行时 panic. package main func main() { var x chan< ...
- uni-app 选择原因
开发者.案例数量更多跨平台能力及扩展灵活性更强性能体验优秀周边生态丰富学习成本低开发成本低