文档章节

codis3.1安装搭建(zookeeper集群)

鑢七花
 鑢七花
发布于 2016/10/25 10:04
字数 1992
阅读 806
收藏 23

Codis3.1搭建文档

 

下载安装go语言

1.下载解压缩安装包

#wget https://golang.org/dl/go1.7.3.linux-amd64.tar.gz

#tar -zvxf go1.7.3.linux-amd64.tar.gz /usr/local

2.设置go的环境变量

#vi /etc/profile

在末尾添加一下内容

#go

GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin

export GOPATH=/opt/gowork 【这个是安装codis的目录

source /etc/profile

#go version 出现以下文字说明成功安装go

 

Zookeeper集群搭建

1.部署zookeeper(可部署1个,建议部署多台[奇数]提供集群服务,须安装JDK)

#cd /usr/local/zookeeper-3.4.6/conf (建议使用3.4.6以上版本)

#vim zoo.cfg

           tickTime=2000

           initLimit=5

           syncLimit=2

           dataDir=/data/zookeeper/data

           #dataLogDir=/data/zookeeper/logs

           clientPort=2181

           server.1=zookeeper-1:2888:3888

           server.2=zookeeper-2:2888:3888

           server.3=zookeeper-3:2888:3888

2.配置host  注意下面ip是zk的实际ip地址

 #vim /ect/hosts

           ip zookeeper-1

           ip zookeeper-2

           ip zookeeper-3

#vim /data/zookeeper/data/myid

           在此文件内编辑自己对应的serverID. serverID见上述红色标记的数字

#sh /usr/local/zookeeper-3.4.6/bin/zkServer.sh start

           JMX enabled by default

           Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg

           Starting zookeeper ... STARTED

 

           ./zkCli.sh -server ip:2181 能正确访问 则说明zk部署成功zk启动成功(依次将zk集群启动)

 

Codis安装搭建

1.在线使用git下载安装codis

#cd /opt/gowork

#yum install git -y

#go get -u -d github.com/CodisLabs/codis(这个方法我没有采用,不知道为什么执行之后不出结果,我是直接在官网下载的包)

#wget https://github.com/CodisLabs/codis-release3.1.zip

#cd /opt/gowork

#mkdir -p src/github.com/CodisLabs

#unzip /

codis-release3.1.zip -d /opt/gowork/src/github.com/CodisLabs/

#cd /opt/gowork/src/github.com/CodisLabs/

#mv codis-release codis

#cd codis

#make

#make gotest(测试编译是否成功)

执行成功后进入bin目录,会新增几个文件,如下:

表示编译成功

 

2.配置redis文件(我以2个为例,数量随意)

#cp extern/redis-2.8.21/redis.conf /usr/local/redis/redis6379.conf

考虑性能,主库关闭aof和rdp,从库只开启aof:

将redis6379.conf更改以下参数(主库):
daemonize yes
pidfile /codisapp/run/codis/redis6379.pid
port 6379
timeout 86400
tcp-keepalive 60
loglevel notice
logfile /codisapp/logs/codis/redis6379.log
databases 16
save ""
#save 900 1    ----关闭aof
#save 300 10
#save 60 10000
stop-writes-on-bgsave-error no
rdbcompression yes
dbfilename dump6379.rdb
dir /codisapp/dbdat/redis_data_6379
masterauth "xxxxx"
slave-serve-stale-data yes
repl-disable-tcp-nodelay no
slave-priority 100
requirepass "xxxxx"
maxmemory 10gb
maxmemory-policy allkeys-lru
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 0 0 0
client-output-buffer-limit pubsub 0 0 0
hz 10
aof-rewrite-incremental-fsync yes

上面将redis6379.conf配置完成

接下来修改redis6380.conf文件

#cp /usr/local/redis/redis6379.conf /usr/local/redis/redis6380.conf

#vi /usr/local/redis/redis6380.conf

修改以下内容

pidfile /codisapp/run/codis/redis6380.pid
port 6380

logfile /codisapp/logs/codis/redis6380.log

dbfilename dump6380.rdb

dir /codisapp/dbdat/redis_data_6380

 

启动redis

执行之前注意将log和data的文件生成目录建好,不然会启动失败

./bin/codis-server /usr/local/redis/redis6379.conf &

./bin/codis-server /usr/local/redis/redis6380.conf &

 

3.启动bashboard

#./bin/codis-dashboard --default-config | tee dashboard.conf

#vi dashboard.conf

coordinator_name              外部存储类型,接受 zookeeper/etcd

coordinator_addr                外部存储地址

product_name                    集群名称,满足正则 \w[\w\.\-]*

