这里首选分为四个步骤进行

一、软件下载

  • codis 3.2.2 https://github.com/CodisLabs/codis/releases

  • codis-src https://codeload.github.com/CodisLabs/codis/zip/release3.2

  • zeepkeeper  3.5.4  http://ftp.twaren.net/Unix/Web/apache/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz

  • jdk 8

codis 是Linux二进制包,下载这个就不用编译,也不用安装go环境

codis-src主要是需要里面的admin目录的脚本,方便运维。以及config目录的脚本,用来z配置文件实例。

zeepkeeper 用来充当Storage信息存储组件,codis支持zookeeper,etcd,filesystem三种方式,建议使用zookeeper

jdk 环境, zookeeper是java写的,所以需要java环境

我这里提供一套整合好了本实例整合好的一套codis集群配置,可以到这里下载


二、搭建的步骤

一)、物理硬件需求

二)、初始化服务环境

三)、部署zookeeper集群

四)、部署codis-dashboard

五)、部署codis-fe管理后台

六)、部署codis-server加入集群

七)、部署codis-proxy代理服务

八)、部署redis-sentinel实现集群HA

九)、利用redis-benchmark进行集群压测

十)、codis的一些常见问题以及理解


一)、物理硬件需求

对于测试的环境来说,其实一台就可以2c4g的机器就可以,没什么需求。但我想用于生产环境,所以需求又四台4c8g的机器来搭建,具体需求的算法根据业务的数据存储来算,当然也跟业务的繁忙度有关系。我的机器配置如下:

10.21.1.206 4C8G
10.21.1.207 4C8G
10.21.1.208 4C8G
10.21.1.209 4C8G

二)、初始化服务环境

需要的环境就一个java环境,这个是zookeeper的依赖,也不是必须的,如果搭建使用的是默认的filesystem,那java环境也不需要了。codis的建议用我提供的实例,省得自己去整合脚本,配置文件,各个实例下载后安装的目录如下:

zookeeper /usr/local/zookeeper/
codis /usr/local/codis/
java /usr/local/java/

三)、部署zookeeper集群

  • 10.21.1.206

  • 10.21.1.207

  • 10.21.1.209

1、设置配置文件 /usr/local/zookeeper/conf/zoo.cfg

[root@localhost zookeeper]# cat conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/log
clientPort=2181
maxClientCnxns=300
server.1=10.21.1.206:2888:3888
server.2=10.21.1.207:2888:3888
server.3=10.21.1.208:2888:3888

2、设置zookeeper存储目录

mkdir -p /data/zookeeper/log
mkdir -p /data/zookeeper/data

3、设置集群ID

IP myid位置 内容
10.21.1.206 /data/zookeeper/data/myid 1
10.21.1.207 /data/zookeeper/data/myid 2
10.21.1.208 /data/zookeeper/data/myid 3

4、启动zookeeper集群

#在三个机器分别启动zookeeper/usr/local/zookeeper/bin/zkServer.sh start

5、测试启动的zookeeper是否成功

## 查看zookeeper状态
[root@localhost bin]# ./zkServer.sh status
/usr/local/java/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader## 进入zookeeper
[root@localhost bin]# ./zkCli.sh
........
[zk: localhost:2181(CONNECTED) 0]  ls /

四)、部署codis-dashboard

  • 10.21.1.206

1、修改配置文件

# vi /usr/local/codis/conf/dashboard.toml
coordinator_name = "zookeeper"
coordinator_addr = "10.21.1.206:2181,10.21.1.207:2181,10.21.1.208:2181"

 默认为filesystem的Storage,修改成使用zookeeper。

2、启动dashboard

# cd /usr/local/codis
#  ./admin/codis-dashboard-admin.sh start
# ss -tpnl |grep  18080
LISTEN     0      128         :::18080                   :::*                   users:(("codis-dashboard",pid=1017,fd=6))

3、查看日志排查错误

# tail -n 200 /usr/local/codis/log/codis-dashboard.out
# tail -n 200  /usr/local/codis/log/codis-dashboard.log.2018-08-09

五)、10.21.206上部署codis-fe管理后台

0、部署机器

  • 10.21.1.206

1、修改启动文件

