从0到1搭建redis6.0.7

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 

编译安装过程中出现大量错误如下图所示:
从0到1搭建redis6.0.7
这是因为安装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版本 

从0到1搭建redis6.0.7
升级好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 

后台启动:
从0到1搭建redis6.0.7

四、配置主从

启动主结点的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+主端口
从0到1搭建redis6.0.7
修改完后启动两台从的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会自动关闭 

从0到1搭建redis6.0.7
启动,三台都要启动

读取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 

从0到1搭建redis6.0.7
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. 

从0到1搭建redis6.0.7
查看是否切换成集群模式

[root@mysql_master conf]# ps -ef | grep redis 

从0到1搭建redis6.0.7

七、redis cluster 向客户端扩展

转载请注明出处,未完待续...

发表评论

相关文章