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

一个人想着一个人 提交于 2019-12-01 17:44:03

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!