Linux下分布式redis集群方案之codis集群的搭建部署

Linux下分布式redis集群方案之codis集群的搭建部署

对于Redis集群方案有好多种,基本常用的就是twemproxy,codis,redis cluster这三种解决方案。

codis介绍

  • Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。
  • Codis是一套用go语言编写的,为了应对高并发环境下的redis集群软件,原理是对一个redis key操作前,先把这个key通过crc32算法,分配到不同redis的某一个slot上,实现并发读写功能.而且能通过zookeeper调用redis-sentinel来实现故障切换功能.现在最新版本是3.2.1,依托于redis3.2.9开发出来。

Codis的架构

  • go:codis依赖语言包
  • codis:codis集群套件,里面含有redis相关程序和集群专用程序。
  • 主要功能程序解析:
    1.codis-server:属于redis-server优化版,基于 redis-3.2.9 分支开发。增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。
    2.codis-proxy:客户端连接的 Redis 代理服务,实现了 Redis 协议。 除部分命令不支持以外(例如:keys *,flush ),表现的和原生的 Redis 没有区别(就像 Twemproxy)。 对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例; 不同 codis-proxy 之间由 codis-dashboard 保证状态同步。
    3.codis-dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy
    的状态的一致性。 对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个; 所有对集群的修改都必须通过
    codis-dashboard 完成。
    4.Codis-fe:集群web管理界面。 多个集群实例共享可以共享同一个前端展示页面; 通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。
    5.redis-sentinel:可以实现对Redis的监控、通知、自动故障转移。如果Master不能工作,则会自动启动故障转移进程,将其中的一个Slave提升为Master,其他的Slave重新设置新的Master服务。Sentinel的配置由
    codis-dashboard和zookeeper一起控制,不需要手工填写。
  • jdk:zookeeper依赖语言包
  • zookeeper:用于存放数据配置路由表。zookeeper简称zk。
  • 在生产环境中,zk部署越多,其可靠性越高。由于zk集群是以宕机个数过半才会让整个集群宕机,因此,奇数个zk更佳。

codis集群的搭建部署

实验环境(rhel7.6版本)

真机:
scp go1.8.linux-amd64.tar.gz codis-release3.2.zip server1:/root/
##拷贝go的压缩包并且解压到指定目录下

安装go环境

server1:
cd
ls
tar zxf go1.8.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
ls
cd go/
ls
##拷贝go的压缩包并且解压到指定目录下

在这里插入图片描述

配置环境变量

vim /etc/profile
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/user/go
source /etc/profile
go version
ls

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置编译环境

Codis 源代码编译

$GOPATH 是本机所有第三方库 go 项目所在目录,Codis 仅是其中之一

cd 
ls
mkdir -p $GOPATH/src/github.com/CodisLabs
unzip codis-release3.2.zip
cd codis-release3.2
ls
cd ..
yum install -y git gcc make g++ gcc-c++ automake openssl-devel zlib-*
##安装编译需要的依赖性工具
mv codis-release3.2 $GOPATH/src/github.com/CodisLabs/codis
cd $GOPATH/src/github.com/CodisLabs/codis
ls
make
ls
cd bin/
ls
ll
pwd
cd ..
cat bin/version

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

codis源码编译完成之后,组件的启动脚本在 G O P A T H / s r c / g i t h u b . c o m / C o d i s L a b s / c o d i s / a d m i n 目 录 下 配 置 文 件 在 GOPATH/src/github.com/CodisLabs/codis/admin目录下 配置文件在 GOPATH/src/github.com/CodisLabs/codis/adminGOPATH/src/github.com/CodisLabs/codis/config目录下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

快速启动codis的各个组件

  • 启动codis-dashboard组件
ls
cd admin/
ls
./codis-dashboard-admin.sh start
ls
cd log/
ls
vim codis-dashboard.out
vim codis-dashboard.log.2021-04-15

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动codis-proxy组件

cd ..
ls
./admin/codis-proxy-admin.sh  start
cd log/
ls
vim codis-proxy.log.2021-04-15

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动codis-server组件

cd ..
ls
./admin/codis-server-admin.sh start
cd /tmp/
ls
vim redis_6379.log

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动codis-fe组件

cd
cd $GOPATH/src/github.com/CodisLabs/codis
ls
./admin/codis-fe-admin.sh start
cd log/
ls
vim codis-fe.log.2021-04-15
netstat -antlupe

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

访问测试

查看图形界面

在浏览器输入172.25.111.1:9090,查看图形界面
在这里插入图片描述

点击codis-demo
在这里插入图片描述

向下拉动界面
在这里插入图片描述

可以看到codis-proxy已经激活

通过fe添加group

新建组,也可以添加redis-server实例

先新建组:
cd config/
cp redis.conf redis6381.conf
cp redis.conf redis6382.conf
vim redis.conf
port 6380
pidfile /tmp/redis_6380.pid
vim redis6381.conf
port 6381
pidfile /tmp/redis_6381.pid
vim redis6382.conf
port 6382
pidfile /tmp/redis_6382.pid
cd ..
./bin/codis-server ./config/redis6381.conf
./bin/codis-server ./config/redis6382.conf
./bin/codis-server ./config/redis.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击New Group,使组创建成功
在这里插入图片描述

通过fe初始化slot

新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个group),而初始化最快的方法可通过 fe 提供的 rebalance all slots
按钮来做,如下图所示,点击此按钮,我们即快速完成了一个集群的搭建。

在这里插入图片描述

主从切换

在firefox进行节点加载与监控开启

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

破坏主节点
redis-cli -p 6379
127.0.0.1:6379> shutdown

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

等待自动切换(可能时间比较长)
重启节点
systemctl start redis
自动成为6380从属节点

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值