codis集群部署

Codis简介

codis集群

Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务.

基本架构

codis-proxy

codis-proxy 是客户端连接的 Redis 代理服务, codis-proxy 本身实现了 Redis 协议, 表现得和一个原生的 Redis 没什么区别 (就像 Twemproxy), 对于一个业务来说, 可以部署多个 codis-proxy, codis-proxy 本身是无状态的.

codis-config

codis-config 是 Codis 的管理工具, 支持包括, 添加/删除 Redis 节点, 添加/删除 Proxy 节点, 发起数据迁移等操作. codis-config 本身还自带了一个 http server, 会启动一个 dashboard, 用户可以直接在浏览器上观察 Codis 集群的运行状态.

codis-server

codis-server 是 Codis 项目维护的一个 Redis 分支, 基于 2.8.13 开发, 加入了 slot 的支持和原子的数据迁移指令. Codis 上层的 codis-proxy 和 codis-config 只能和这个版本的 Redis 交互才能正常运行.

ZooKeeper

Codis 依赖 ZooKeeper 来存放数据路由表和 codis-proxy 节点的元信息, codis-config 发起的命令都会通过 ZooKeeper 同步到各个存活的 codis-proxy.
Codis 将槽位关系存储在 zk 中,并且提供了一个 Dashboard 可以用来观察和修改槽位关系,当槽位关系变化时,Codis Proxy 会监听到变化并重新同步槽位关系,从而实现多个

Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务.

搭建codis集群所需的软件

(1) go codis依赖语言包
go1.9.1.linux-amd64.tar.gz(下载地址为:https://studygolang.com/dl/golang/go1.9.1.linux-amd64.tar.gz)
(2) codis codis集群套件
codis-release3.2.zip
(3) jdk zookeeper依赖语言包
jdk-8u121-linux-x64.rpm
(4) zookeeper 用于存放数据配置路由表
http://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

Codis集群部署

实验前须关闭redis

安装codis集群工具

解压go和codis

tar zxf go1.9.1.linux-amd64.tar.gz -C /usr/local/   /解压
cd /usr/local
[root@vm1 ~]# mkdir -p $GOPATH/src/github.com/CodisLabs
[root@vm1 ~]# yum install unzip -y
[root@vm1 ~]# unzip codis-release3.2.zip -d  $GOPATH/src/github.com/CodisLabs
[root@vm1 ~]# cd $GOPATH/src/github.com/CodisLabs
[root@vm1 CodisLabs]# mv codis-release3.2/ codis 

在这里插入图片描述

配置环境变量

vim /etc/profile          配置环境变量
77 export GOROOT=/usr/local/go
78 export GOPATH=/usr/local/codis
79 export PATH=$PATH:/usr/local/go/bin
source /etc/profile

编译安装codis

[root@vm1 codis]#  pwd
[root@vm1 codis]# yum install gcc git autoconf -y
/usr/local/codis/src/github.com/CodisLabs/codis
[root@vm1 codis]# make

在这里插入图片描述

安装 jdk 和 解压zookeeper

[root@vm1 ~]# yum install jdk-8u201-linux-x64.rpm -y
[root@vm1 ~]# tar zxf zookeeper-3.4.14.tar.gz -C /usr/local/ 
[root@vm1 ~]# cd /usr/local/
[root@vm1 local]# ls
[root@vm1 local]# mv zookeeper-3.4.14/ zookeeper

在这里插入图片描述

配置环境变量

[root@vm1 local]# vim /etc/profile
 77 export GOROOT=/usr/local/go
 78 export GOPATH=/usr/local/codis
 79 export ZOOKEEPER_HOME=/usr/local/zookeeper
 80 export PATH=$PATH:/usr/local/go/bin:$ZOOKEEPER_HOME/bin
[root@vm1 local]# source /etc/profile

配置zookeeper

修改zookeeper的配置文件

[root@server3 ~]# cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg 
[root@server3 ~]# cd /usr/local/zookeeper/conf/
[root@server3 conf]# vim zoo.cfg 

在这里插入图片描述

设置myid并启动zk

设置myid在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字(该数字的取值范围是1-255),用来标识当前主机

[root@vm1 conf]# mkdir /data/zookeeper/data -p
[root@vm1 conf]#echo "1" > /data/zookeeper/data/myid
[root@vm1 conf]#  zkServer.sh start 启动zookeeper

在这里插入图片描述

对codis进行配置,并启动codis的各个组件

启动dashboard前,必须启动zookeepe

[root@vm1 conf]# vim /usr/local/codis/config.ini

  1 zk=localhost:2181    //zookeeper的地址
  2 product=test         //产品名称
  3 proxy_id=proxy_1     //proxy会读取, 用于标记proxy的名字
  4 net_timeout=5         //检测状态时间间隔
  5 dashboard_addr=localhost:18087   //dashboard 服务的地址
  6 coordinator=zookeeper     //如果用etcd,则将zookeeper替换为etcd

启动codis的各个组件

[root@vm1 conf]# cd $GOPATH/src/github.com/CodisLabs/codis/admin
[root@vm1 admin]# ./codis-dashboard-admin.sh start   启动codis-dashboard组件
[root@vm1 admin]# ./codis-proxy-admin.sh start        启动codis-proxy组件
[root@vm1 admin]# ./codis-fe-admin.sh start           启动codis-fe组件
[root@vm1 admin]#  ./codis-server-admin.sh start      启动codis-server组件
 

netstat -antuple
在这里插入图片描述

配置vm2:

解压go和codis(同vm1)
配置环境变量 (同vm1)
编译codis (同vm1)
配置并启动codis:

[root@vm2 CodisLabs]# cd /usr/local/codis/src/github.com/CodisLabs/codis/config/
[root@vm2 config]# ls
dashboard.toml  proxy.toml  redis.conf  sentinel.conf
[root@vm2 config]# vim redis.conf 
[root@vm2 config]# 

在这里插入图片描述

[root@vm2 config]# cd /usr/local/codis/src/github.com/CodisLabs/codis/admin
[root@vm2 admin]# ./codis-server-admin.sh start

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

配置vm3:

配置过程同vm2

验证实验结果

浏览器上输入192.168.1.1:9090
在这里插入图片描述表示codis-proxy已经激活
在这里插入图片描述
添加组和服务器

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值