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 向客户端扩展

.............未完待续.....................

从0到1搭建redis6.0.7的更多相关文章

  1. 从0到1搭建redis6.0.7续更~

    "心有所向,日复一日,必有精进" 前言: 想必大家看完我之前写的搭建redis服务器,大家都已经把redis搭建起来了吧如果没有搭建起来的小可爱请移步这里哦从0到1搭建redis6 ...

  2. Docker:docker搭建redis6.0.8集群

    下载redis镜像 #拉取镜像 docker pull redis:6.0.8 查看版本 #查看版本 docker inspect redis 生成redis.conf配置文件 #在 /home/re ...

  3. centos8平台安装redis6.0.1

    一,redis的官网: https://redis.io/ redis6于5月3日正式发布,它的新增功能: acl 多线程io cluster proxy resp3协议 本文演示redis6.0.1 ...

  4. Redis6.0.6集群服务搭建

    实现目标 一台主机上搭建3主3从高可用redis集群 环境 Linux :CentOS7 Redis : 6.0.6 准备工作 1.查看是否有安装wget命令,如果没有安装使用yum命令安装wgt命令 ...

  5. Redis6.0.9主从搭建

    所谓主从,大家都知道主是写数据,而从是进行数据的拷贝. 1:配置 主节点 127.0.0.1 6379 从节点 127.0.0.1 6378 先将单机版的配置文件赋值两份出来,原先的配置中主要改动有: ...

  6. linux安装redis-6.0.1单机和集群

    redis作为一个直接操作内存的key-value存储系统,也是一个支持数据持久化的Nosql数据库,具有非常快速的读写速度,可用于数据缓存.消息队列等. 一.单机版安装 1.下载redis 进入re ...

  7. centos8平台redis cluster集群搭建(redis5.0.7)

    一,规划 redis cluster 1,cluster采用六台redis,3主3从 redis1    : ip: 172.17.0.2 redis2    : ip: 172.17.0.3 red ...

  8. sorl6.0+jetty+mysql搭建solr服务

    1.下载solr 官网:http://lucene.apache.org/solr/ 2.目录结构如下 3.启动solr(默认使用jetty部署) 在path路径下将 bin文件夹对应的目录加入,然后 ...

  9. 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件

    转自:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...

随机推荐

  1. Hive存储格式之ORC File详解,什么是ORC File

    目录 概述 文件存储结构 Stripe Index Data Row Data Stripe Footer 两个补充名词 Row Group Stream File Footer 条纹信息 列统计 元 ...

  2. 基于Anacoda搭建虚拟环境cudnn6.0+cuda8.0+python3.6+tensorflow-gpu1.4.0

    !一定要查准cudnn,cuda,tensorflow-gpu对应的版本号再进行安装,且本文一切安装均在虚拟环境中完成. 下文以笔者自己电脑为例,展开安装教程阐述(省略anaconda安装教程): 1 ...

  3. BZOJ4212 神牛的养成计划 (字典树,bitset)

    题面 Description Hzwer成功培育出神牛细胞,可最终培育出的生物体却让他大失所望- 后来,他从某同校女神 牛处知道,原来他培育的细胞发生了基因突变,原先决定神牛特征的基因序列都被破坏了, ...

  4. NSK DD马达 直驱电机 RS232通信连接

    NSK DD马达 通信连接 通信测试平台 驱动器:NSK EDC系列 电机:NSK PS1006KN系列 电机线:UVW对应红白黑. 电源线:Main和Ctrl电路220V交流电供电即可. 测试软件: ...

  5. 项目实践2:使用html和CSS实现图片轮播

    好家伙, 使用html和CSS实现简单的图片切换(轮播图) 来自:(7条消息) 使用CSS实现简单的图片切换(轮播图)_LexingtonCV16的博客-CSDN博客_css实现图片切换 1.首先创建 ...

  6. 存储更弹性,详解 Fluid “ECI 环境数据访问” 新功能

    近期,Fluid 支持了阿里云 ECI 应用,并将 JuiceFS Runtime Controller 设置为默认安装:JuiceFS 也就此功能与 Fluid 完成了集成和测试工作. 用户可以在 ...

  7. linux中awk命令详解(最全面秒懂)

    一:linux中awk命令 1.awk命令简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinber ...

  8. 如何高效解决 C++内存问题,Apache Doris 实践之路|技术解析

    导读:Apache Doris 使用 C++ 语言实现了执行引擎,C++ 开发过程中,影响开发效率的一个重要因素是指针的使用,包括非法访问.泄露.强制类型转换等.本文将会通过对 Sanitizer 和 ...

  9. Python数据科学手册-Pandas:数值运算方法

    Numpy 的基本能力之一是快速对每个元素进行运算 Pandas 继承了Numpy的功能,也实现了一些高效技巧. 对于1元运算,(函数,三角函数)保留索引和列标签 对于2元运算,(加法,乘法),Pan ...

  10. Logstash:Grok filter 入门

    转载自: https://blog.csdn.net/UbuntuTouch/article/details/105922198 Logstash模式:https://www.elastic.co/g ...