一、zookeeper 安装部署
1、安装java环境
yum search jdk
yum install -y java-1.6.0-openjdk
java-version 检测java是否安装完毕
2、安装zookeeper
tar -C /usr/local/ -xf zookeeper-3.4.8.tar.gz
cd /usr/local/
mv zookeeper-3.4.8 zookeeper
chown root:root -R zookeeper/
cd zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg #将zookeeper加入环境变量
vim /etc/profile
export
PATH=$PATH:/usr/local/zookeeper/bin
source /etc/profile
env
vim /usr/local/zookeeper/conf/zoo.cfg
clientPort=2181
dataDir=/usr/local/zookeeper/data
server.3=172.25.3.3:2888:3888 //
server.4=172.25.3.4:2888:3888
server.5=172.25.3.5:2888:3888
mkdir -p /usr/local/zookeeper/data/myid
//2888表示zookeeper程序监听端口,3888表示zookeeper选举通信端口
- 1
二、、下载并编译安装codis 3.2
cd
mkdir /usr/local/codis/src/github.com/CodisLabs
cd /usr/local/codis/src/github.com/CodisLabs/
wget https://github.com/CodisLabs/codis/archive/codis-release3.2.zip
unzip codis-release3.2.zip
mv codis-release3.2 codis
cd codis
make
- 直接通过 make 进行编译时,如果出现下面的报错
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/root/redis-4.0.1/src'
make: *** [all] Error 2
输入下面的命令
make MALLOC=libc
在bin文件夹内生成codis-admin、codis-dashboard、codis-fe、codis-ha、codis-proxy、codis-server六个可执行文件。另外, bin/assets文件夹是codis-dashboard http服务需要的前端资源, 需要和codis-dashboard放置在同一文件夹下。
vim /etc/profile.d/go.sh #修改环境变量
#!/bin/bash
export GOROOT=/usr/local/go
export GOPATH=/usr/local/codis/
export PATH=$PATH:$GOROOT/bin
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
export PATH=$PATH:/usr/local/codis/src/github.com/CodisLabs/codis/bin/
#export PATH=$PATH:/data/codis/redis/bin
source /etc/profile.d/go.sh
- 1
为Codis创建标准目录
mkdir -p /data/codis/sh
mkdir -p /data/codis/conf
mkdir -p /data/codis/log
mkdir -p /data/codis/run
mkdir -p /data/codis/redis/bin
mkdir -p /data/codis/redis/redis-6379
mkdir -p /data/codis/redis/redis-6380
添加环境变量
vim /etc/profile.d/go.sh
#!/bin/bash
export GOROOT=/usr/local/go
export GOPATH=/usr/local/codis/
export PATH=$PATH:$GOROOT/bin
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
export PATH=$PATH:/usr/local/codis/src/github.com/CodisLabs/codis/bin/
export PATH=$PATH:/data/codis/redis/bin
source /etc/profile.d/go.sh
- 1
配置启动Codis各组件—-启动Redis
codis服务器
vim /data/codis/redis/redis-6379/redis.conf
daemonize yes
pidfile /data/codis/run/redis-6379.pid
port 6379
tcp-backlog 65535
bind 0.0.0.0
timeout 0
tcp-keepalive 0
loglevel notice
logfile "/data/codis/log/redis-6379.log"
databases 16
lua-time-limit 5000
maxclients 10000
###慢日志参数###
slowlog-log-slower-than 10000
slowlog-max-len 128
###内存参数###
maxmemory 3G
maxmemory-policy noeviction
###RDB持久化参数###
#save 3600 1
#stop-writes-on-bgsave-error yes
#rdbcompression yes
#rdbchecksum yes
#dbfilename dump.rdb
###AOF持久化参数###
#no-appendfsync-on-rewrite yes
#appendonly yes
#appendfilename "appendonly.aof"
#appendfsync no
#auto-aof-rewrite-min-size 512mb
#auto-aof-rewrite-percentage 100
#aof-load-truncated yes
#aof-rewrite-incremental-fsync yes
###客户端Buffer参数###
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
###其他参数###
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
hll-sparse-max-bytes 3000
activerehashing yes
latency-monitor-threshold 0
###安全参数###
#requirepass 123456789
vim /data/codis/redis/redis-6380/redis.conf
###基本参数###
daemonize yes
pidfile /data/codis/run/redis-6380.pid
port 6380
tcp-backlog 65535
bind 0.0.0.0
timeout 0
tcp-keepalive 0
loglevel notice
logfile "/data/codis/log/redis-6380.log"
databases 16
lua-time-limit 5000
maxclients 10000
###慢日志参数###
slowlog-log-slower-than 10000
slowlog-max-len 128
###内存参数###
maxmemory 3G
maxmemory-policy noeviction
###RDB持久化参数###
#save 3600 1
#stop-writes-on-bgsave-error yes
#rdbcompression yes
#rdbchecksum yes
#dbfilename dump.rdb
###AOF持久化参数###
no-appendfsync-on-rewrite yes
appendonly yes
appendfilename "appendonly.aof"
appendfsync no
auto-aof-rewrite-min-size 512mb
auto-aof-rewrite-percentage 100
aof-load-truncated yes
aof-rewrite-incremental-fsync yes
###客户端Buffer参数###
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
###其他参数###
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
hll-sparse-max-bytes 3000
activerehashing yes
latency-monitor-threshold 0
###安全参数###
#requirepass 123456789
使用codis-server启动redis
codis-server /data/codis/redis/redis-6379/redis.conf
codis-server /data/codis/redis/redis-6380/redis.conf
配置启动Codis各组件—启动dashboard(集群中某一个节点)
生成默认的配置文件:
codis-dashboard --default-config | tee /data/codis/conf/dashboard.toml
- 1
修改配置文件
# Set Coordinator, only accept "zookeeper" & "etcd"
coordinator_name = "zookeeper"
coordinator_addr = "172.25.21.4:2181,172.25.21.6:2181,172.25.21.7:2181"
# Set Codis Product {Name/Auth}.
product_name = "codis-demo"
product_auth = ""
# Set bind address for admin(rpc), tcp only.
admin_addr = "0.0.0.0:18080"
#配置文件参数说明:
coordinator_name:外部存储类型,接受zookeeper/etcd,这里我们使用的zookeeper集群。
coordinator_addr:外部存储地址。
product_name:集群名称,满足正则\w[\w\.\-]*。
product_auth:集群密码,默认为空。
admin_addr:RESTful API端口。
启动dashboard
nohup codis-dashboard --ncpu=2 --config=/data/codis/conf/dashboard.toml --log=/data/codis/log/dashboard.log --log-level=WARN &
- 1
参数解释:
–ncpu=N:最大使用CPU个数。
-c CONF, –config=CONF:指定启动配置文件。
-l FILE, –log=FILE:设置log输出文件。
–log-level=LEVEL:设置log输出等级:INFO,WARN,DEBUG,ERROR,默认INFO,推荐WARN。
PS:dashboard只需要在一个节点启动即可,启动时会向zookeeper注册信息(topom),如果有其他节点也启动dashboard时,向zookeeper注册信息发现里面有信息时,就会无法启动的。
配置启动Codis各组件—-启动codis-proxy(集群中所有节点)
生成默认的配置文件:
codis-proxy --default-config | tee /data/codis/conf/proxy.toml
- 1
vim /data/codis/conf/proxy.toml
product_name = "codis-demo"
product_auth = ""
admin_addr = "0.0.0.0:11080"
proto_type = "tcp4"
proxy_addr = "0.0.0.0:19000"
jodis_addr = "10.0.60.152:2181,10.0.60.153:2181,10.0.60.154:2181"
jodis_timeout = 10
backend_ping_period = 5
session_max_timeout = 1800
session_max_bufsize = 131072
session_max_pipeline = 1024
session_keepalive_period = 60
#配置文件参数介绍:
product_name:产品名称, 这个codis集群的名字, 可以认为是命名空间, 不同命名空间的codis没有交集。
product_auth:集群密码,默认为空。Codis 3.x支持AUTH,但是要求所有组件使用的AUTH必须完全相同。
admin_addr:RESTful API端口。
proto_type:Redis端口类型,接受tcp/tcp4/tcp6/unix/unixpacket。
proxy_addr:Redis端口地址或者路径。
jodis_addr:Jodis注册zookeeper地址。
jodis_timeout:Jodis注册session timeout时间,单位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 codis-proxy --ncpu=2 --config=/data/codis/conf/proxy.toml --log=/data/codis/log/proxy.log --log-level=WARN &
- 1
codis-proxy启动后,处于waiting状态,监听proxy_addr地址,但是不会accept连接,添加到集群并完成集群状态的同步,才能改变状态为online。
通过codis-fe添加。
配置启动Codis组件—启动codis-fe
生成默认的配置文件:
codis-admin --dashboard-list --zookeeper=127.0.0.1:2181 | tee /data/codis/conf/codis.json
- 1
vim /data/codis/conf/codis.json
[
{
"name": "codis-demo",
"dashboard": "172.25.21.4:18080"
}
]