# 修改存储文件成zookeeper方式
# vi /usr/local/codis/codis-fe-admin.sh
COORDINATOR_NAME="zookeeper"
COORDINATOR_ADDR="10.21.1.206:2181,10.21.1.207:2181,10.21.1.208:2181"

2、启动fe

# /usr/local/codis/admin/codis-fe-admin.sh start
# ss -tpnl |grep 9090
LISTEN     0      128         :::9090                    :::*                   users:(("codis-fe",pid=1072,fd=6))

3、打开后台查看


六)、部署codis-server加入集群

0、部署机器

  • 10.21.1.206

  • 10.21.1.207

  • 10.21.1.208

  • 10.21.1.209

1、在四台机器都启动codis-server

/usr/local/codis/admin/codis-server-admin.sh start

2、在fe后台添加两个Group,每个group分配两个机器

3、利用fe自动分配插槽slot


七)、部署codis-proxy代理服务

0、部署机器

  • 10.21.1.206

  • 10.21.1.207

  • 10.21.1.208

1、修改配置文件proxy.toml,这种zookeeper的jodis地址

jodis_name = "zookeeper"
jodis_addr = "10.21.1.206:2181,10.21.1.207:2181,10.21.1.208:2181"

2、修改启动文件并启动

# vi /usr/local/codis/admin/codis-proxy-admin.sh
CODIS_DASHBOARD_ADDR="10.21.1.206:18080"#  /usr/local/codis/admin/codis-proxy-admin.sh  start# ss -tpnl |grep 19000
LISTEN     0      128          *:19000                    *:*                   users:(("codis-proxy",pid=1097,fd=5))

3、在fe界面查看proxy

proxy启动默认会自动注册到dashboard中,也可以在fe中手动添加


八)、部署redis-sentinel实现集群HA

0、部署机器

  • 10.21.1.206

  • 10.21.1.207

  • 10.21.1.208

1、修改配置文件

port 26379
dir "/tmp"
protected-mode no

2、启动sentinel

#sentinel部署官方脚本,是根据codis-server启动脚本进行修改
/usr/local/codis/admin/codis-sentinel-admin.sh start# ss -tpnl |grep 26379

3、fe界面添加Sentinels

4、点下SYNC,这样配置文件会自动添加如下内容

# Generated by CONFIG REWRITE
sentinel myid ea5a5c3613f12dbddf469851ecacef8dba60dc23
sentinel monitor codis-demo-2 10.21.1.208 6379 2
sentinel failover-timeout codis-demo-2 300000
sentinel config-epoch codis-demo-2 0
sentinel leader-epoch codis-demo-2 0
sentinel known-slave codis-demo-2 10.21.1.209 6379
sentinel known-sentinel codis-demo-2 10.21.1.207 26379 0757848854fba1295387b9d5b5ca49178e73ebd6
sentinel known-sentinel codis-demo-2 10.21.1.208 26379 7c8ee4b48e5dbbe49f3f999b8746caf0c18e4565
sentinel monitor codis-demo-1 10.21.1.206 6379 2
sentinel failover-timeout codis-demo-1 300000
sentinel config-epoch codis-demo-1 2
sentinel leader-epoch codis-demo-1 2
sentinel known-slave codis-demo-1 10.21.1.207 6379
sentinel known-sentinel codis-demo-1 10.21.1.207 26379 0757848854fba1295387b9d5b5ca49178e73ebd6
sentinel known-sentinel codis-demo-1 10.21.1.208 26379 7c8ee4b48e5dbbe49f3f999b8746caf0c18e4565
sentinel current-epoch 2

九)、利用redis-benchmark进行集群压测

1、一个proxy压测,10w次请求,20个并发

./bin/redis-benchmark  -p 19000 -n 100000 -c 20

可以看到单proxy几乎可以达到4w的ops,这是当前集群单proxy的极限,如果进行业务实际应用要参考改值是否符合业务需求。

2、3个proxy同时压测

    可以看到多个proxy可以增加ops,所以建议开发的接入使用jodis,通过zookeeper获取proxy来实现负载均衡,同时也可以明显的增加集群性能。


十)、codis的一些常见问题以及理解

1、官方几个组件的说明

  • Codis Server:基于 redis-3.2.8 分支开发。增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。

  • 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 可自行扩展。

