【实践】codis安装手记

本文详细介绍Codis集群的搭建过程,包括环境准备、各组件安装配置及快速启动方法,适用于初学者快速上手。

 

1:准备工作

1.1 说明

Codis 3.x 由以下组件组成:

  • Codis Server:基于 redis-3.2.8 分支开发。增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。具体的修改可以参考文档 redis 的修改
  • Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy)。
  • 对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例;
  • 不同 codis-proxy 之间由 codis-dashboard 保证状态同步。
  • Codis Dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。
  • 对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;
  • 所有对集群的修改都必须通过 codis-dashboard 完成。
  • Codis Admin:集群管理的命令行工具。
  • 可用于控制 codis-proxy、codis-dashboard 状态以及访问外部存储。
  • Codis FE:集群管理界面。
  • 多个集群实例共享可以共享同一个前端展示页面;
  • 通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。
  • Storage:为集群状态提供外部存储。
  • 提供 Namespace 概念,不同集群的会按照不同 product name 进行组织;
  • 目前仅提供了 Zookeeper、Etcd、Fs 三种实现,但是提供了抽象的 interface 可自行扩展。

1.2 机器准备

三台机器功能分配:   

    192.168.127.147 : zk 、proxy 、dashboard 、codis-fe、redis-master(6379)、redis-slave(6380)

   192.168.127.148: proxy、redis-master(6379)、redis-slave(6380)

192.168.127.149: proxy、redis-master(6379)、redis-slave(6380)

2:安装go环境

2.1 下载go

注:需要翻墙才能打开以下链接,如果不能翻墙可以去golang中国下载,但版本可能没有最新的。

url: https://golang.org/dl/

143746_O3KV_3236620.png

 

 

如果翻不了墙可以从以下链接下载(golang中国)

http://www.golangtc.com/download

143811_U3iv_3236620.png

 

 

3:安装jdk

zookeeper 会需要java环境,所以需求安装jdk,jdk的安装不在本文档中体现。

 

4:配置环境变量

4.1 命令: vi /etc/profile

加入以下配置:

export GOROOT=/usr/local/go export GOPATH=/usr/local/codis JAVA_HOME=/usr/local/jdk CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6 export PATH=$PATH:$GOROOT/bin:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

 

4.2 使配置生效

#source /etc/profile

4.3 验证安装是否成功

jdk:# java -version

143835_oCri_3236620.png

 

go : # go -v

143846_CYuh_3236620.png

 

5:安装zookeeper (生产环境需要使用zookeeper做协调)

zookeeper安装参见往期zookeeper安装手记

生产环境注意要修改:dashboard.toml 文件

143903_dfLo_3236620.png

修改以下两处,填写生产使用的zk地址,注释面上的配置

143921_AWvM_3236620.png

6:安装git

yum install -y git

143942_mQU1_3236620.png

7:安装codis

7.1 下载原码

下载url: https://github.com/CodisLabs/codis

144000_tcNV_3236620.png

 

 

7.2 创建目录

在要安装codis的目录下创建以下目录:

/codis/src/github.com/CodisLabs/codis/

命令: # mkdir -p /codis/src/github.com/CodisLabs/codis

 

7.3 上传原码

把7.1 下载的原码解压后,把解压文件拖到服务器上的 /codis/src/github.com/CodisLabs/codis/ 目录下

144016_hRIy_3236620.png

 

7.4 进入codis原码目录直接make安装

 

会有如下打印提示文件无权限,如下图所示

144028_oRm8_3236620.png

7.5 查找无权限的文件,如下图标记命令:

# find ./ -name "mkreleasehdr.sh"

144038_EMmB_3236620.png

7.6 可以看到文件的详细信息无执行权限

#stat ./extern/redis-3.2.8/src/mkreleasehdr.sh

144057_DaM7_3236620.png

7.7 修改文件权限,再次查看文件详细信息

#chmod +x ./extern/redis-3.2.8/src/mkreleasehdr.sh

144144_KLAK_3236620.png

7.8 重新执行make命令:如下图所示提示错误

144114_mKsy_3236620.png

解决办法:

原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数。

 

7.9 重新编译

命令:make MALLOC=libc

144207_OEMf_3236620.png

 

进入原码目录(/usr/local/codis/src/github.com/CodisLabs/codis)下执行以下命令:

