codis配置_Codis 3.2 集群搭建与测试

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

一、软件下载

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.2064C8G

10.21.1.2074C8G

10.21.1.2084C8G

10.21.1.2094C8G

二)、初始化服务环境

需要的环境就一个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

IPmyid位置内容

10.21.1.206/data/zookeeper/data/myid1

10.21.1.207/data/zookeeper/data/myid2

10.21.1.208/data/zookeeper/data/myid3

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集群的架构图如下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值