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上 修改成自己需要的版本 , ...
随机推荐
- day48:django前戏:HTTP协议&自定义web框架
目录 1.HTTP协议 1.HTTP协议简介 2.HTTP协议概述 3.HTTP协议工作原理 4.HTTP协议请求方法 5.HTTP协议状态码 6.URL 7.HTTP请求格式 8.HTTP响应格式 ...
- Redis(三)jedis与锁
1 Jedis 引入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis ...
- 在 plist 中轻松转换两种格式
在 plist 中,有两种常见的格式:.plist 和 .plistx.这两种格式有什么区别?它们之间如何相互转换?本文将为您详细解答. 在 iOS 上架时,需要将 plist 文件上传到苹果的 ...
- Ldap同步过滤问题
https://docs.oracle.com/cd/E26217_01/E35191/html/ldap-filters-attrs-users.html
- VS 查看引用的DLL/Nuget包源码时,无法看到注释
一.问题描述 在下面的截图中,我们发现,源码有添加一段注释. 然后通过Nuget包引用,在VS中用Reshaper反编译时,发现没有注释: 原来,DLL是默认不带注释的.即你生成一个DLL,给另一个项 ...
- Python学习——Juptyer Notebook快捷键的使用
1. 运行当前Cell:Ctrl + Enter 2. 运行当前Cell并在其下方插入一个新的Cell:Alt + Enter 3. 运行当前Cell并选中其下方的Cell:Shift + Enter ...
- selenium文件上传和弹框处理
文件上传 input 标签可以直接使用send_keys(文件地址)上传文件 用法: el = driver.find_element_by_id('上传按钮id') el.send_keys(&qu ...
- 字符串处理------Brute Force与KMP
一,字符串的简单介绍 例:POJ1488 http://poj.org/problem?id=1488 题意:替换文本中的双引号: #include <iostream> #includ ...
- 2021-02-13:字符串str最少添加多少个字符变成回文串?
福哥答案2020-02-13: 假设字符串str是"abcde12344321",在str后添加"edcba"即可变成回文串.需要添加5个字符. 解法:包含最后 ...
- 2021-12-04:公交路线。给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。 例如,路线 routes[0]
2021-12-04:公交路线.给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶. 例如,路线 routes[0] ...