codis集群部署

codis简介:

什么是codis:

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

codis的组成部分:

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

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

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

Codis 依赖 ZooKeeper 来存放数据路由表和 codis-proxy 节点的元信息, codis-config 发起的命令都会通过 ZooKeeper 同步到各个存活的 codis-proxy.

Codis 支持按照 Namespace 区分不同的产品, 拥有不同的 product name 的产品, 各项配置都不会冲突.

codis的特性:

  • 自动平衡

  • 使用非常简单

  • 图形化的面板和管理工具

  • 支持绝大多数 Redis命令,完全兼容twemproxy

  • 支持 Redis 原生客户端

  • 安全而且透明的数据移植,可根据需要轻松添加和删除节点

  • 提供命令行接口

  • RESTful APIs

架构图:

实验环境:

RHEL6.5,iptables和selinux都是disabled的状态

codis-redis-master   server3 172.25.254.3

codis-redis-slave      server2 172.25.254.2

codis-proxy               server4 172.25.254.4

操作步骤:

安装go环境(所有节点必须都安装,在server3上做,其他的节点都一样)

1.下载go安装包go1.8.linux-amd64.tar.gz,将其解压在/usr/local目录下,并且设置环境变量

tar zxf go1.8.linux-amd64.tar.gz    ##解压

mv  go /usr/local/       ##移动go,也可以直接解压到/usr/local下

vim /etc/profile     ##编辑文件

source /etc/profile    ##重新加载文件

2.设置编译文件

在$GOPATH目录里建立codis编译目录,将codis下载后解压到此目录

(若是找不到unzip命令,可以yum install -y unzip )

3.编译codis源码

在编译之前需要安装依赖包

编译,完成如下

4.配置集群

codis源码编译完成后,组件的启动脚本在GOPATH/src/github.com/CodisLabs/codis/admin目录下,配置文件在GOPATH/src/github.com/CodisLabs/codis/config目录下。日志在¥GOPATH/src/github.com/CodisLabs/log目录下。

5.进行集群配置

codis-proxy 配置

安装jdk

安装zokeeper

修改路径:

配置zookeeper,修改配置文件:

设置myid:

设置myid在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标示当前主机,conf/zoo.cfg文件配置的server.x中的x为什么是数字,则myid文件就输入这个 数字,我只有一台zk,所以配置文件里可以不配置server.x,但还是要配置myid的,echo一个数字1进去即可。如果有多台zk,则分别在zk服务器上echo对应的数字的myid文件

启动zookeeper

因为环境变量里已经添加了路径,直接执行命令即可,执行zk server.sh start后,要等一会儿再执行zk server status:

再那个目录下启动,就再那个目录下产生一个启动的日志zookeeper.out,查看这个日志可以查看是否正常启动了。由于单个zookeeper,所以这里指示mode:standalone,如果由多个zk节点,就只有一个mode:;eader的状态,别的都是mode:follower的状态:

解释一下配置文件含义:

zk=localhost:2181

##zookeeper的集群,可以这么写:zk=hostname1:2181,hostname2:2181,hostname3:2181,hostname4:2181,hostname5:2181,如果是etcd,则写成http://hostname1:port,http://hostname2:port,http://hostname3:port

product=test ##产品名称, 这个codis集群的名字, 可以认为是命名空间, 不同命名空间的codis没有交集

proxy_id=proxy_1 //proxy会读取, 用于标记proxy的名字, 针对多个proxy的情况, 可以使用不同的config.ini, 只需要更改 proxy_id 即可 net_timeout=5 //检测状态时间间隔

dashboard_addr=localhost:18087 //dashboard 服务的地址,CLI 的所有命令都依赖于 dashboard 的 RESTful API,所以必须启动

coodinator=zookeeper   ##如果用etcd,则将zookeeper替换为etcd

6.启动顺序

    start zookeeper //启动zookeeper服务
    change config items in config.ini //修改codis配置文件
    ./start_dashboard.sh //启动 dashboard
    ./start_redis.sh //启动redis实例
    ./add_group.sh //添加redis组,一个redis组只能有一个master
    ./initslot.sh //初始化槽
    ./start_proxy.sh //启动proxy
    ./set_proxy_online.sh //上线proxy项目
    open browser to http://localhost:18087/admin //访问web

7.启动各个组件:

启动zookeeper


启动codisdashboard组件,查看日志文件codis-dashboard.2017-10-27是否成功

启动codisproxy组件,查看日志codis-proxy.log.2017-10-27,是否启动成功。

启动codis server组件,查看日志/tmp/redis_6379.log文件是否启动成功。

启动codis fs组件,查看codis-fe.log.2017-10-27文件是否启动成功。

安装redis(redis-master)

在server4上安装,解压

要编译,则需要c语言编译工具

make 编译

make install 安装

创建目录

开启服务,并且查看端口

在server2上做同样操作

在网页访问

猜你喜欢

转载自blog.csdn.net/weixin_42731856/article/details/83449262
今日推荐