简介

Codis配置依赖于zookeeper,可以独立部署一套zookeeper集群。

服务可以使用supervisor进行管理

下载软件

jdk可以使用jdk1.8:jdk1.8下载地址

zookeeper使用3.4.14版本:华为云镜像zookeeper下载地址

Codis最新版本:codis3.2.2-go1.9.2-linux.tar.gz

主机名配置

dashboard在添加proxy的时候会识别主机名,可以利用dns解析,但是最快的就是直接添加到/etc/hosts,集群内的所有机器都添加上,防止之后如果dashboard迁移,忘记配置,导致启动失败。

10.100.1.10  server10
10.100.1.11  server11
10.100.1.12  server12

zookeeper集群

修改配置文件

zookeeper/conf/zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/codis/zookeeper
clientPort=2181
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=10.100.1.10:12888:13888
server.2=10.100.1.11:12888:13888
server.3=10.100.1.12:12888:13888

记得在对应主机上设置myididserver.后面的数字一样就可以了。

echo 1 > /data/codis/zookeeper/myid

Codis配置

使用命令生成dashboardproxy默认配置文件

mkdir -p config
./codis-dashboard  --default-config | tee config/dashboard.toml
 ./codis-proxy  --default-config | tee config/proxy.toml

记得设置product_auth,这个密码要跟codis-server的密码一样。

proxy上还有一个session_auth,这个是连接时候的验证密码,可以跟product_auth不一样。

codis-server配置 , 我这里使用supervisor管理,所以就不用daemon模式了

daemonize no
protected-mode no
pidfile "/data/codis/pids/redis_7001.pid"
port 7001
timeout 60
loglevel warning
logfile "/data/codis/logs/codis-server-7001.log"
databases 16
rdbcompression yes
dbfilename "dump-7001.rdb"
dir "/data/codis/data"
maxmemory 5gb
maxmemory-policy volatile-lru
appendonly yes
appendfilename "appendonly7001.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 100000
slowlog-max-len 1024
hz 50
aof-rewrite-incremental-fsync yes
masterauth "xxxxxxxxxxxxxxxxxxxx"
requirepass "xxxxxxxxxxxxxxxxxxxx"

可以根据上面的模板,生成多个节点的配置。

生成哨兵配置

port 26379
protected-mode no
daemonize no

配置supervisor

安装supervisor

yum -y install supervisor

由于systemd的句柄和进程数都有限制,不能满足我们的需求,需要修改/usr/lib/systemd/system/supervisord.service文件。

vim /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target

[Service]
Type=forking
LimitNOFILE=40960
LimitNPROC=40960
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf

[Install]
WantedBy=multi-user.target

需要重载配置,才能生效。

systemctl daemon-reload

配置supervisor

dashboard.ini

[program:codis-dashboard]
command=/opt/codis/codis-dashboard --ncpu=6 --config=/opt/codis/config/dashboard.toml --log=/data/codis/logs/dashboard.log --log-level=WARN 
stdout_logfile=/data/codis/logs/codis-dashboard-supervisor_out.log
stderr_logfile=/data/codis/logs/codis-dashboard-supervisor_err.log 

proxy.ini

[program:codis-proxy]
command=/opt/codis/codis-proxy --ncpu=8 --config=/opt/codis/config/proxy.toml --log=/data/codis/logs/proxy.log --log-level=WARN 
stdout_logfile=/data/codis/logs/codis-proxy-supervisor_out.log 
stderr_logfile=/data/codis/logs/codis-proxy-supervisor_err.log  

zookeeper.ini

[program:zookeeper]
command=/opt/zookeeper/bin/zkServer.sh start-foreground
stdout_logfile=/data/codis/zookeeper/zookeeper-supervisor_out.log
stderr_logfile=/data/codis/zookeeper/zookeeper-supervisor_err.log

codis-server-7001.ini

[program:codis-server-7001]
command=/opt/codis/codis-server /opt/codis/config/7001.conf 
stdout_logfile=/data/codis/logs/codis-server-7001-supervisor_out.log
stderr_logfile=/data/codis/logs/codis-server-7001-supervisor_err.log

codis-server多个就生成多个配置文件

sentinel.ini

[program:redis-sentinel1]
command=/opt/codis/redis-sentinel /opt/codis/config/sentinel1.conf 
stdout_logfile=/data/codis/logs/redis-sentinel1-supervisor_out.log 
stderr_logfile=/data/codis/logs/redis-sentinel1-supervisor_err.log

codis-fe.ini 这里需要配置zookeeper地址

[program:codis-fe]
command=/opt/codis/codis-fe --ncpu=5 --log=/data/codis/logs/fe.log --log-level=DEBUG  --zookeeper=10.100.1.10:2181,10.100.1.11:2181,10.100.1.12:2181 --listen=0.0.0.0:8080 
stdout_logfile=/data/codis/logs/codis-fe-supervisor_out.log
stderr_logfile=/data/codis/logs/codis-fe-supervisor_err.log

supervisor加载配置

vim /etc/supervisord.conf

在最后一行追加配置所在目录

....
files = /etc/supervisord.d/*.ini  /opt/codis/supervisor/*.ini

然后启动服务

systemctl enable supervisord --now

开始部署

dashboard只能有一个进程,codis-fe也只开一个就可以了。

codis-server根据实际需要配置多个,proxy每台开一个也够用了。

所有进程启动之后,可以通过浏览器访问codis-fe端口,然后在web页面进行操作。

  1. 添加proxyNew Proxy输入:ip:11080,回车添加,多个proxy就添加多次
  2. 新建groupNew Group,输入数字:1,回车添加,多个就依次增加
  3. 添加codis-server到对应分组:"Add ServerData Center 可以不用设置,设置server地址,然后对应组就可以了(注意主从的分散)
  4. 添加完所有的分组和主从之后记得点击SLAVEOF按钮(绿色小扳手按钮),然后在Add Server下,设置rs:点击ENABLE ALL ,再点击SYNC ALL
  5. Reebalance All Slots自动分配slot,然后就可以开始用了。