2、关于插槽

slot总共有1024个,可以根据分组进行调整,如果使用自动平衡,则会均衡分配,比如这里有两组,所以一组分配512个插槽。插槽是一种codis虚拟的分配,只是为了方便快速索引,数据最终存储到后方的redis服务。

3、codis集群的架构图如下

转载于:https://blog.51cto.com/brucewang/2159131

Codis 3.2 集群搭建与测试相关推荐

  1. 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

    目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...

  2. Spark _04集群搭建及测试

    搭建 Standalone[注]jdk1.8 1).下载安装包,解压 改名为 进入安装包的conf目录下,修改slaves文件,添加从节点.保存. vi slaves 修改spark-env.sh S ...

  3. 第十章 :hbase集群搭建,测试

    一,在ubuntu主机上安装hbase, 在上一章中我们已经在ubuntu3主机上安装了hbase,这里为了省事,直接远程复制到ubuntu主机上. xiaoye@ubuntu3:~$ ls apac ...

  4. Linux的企业-Codis 3集群搭建详解

    Codis 3集群搭建详解 Codis 3介绍 对于Redis集群方案有好多种,基本常用的就是twemproxy,codis.redis cluster这三种解决方案,本人有幸工作中都大量使用过,各有 ...

  5. Kafka 教程(二) 集群搭建和容错性测试

    2019独角兽企业重金招聘Python工程师标准>>> 在之前我们已经安装过kafka,我们直接进行单机多broker搭建.kafka安装请参考:kafka 教程(一) 第一个实例 ...

  6. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  7. Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误

    25. 集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据 ...

  8. *福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)

    redis 5.0版本 集群搭建不需要我们安装ruby就可以搭建成功,并且redis给我们提供了快速搭建脚本,执行utils/create-cluster/ 目录下的create-cluster脚本 ...

  9. 软件测试集群,集群搭建完成简要测试集群(性能)带宽与IOPS

    集群搭建好之后网络,raid卡策略,磁盘都会影响集群的性能.为了避免因上述问题使得集群的性能受到影响,我们依次进行测试,最后得到基本的集群性能. 网络 首先是网络,ceph集群一大堆让人摸不着头脑的问 ...

最新文章

  1. Node搭建多人聊天室
  2. SQL Server数据库错误9003(LSN无效)的处理方法
  3. 大学计算机基础实验指导试题,(大学计算机基础实验指导)模拟试题(二)参考答案...
  4. org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 285; cvc-elt.1.a: 找不到元素 ‘beans‘ 的声明。
  5. dotnet core 微服务教程
  6. Java 8:按集合分组
  7. sql查询字段的值不为空
  8. 七牛云注册创建oss并配置自定义域名
  9. 刀片服务器改台式电脑_服务器到底是个什么东东?跟电脑有啥区别?电脑知识学习!...
  10. 什么是web前端?Web前端好入门吗?
  11. ubuntu 18.04 解决无法联网的问题
  12. linux实验考试题
  13. Mac IDEA切换主题颜色
  14. 3dsmax注册机不能用管理员身份运行的解决办法
  15. AIDL 方法参数的in out inout前缀作用
  16. linux mentohust dhcp,校园网锐捷 openwrt mentohust 成功开启IPv6
  17. mysql 8 全文检索_MySQL 8中使用全文检索示例
  18. 深圳教育培训机构启用消费评价二维码
  19. 【均衡器】LS均衡器,DEF均衡器以及LMMSE均衡器的误码率性能对比仿真
  20. 栈+模拟(大鱼吃小鱼)

热门文章

  1. java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
  2. 【转】推荐!国外程序员整理的Java资源大全
  3. resin-pro-4.0.34 服務器在windows环境下的配置
  4. 微软极品Sysinternals Suite工具包使用指南
  5. 精通ASP.NET中弹出窗口技术
  6. 第五篇:Visual Studio 2008 Web开发使用的新特性
  7. OSI[七层]与TCP/IP[四层]模型简述简图
  8. ASP.NET中的事务处理和异常处理
  9. Google Test(GTest)使用方法和源码解析——模板类测试技术分析和应用
  10. Linux下addr2line命令用法