product_auth                      集群密码,默认为空

admin_addr                        RESTful API 端口

 

#nohup bin/codis-dashboard --ncpu=4 --config=dashboard.conf --log=dashboard.log --log-level=WARN &

 

执行完成后出现以下内容说明成功

#more dashboard.log日期

说明:

 --ncpu=N                               最大使用 CPU 个数

 -c  CONF, --config=CONF      指定启动配置文件

 -l   FILE, --log=FILE                 设置 log 输出文件

--log-level=LEVEL             设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN

l  对于同一个业务集群而言,可以同时部署多个codis-proxy 实例;

l  不同 codis-proxy 之间由 codis-dashboard 保证状态同步。

 

4.启动codis-proxy

#./bin/codis-proxy --default-config | tee proxy.conf

#vi proxy.conf

填写箭头位置信息

配置文件解析:

product_name                                 集群名称,参考dashboard参数说明

product_auth                                   集群密码,默认为空

admin_addr                                     RESTfulAPI 端口

proto_type                                       Redis 端口类型,接受tcp/tcp4/tcp6/unix/unixpacket

proxy_addr                                      Redis 端口地址或者路径

jodis_addr                                       Jodis 注册 zookeeper地址

jodis_timeout                                  Jodis 注册 sessiontimeout时间,单位second

backend_ping_period                     与 codis-server 探活周期,单位second,0表示禁止

session_max_timeout                     与 client 连接最大读超时,单位second,0表示禁止

session_max_bufsize                      与 client 连接读写缓冲区大小,单位byte

session_max_pipeline                     与 client 连接最大的pipeline 大小

session_keepalive_period               与 client 的 tcp keepalive 周期,仅tcp有效,0表示禁止

启动codis-proxy

#nohup bin/codis-proxy --ncpu=4 --config=proxy.conf --log=proxy.log --log-level=WARN &

codis-proxy启动后,处于 waiting 状态,监听proxy_addr 地址,但是不会 accept 连接,添加到集群并完成集群状态的同步,才能改变状态为online。添加的方法有以下两种:

通过 codis-fe 添加:通过 Add Proxy 按钮,将 admin_addr 加入到集群中;

l  通过 codis-admin 命令行工具添加,方法如下:

$ ./bin/codis-admin --dashboard=192.168.1.184:18080  --create-proxy  -x  192.168.1.184:11080

 其中 192.168.1.184:18080 以及 192.168.1.184:11080 分别为 dashboard 和 proxy 的 admin_addr 地址;

添加过程中,dashboard 会完成如下一系列动作:

① 获取 proxy 信息,对集群 name 以及 auth 进行验证,并将其信息写入到外部存储中;

② 同步 slots 状态;

③ 标记 proxy 状态为 online,此后 proxy 开始 accept 连接并开始提供服务;

./bin/codis-admin  --proxy=192.168.30.6:11080  --auth="xxxxx"  --shutdown

$ ./bin/codis-proxy  -h

Usage:

codis-proxy [--ncpu=N][--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR]

[--host-proxy=ADDR] [--ulimit=NLIMIT]

codis-proxy  --default-config

codis-proxy  --version

 Options:

    --ncpu=N                              最大使用 CPU 个数

    -c CONF, --config=CONF      指定启动配置文件

    -l FILE, --log=FILE                 设置 log 输出文件

    --log-level=LEVEL         设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN

--ulimit=NLIMIT            检查 ulimit -n 的结果,确保运行时最大文件描述不少于 NLIMIT

5.配置启动Cdis FE 集群管理界面

生成配置文件

#mkdir conf (为了下面放codis.json的文件,目录可以随意定义)

# ./bin/codis-admin --dashboard-list --zookeeper=192.168.1.184 | tee conf/codis.json

启动codis-fe

#nohup ./bin/codis-fe --ncpu=4 --log=fe.log --log-level=WARN --dashboard-list=conf/codis.json --listen=192.168.1.184:18090 &

看生成的日志出现如下情况说明没问题


至此codis的图形界面已经能够显示

 

6.图形界面创建组和solt节点

1)打开浏览器访问http://ip:18090,通过管理界面操作codis

创建组

输入编号1,点击New Group,第一组创建完成

 

2)添加实例

在后面输入组的id号,然后后面框内输入redis实例所在机器的ip地址和redis实例的端口号,点击Add Server即可添加完成 实例 ,再添加第二个实例完成后G-1那一列会有向上的箭头,点击后可升为master,点击第二个redis实例中master那一列的图标 即可将 此实例设置为slave,此图标可以将对应的实例从该组中删除,如下两图:

