下载安装包

# 进入软件下载目录
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集群操作步骤的更多相关文章

  1. 在CentOS7中搭建Zookeeper集群

    前几天装了CentOS7.并安装了一些基本的工具,现在我手上有三台机器:分别是master,slave1,slave2. 今天我将搭建zookeeper,使用的版本是zookeeper-3.4.11. ...

  2. 实验室中搭建Spark集群和PyCUDA开发环境

    1.安装CUDA 1.1安装前工作 1.1.1选取实验器材 实验中的每台计算机均装有双系统.选择其中一台计算机作为master节点,配置有GeForce GTX 650显卡,拥有384个CUDA核心. ...

  3. linux系统centOS7下搭建redis集群中ruby版本过低问题的解决方法

    问题描述: 在Centos7中,通过yum安装ruby的版本是2.0.0,但是如果有些应用需要高版本的ruby环境,比如2.2,2.3,2.4... 那就有点麻烦了,譬如:我准备使用redis官方给的 ...

  4. docker容器中搭建kafka集群环境

    Kafka集群管理.状态保存是通过zookeeper实现,所以先要搭建zookeeper集群 zookeeper集群搭建 一.软件环境: zookeeper集群需要超过半数的的node存活才能对外服务 ...

  5. 从零开始学习docker之在docker中搭建redis(集群)

    docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...

  6. centos7 快速搭建redis集群环境

    本文主要是记录一下快速搭建redis集群环境的方式. 环境简介:centos 7  + redis-3.2.4 本次用两个服务6个节点来搭建:192.168.116.120  和  192.168.1 ...

  7. CentOs7.3 搭建 SolrCloud 集群服务

    一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方式.C ...

  8. Docker中搭建zookeeper集群

    1.获取官方镜像 从dockerhub获取官方的zookeeper镜像: docker pull zookeeper 2.了解镜像内容 拉取完镜像后,通过 docker inspect zookeep ...

  9. Centos7上搭建activemq集群和zookeeper集群

    Zookeeper集群的搭建 1.环境准备 Zookeeper版本:3.4.10. 三台服务器: IP 端口 通信端口 10.233.17.6 2181 2888,3888 10.233.17.7 2 ...

  10. centos7上搭建zookeeper集群

    1.下载zookeeper http://www.apache.org/dyn/closer.cgi/zookeeper/  可以登录这个网站下载,然后上传到 centos上 修改成自己需要的版本 , ...

随机推荐

  1. DevOps infra | 互联网、软件公司基础设施建设(基建)哪家强?

    国内公司普遍不注重基础设施建设,这也是可以理解的.吃饭都吃不饱,就别提什么荤素搭配,两菜一汤了.但也不能全说是这样,还是有很多公司投入大量的人力物力去做好公司的基建,比如很多阿里和美团的小伙伴对公司的 ...

  2. YII2.0框架分页

    这篇文章主要介绍了Yii分页用法,以实例形式详细分析了比较常见的几种分页方法及其应用特点,非常具有实用价值,需要的朋友可以参考下: 在这里我主要联查的 book 表和 book_press 两张表进行 ...

  3. Semantic Kernel 入门系列:📅 Planner 计划管理

    Semantic Kernel 的一个核心能力就是实现"目标导向"的AI应用. 目标导向 "目标导向"听起来是一个比较高大的词,但是却是实际生活中我们处理问题的 ...

  4. 基于Canal实现MySQL 8.0 数据库数据同步

    前言 服务器说明 主机名称 操作系统 说明 192.168.11.82 Ubuntu 22.04 主库所在服务器 192.168.11.28 Oracle Linux Server 8.7 从库所在服 ...

  5. Cesium加载ArcGIS Server4490且orgin -400 400的切片服务

    Cesium在使用加载Cesium.ArcGisMapServerImageryProvider加载切片服务时,默认只支持wgs84的4326坐标系,不支持CGCS2000的4490坐标系. 如果是A ...

  6. 2023-05-02:如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。 给你一个正整数 n ,请你返回区间 [1, n] 之间特殊整数的数目。 输入:n = 20。 输出:19。

    2023-05-02:如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 . 给你一个正整数 n ,请你返回区间 [1, n] 之间特殊整数的数目. 输入:n = 20. 输出:19. ...

  7. Github 自动化部署

    github action 自动化部署 一.创建github 账户 官方地址 点击进入 注册/登录 二.在项目目录下创建文件 .github\workflows固定不变 develop.yml文件名自 ...

  8. 18年CCCC赛后总结

    C4赛后总结: 我正式入坑以来,大约5个月,这也是我第一次出去参与这样正式的比赛,其实比赛结果并不尽人意,但有很多还是需要记录下来的,通过这次比赛的确获得了很多的比赛经验: 一赛前: 其实赛前的状态, ...

  9. vue全家桶进阶之路24:Mock

    Mock 是一个 JavaScript 库,用于生成随机数据或模拟 HTTP 请求响应,用于前端开发中的单元测试.功能测试.集成测试等场景. Mock 可以生成各种类型的数据,包括字符串.数字.布尔值 ...

  10. AHB2APB bridge IP简介

    背景介绍 AMBA总线规范是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度.低功耗等特点.AMBA规范中包括了AHB系统总线和APB外设总线. AHB主要用于高性能模 ...