#go build -i -o bin/codis-dashboard ./cmd/dashboard #go build -i -o bin/codis-proxy ./cmd/proxy #go build -i -o bin/codis-admin ./cmd/admin #go build -i -o bin/codis-fe ./cmd/fe

如下图所示:

144220_tr4u_3236620.png

 

执行完以下命令后在bin目录下会生成以下文件:

144237_HcBR_3236620.png

 

7.10 进入admin目录,修改脚本的权限改为可以执行

#chmod +x ./*

144253_lds7_3236620.png

 

8 快速启动(搭建单机测试时用)

2分钟快速构建一个单机版测试 codis 集群,无任何外部组件依赖.源码中 admin 文件夹提供了一系列脚本以便快速启动、停止各个组件,提高运维效率。

8.1 启动codis-dashboard

运行codis-dashboard-admin.sh

命令:

# cd ./admin

# ./codis-dashboard-admin.sh start

144312_oy1S_3236620.png

确认是否启动成功:

(1)查看日志

144322_5ur1_3236620.png

144345_DYjU_3236620.png

(2)查看监听的端口

144400_Hz8T_3236620.png

 

8.2 启动codis-proxy

命令:

#cd ./admin

# ./codis-proxy-admin.sh start

144419_qi2G_3236620.png

确认是否启动成功:

(1) 查看日志

144433_mRzQ_3236620.png

144445_z2yM_3236620.png

(2) 查看监听的端口

144457_qYN5_3236620.png

8.3 启动 codis-server

命令 :

# cd admin

# ./codis-server-admin.sh start

144519_ngCI_3236620.png

确认是否启动成功

(1)查看日志(redis日志)

日志目录: 可以查看redis配置中指定的日志目录,此目录可以修改。(/usr/local/codis/src/github.com/CodisLabs/codis/config/redis.conf)

144535_80VS_3236620.png

日志内容如下:

144545_4kko_3236620.png

(2)查看监听的端口

144555_fCXn_3236620.png

 

8.4 启动codis-fe

命令:

#cd admin

#./codis-fe-admin.sh start

144615_TFqc_3236620.png

确认是否启动

(1)查看日志

144626_nEM6_3236620.png

启动失败报如下异常,找不到这个文件如下图所示

144638_7emM_3236620.png

解决步骤:

  • 查找找不到的这个文件所在目录

144655_Z6So_3236620.png

  • 查看codis-fe-admin.sh 脚本指定的目录

144706_BsnW_3236620.png

  • 把文件复制到codis-fe-admin.sh 指定的目录下
  • 重新启动

144725_D87z_3236620.png

(2)查看监听的端口

144737_Rvvs_3236620.png

 

访问:http://192.168.127.147:9090/#codis-demo

144758_KEyR_3236620.png

144813_dpuO_3236620.png

 

9:codis-server(redis)配置

使用codis自己带的redis3.2.8即可。

144832_WTxn_3236620.png

 

9.1 redis 配置

144845_X7Pz_3236620.png

9.2 redis 主从配置

修改如下图所示的配置

144857_cpJq_3236620.png

144906_tf96_3236620.png

144916_ml0v_3236620.png

 

 

 

9.3:安装redis集群

可以启动通过修改redis配置文件,修改端口,启动多个redis实例。实现redis集群。

 

10 codis 启停命令

10.1 启动codis-dashboard(一个集群中只启一个dashboard)

nohup ./codis-dashboard --config=../config/dashboard.toml --log=../log/dashboard.log --log-level=WARN &

 

10.2 启动codis-proxy (一个集群中可以启多个proxy)

nohup ./codis-proxy --config=../config/proxy.toml --log=../log/proxy.log --log-level=WARN &

 

10. 3 启动codis-fe (一个集群中只启一个fe)

nohup ./codis-fe --ncpu=4 --log=fe.log --log-level=WARN --zookeeper=127.0.0.1:2181 --listen=0.0.0.0:8080 &

 

10.4 启动codis-server(一台机机器上可以启多个codis-server)

./codis-server ../config/redis.conf

144933_m0Aa_3236620.png

 

11: 控制台使用

11.1 增加proxy

144944_bJ7i_3236620.png

 

11.2 分槽

144956_bsij_3236620.png

 

11.3 添加redis集群

 

 

转载于:https://my.oschina.net/u/3236620/blog/920167

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值