3)对slots进行分组

如下图所示,输入你所要分组的slots的起和止的范围,然后输入组ID,点击后面按钮即可。

4)添加管理proxy

如下图所示,在框内输入proxy所对应的ip地址和端口号点击Add proxy即可

此外除了图形界面进行如上操作外,还可以通过命令行进行操作

创建组:

#./bin/codis-admin  --dashboard=192.168.1.184:18080  --create-group   --gid=1
#./bin/codis-admin  --dashboard=192.168.1.184:18080  --create-group   --gid=2

组添加服务器:

#./bin/codis-admin  --dashboard=192.168.1.184:18080  --group-add  --gid=1 \

--addr=192.168.1.184:6379
#/bin/codis-admin   --dashboard=192.168.1.184:18080  --group-add  --gid=1  \

--addr=192.168.1.184:6380

把从库跟主库同步:(同一组的两个实例都要执行)
#./bin/codis-admin  --dashboard=192.168.1.184:18080   --sync-action  --create \

 --addr=192.168.1.184:6379

#./bin/codis-admin  --dashboard=192.168.1.184:18080   --sync-action  --create  \

--addr=192.168.1.184:6380

若从库需要提升为master,操作如下:
#./bin/codis-admin  --dashboard=192.168.1.184:18080   --promote-server  --gid=1   \

--addr=192.168.1.184:6380(从库ip和端口)

初始化 slots,并设置 server group 服务的slot范围((只在一节点执行一次)sid是slot的编号。Codis 采用 Pre-sharding 的技术来实现数据的分片, 默认分成1024个slots (0-1023), 对于每个key来说, 通过以下公式确定所属的Slot Id : SlotId = crc32(key) % 1024 每一个slot都会有一个且必须有一个特定的server group id来表示这个slot的数据由哪个server group来提供.

#./bin/codis-admin  --dashboard=192.168.1.184:18080  --slot-action  --create-range  --beg=0  \

 --end=300  --gid=1
#./bin/codis-admin --dashboard=192.168.1.184:18080  --slot-action  --create-range  --beg=301  \

--end=601  --gid=2

 

© 著作权归作者所有

共有 人打赏支持
鑢七花
粉丝 5
博文 14
码字总数 17605
作品 0
葫芦岛
运维
私信 提问
加载中

评论(4)

c
cuisichao
大神,,按照你的方案 我部署完codis-fe 启动也成功了。但是界面不能点击,界面排序也很乱,你遇到过吗?这是个什么原因引起的
13235352587
13235352587

引用来自“愚_者”的评论

codis3开始不是不用依赖zookeeper了吗?

是的呢
鑢七花
鑢七花

引用来自“愚_者”的评论

codis3开始不是不用依赖zookeeper了吗?

回复@愚_者 : 。。。需要依赖啊,zk除了存储路由信息,同时还作为一个事件同步的媒介服务
愚_者
愚_者
codis3开始不是不用依赖zookeeper了吗?
Java之品优购部署_day01(3)

2.2 搭建 Zookeeper 集群 2.2.1 搭建要求 真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动十几个虚拟机 内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务都搭...

我是小谷粒
07/06
0
0
Zookeeper完全分布式集群的搭建

Zookeeper完全分布式集群的搭建 一、集群模式 1、单机模式 在zoo.cfg中只配置一个server.id就是单机模式了。 这种模式下,如果当前主机宕机,那么所有依赖于当前zookeeper服务工作的其他服务...

星汉
04/27
0
0
基于zookeeper+leveldb搭建activemq集群实现高可用

自从activemq5.9.0开始,activemq的集群实现方式取消了传统的Master-Slave方式,增加了基于zookeeper+leveldb的实现方式,其他两种方式:目录共享和数据库共享依然存在。本文主要阐述基于zoo...

chaun
2015/08/17
0
2
基于zookeeper+leveldb搭建activemq集群

自从activemq5.9.0开始,activemq的集群实现方式取消了传统的Master-Slave方式,增加了基于zookeeper+leveldb的实现方式,其他两种方式:目录共享和数据库共享依然存在。本文主要阐述基于zoo...

萧十一郎君
2014/09/12
0
7
ZooKeeper的伪分布式集群搭建以及真分布式集群搭建

zk集群的一些基本概念 zookeeper集群搭建: zk集群,主从节点,心跳机制(选举模式) 配置数据文件 myid 1/2/3 对应 server.1/2/3 通过 zkCli.sh -server [ip]:[port] 命令检测集群是否配置成...

ZeroOne01
04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
34分钟前
1
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
38分钟前
128
5
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
3
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部