前言

部署zookeeper+codis集群请先按以下链接部署zookeeper,再回来继续。
有问题可留言

zookeeper-3.4.14集群安装部署
https://blog.csdn.net/yuhuochengshi/article/details/102785456

一、服务版本说明

服务 版本号 备注
codis codis-3.2.0
codis3.2.0-go1.8.1 codis3.2.0-go1.8.1-linux

二、部署环境

三、下载路径

codis3.2.0下载地址:
https://github.com/CodisLabs/codis/releases
Codis官网地址:
https://github.com/CodisLabs/codis

四、安装约定并创建目录

安装包存放目录:/data/software/codis
安装目录:/usr/local/codis

[root@yhcs_1 ~]# mkdir -p /data/software/codis
[root@yhcs_1 ~]# mkdir -p /usr/local/codis

五、上传tar包并解压

[root@yhcs_1 ~]# cd /data/software/codis
[root@yhcs_1 codis]# rz -E
rz waiting to receive.
[root@yhcs_1 codis]# tar -zxvf codis-3.2.0.tar.gz -C /usr/local/codis/
[root@yhcs_1 codis]# tar -zxvf codis3.2.0-go1.8.1-linux.tar.gz -C /usr/local/codis/codis-3.2.0/
[root@yhcs_1 codis]# cd /usr/local/codis/codis-3.2.0/
[root@yhcs_1 codis-3.2.0]# ls
admin codis3.2.0-go1.8.1-linux doc extern MIT-LICENSE.txt scripts wandoujia_license.txt
ansible config Dockerfile Godeps pkg vendor
cmd deploy example Makefile README.md version
[root@yhcs_1 codis-3.2.0]# mv codis3.2.0-go1.8.1-linux/ bin
[root@yhcs_1 codis-3.2.0]# ls
admin cmd doc extern MIT-LICENSE.txt scripts wandoujia_license.txt
ansible config Dockerfile Godeps pkg vendor
bin deploy example Makefile README.md version
[root@yhcs_1 codis-3.2.0]# cd bin/
[root@yhcs_1 bin]# ls
assets codis-dashboard codis-proxy redis-benchmark version
codis-admin codis-fe codis-server redis-cli
[root@yhcs_1 bin]#

六、修改配置文件

(一)修改dashboard.toml
[root@yhcs_1 config]# cat /usr/local/codis/codis-3.2.0/config/dashboard.toml |grep -v ^#| grep -v ^$
coordinator_name = “zookeeper”
coordinator_addr = “192.168.43.176:2181,192.168.43.177:2181,192.168.43.178:2181”
product_name = “codis-zoo”
product_auth = “”
admin_addr = “192.168.43.176:18080”
migration_method = “semi-async”
migration_parallel_slots = 100
migration_async_maxbulks = 200
migration_async_maxbytes = “32mb”
migration_async_numkeys = 500
migration_timeout = “30s”
sentinel_quorum = 2
sentinel_parallel_syncs = 1
sentinel_down_after = “3s”
sentinel_failover_timeout = “5m”
sentinel_notification_script = “”
sentinel_client_reconfig_script = “”

(二)修改fe启动脚本
[root@yhcs_1 ~]# vi /usr/local/codis/codis-3.2.0/admin/codis-fe-admin.sh
… …
COORDINATOR_NAME=“zookeeper”
COORDINATOR_ADDR=“192.168.43.176:2181,192.168.43.177:2181,192.168.43.178:2181”
CODIS_FE_ADDR=“192.168.43.176:9090”
… …

(三)修改proxy.toml
[root@yhcs_1 ~]# cd /usr/local/codis/codis-3.2.0/config/
[root@yhcs_1 config]# cat proxy.toml |grep -v ^#|grep -v ^$
product_name = “codis-zoo”
product_auth = “”
session_auth = “”
admin_addr = “192.168.43.176:11080”
proto_type = “tcp4”
proxy_addr = “192.168.43.176:19000”
jodis_name = “zookeeper”
jodis_addr = “192.168.43.176:2181,192.168.43.177:2181,192.168.43.178:2181”
jodis_timeout = “20s”
jodis_compatible = false
proxy_datacenter = “”
proxy_max_clients = 1000
proxy_max_offheap_size = “1024mb”
proxy_heap_placeholder = “256mb”
backend_ping_period = “5s”
backend_recv_bufsize = “128kb”
backend_recv_timeout = “30s”
backend_send_bufsize = “128kb”
backend_send_timeout = “30s”
backend_max_pipeline = 20480
backend_primary_only = false
backend_primary_parallel = 1
backend_replica_parallel = 1
backend_keepalive_period = “75s”
backend_number_databases = 16
session_recv_bufsize = “128kb”
session_recv_timeout = “30m”
session_send_bufsize = “64kb”
session_send_timeout = “30s”
session_max_pipeline = 10000
session_keepalive_period = “75s”
session_break_on_failure = false
metrics_report_server = “”
metrics_report_period = “1s”
metrics_report_influxdb_server = “”
metrics_report_influxdb_period = “1s”
metrics_report_influxdb_username = “”
metrics_report_influxdb_password = “”
metrics_report_influxdb_database = “”
metrics_report_statsd_server = “”
metrics_report_statsd_period = “1s”
metrics_report_statsd_prefix = “”

(四)修改codis-proxy-admin.sh
[root@yhcs_1 ~]# cd /usr/local/codis/codis-3.2.0/admin/
[root@yhcs_1 admin]# vi codis-proxy-admin.sh
CODIS_DASHBOARD_ADDR=“192.168.43.176:18080”
………………
–ncpu=4 #修改此处。根据服务器机器的cpu数量填写

(五)修改配置文件redis.conf
#具体的优化还需根据需求调节
[root@yhcs_1 ~]# cd /usr/local/codis/codis-3.2.0/config
[root@yhcs_1 config]# cat redis.conf |grep -v ^#|grep -v ^$
bind 192.168.43.176
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /usr/local/codis/codis-3.2.0/redis_6379.pid
loglevel notice
logfile “/usr/local/codis/codis-3.2.0/log/redis_6379.log”
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /usr/local/codis/codis-3.2.0/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename “appendonly.aof”
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events “”
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
maxmemory 8gb
#定义redis最大内存使用情况,根据环境不同进行定义,一般为服务器内存的3/4

(六)修改codis-server-admin.sh
[root@yhcs_1 ~]# cd /usr/local/codis/codis-3.2.0/admin/
[root@yhcs_1 admin]# cat codis-server-admin.sh |grep -v ^#|grep -v ^$
CODIS_ADMIN="${BASH_SOURCE-KaTeX parse error: Expected 'EOF', got '}' at position 2: 0}̲" CODIS_ADMIN="(dirname “CODISADMIN")"CODISADMINDIR="{CODIS_ADMIN}")" CODIS_ADMIN_DIR="CODISA​DMIN")"CODISA​DMIND​IR="(cd “CODISADMIN";pwd)"CODISBINDIR={CODIS_ADMIN}"; pwd)" CODIS_BIN_DIR=CODISA​DMIN";pwd)"CODISB​IND​IR=CODIS_ADMIN_DIR/…/bin
CODIS_LOG_DIR=CODISADMINDIR/../logCODISCONFDIR=CODIS_ADMIN_DIR/../log CODIS_CONF_DIR=CODISA​DMIND​IR/../logCODISC​ONFD​IR=CODIS_ADMIN_DIR/…/config
CODIS_SERVER_BIN=CODISBINDIR/codis−serverCODISSERVERPIDFILE=/usr/local/codis/codis−3.2.0/redis6379.pidCODISSERVERLOGFILE=/usr/local/codis/codis−3.2.0/log/redis6379.logCODISSERVERDAEMONFILE=CODIS_BIN_DIR/codis-server CODIS_SERVER_PID_FILE=/usr/local/codis/codis-3.2.0/redis_6379.pid CODIS_SERVER_LOG_FILE=/usr/local/codis/codis-3.2.0/log/redis_6379.log CODIS_SERVER_DAEMON_FILE=CODISB​IND​IR/codis−serverCODISS​ERVERP​IDF​ILE=/usr/local/codis/codis−3.2.0/redis6​379.pidCODISS​ERVERL​OGF​ILE=/usr/local/codis/codis−3.2.0/log/redis6​379.logCODISS​ERVERD​AEMONF​ILE=CODIS_LOG_DIR/codis-server.out
CODIS_SERVER_CONF_FILE=$CODIS_CONF_DIR/redis.conf
echo $CODIS_SERVER_CONF_FILE
if [ ! -d $CODIS_LOG_DIR ]; then
mkdir -p $CODIS_LOG_DIR
fi
case 1instart)echo"startingcodis−server..."if[−f"1 in start) echo "starting codis-server ... " if [ -f "1instart)echo"startingcodis−server..."if[−f"CODIS_SERVER_PID_FILE” ]; then
if kill -0 cat "$CODIS_SERVER_PID_FILE" > /dev/null 2>&1; then
echo commandalreadyrunningasprocess‘cat"command already running as process `cat "commandalreadyrunningasprocess‘cat"CODIS_SERVER_PID_FILE”`.
exit 0
fi
fi
nohup “CODISSERVERBIN""CODIS_SERVER_BIN" "CODISS​ERVERB​IN""{CODIS_SERVER_CONF_FILE}” > “KaTeX parse error: Expected 'EOF', got '&' at position 29: …DAEMON_FILE" 2>&̲1 < /dev/null &…CODIS_SERVER_PID_FILE” ]
then
echo “no codis-server to stop (could not find file $CODIS_SERVER_PID_FILE)”
else
kill -2 (cat"(cat "(cat"CODIS_SERVER_PID_FILE")
echo STOPPED
fi
exit 0
;;
stop-forced)
echo “stopping codis-server … "
if [ ! -f “$CODIS_SERVER_PID_FILE” ]
then
echo “no codis-server to stop (could not find file $CODIS_SERVER_PID_FILE)”
else
kill -9 (cat"(cat "(cat"CODIS_SERVER_PID_FILE”)
rm “$CODIS_SERVER_PID_FILE”
echo STOPPED
fi
exit 0
;;
restart)
shift
“$0” stop
sleep 1
“$0” start
;;
*)
echo “Usage: $0 {start|stop|stop-forced|restart}” >&2
esac

(七)修改sentinel.conf
[root@yhcs_1 config]# cat sentinel.conf |grep -v ^#|grep -v ^$
protected-mode no
port 26379
dir /usr/local/codis/codis-3.2.0
(八)编写sentinel启动脚本
#原安装不带该脚本,该脚本需要自己写(没有自己研究,借用朋友写好的)
[root@yhcs_1 admin]# cat codis-sentinel-admin.sh
#!/bin/bash
SENTINEL_BIN_DIR=/usr/local/codis/codis-3.2.0/bin/codis-server
SENTINEL_CONF_DIR=/usr/local/codis/codis-3.2.0/config/sentinel.conf
SENTINEL_PORT=26379
SENTINEL_STATUS=netstat -ntlp |grep -w 26379 |awk -F'[ /]+' '{print $7}' | wc -l
SENTINEL_PID=netstat -ntlp |grep -w 26379 |awk -F'[ /]+' '{print $7}'
case 1instart)echo"startingcodis−sentinel..."if["1 in start) echo "starting codis-sentinel ..." if [ "1instart)echo"startingcodis−sentinel..."if["SENTINEL_STATUS" -eq 0 ];then
$SENTINEL_BIN_DIR SENTINELCONFDIR−−sentinelelseecho"codis−sentinelalreadyrunningasprocess"fi;;stop)echo"stopingcodis−sentinel..."if["SENTINEL_CONF_DIR --sentinel else echo "codis-sentinel already running as process" fi ;; stop) echo "stoping codis-sentinel ..." if [ "SENTINELC​ONFD​IR−−sentinelelseecho"codis−sentinelalreadyrunningasprocess"fi;;stop)echo"stopingcodis−sentinel..."if["SENTINEL_STATUS" -eq 0 ];then
echo “codis-sentinel already stop”
else
kill -9 $SENTINEL_PID
fi
;;
*)
echo “Usage: $0 {start|start-foreground|stop|stop-forced|restart}”
;;
esac

七、设置防火墙

#本次关闭防火墙进行测试,有需要的自己开端口,设置自启就行了
[root@yhcs_1 ~]# systemctl stop firewalld.service
[root@yhcs_1 ~]# systemctl disable firewalld.service

八、按顺序启动服务

(一)启动dashboard
#只需启动一台的dashboard即可
[root@yhcs_1 ~]# /usr/local/codis/codis-3.2.0/admin/codis-dashboard-admin.sh start
/usr/local/codis/codis-3.2.0/admin/…/config/dashboard.toml
starting codis-dashboard …
(二)启动fe
#启动一台的fe即可,也可都启动(3台IP:9090都可以访问)
[root@yhcs_1 ~]# /usr/local/codis/codis-3.2.0/admin/codis-fe-admin.sh start

starting codis-fe …
(三)启动proxy
[root@yhcs_1 ~]# /usr/local/codis/codis-3.2.0/admin/codis-proxy-admin.sh start
/usr/local/codis/codis-3.2.0/admin/…/config/proxy.toml
starting codis-proxy …
(四)启动codis-server
[root@yhcs_1 ~]# /usr/local/codis/codis-3.2.0/admin/codis-server-admin.sh start
/usr/local/codis/codis-3.2.0/admin/…/config/redis.conf
starting codis-server …

(五)启动codis-sentinel
[root@yhcs_1 admin]# /usr/local/codis/codis-3.2.0/admin/codis-sentinel-admin.sh start &
#启动哨兵后需要在web页面点击sync,把配置刷进去,具体操作下文有提到

九、日志查看路径

[root@yhcs_1 ~]# cd /usr/local/codis/codis-3.2.0/log/
[root@yhcs_1 log]# ls
codis-dashboard.log.2019-10-30 codis-dashboard.out codis-fe.log.2019-10-30 codis-fe.out codis-proxy.log.2019-10-30 codis-proxy.out codis-server.out redis_6379.log

十、Web 界面添加组件

#在以上所有的组件安装完毕之后,我们还没定义相关的redis主从状态关系。以往我们是直接在配置文件里设置主从状态和设置sentinel。Codis可以在web界面直接配置相关内容。

#登录web页面端口为fe启动文件里填写的端口。我只启动了176的fe,因此在浏览器输入192.168.43.176:9090 回车即可
(一)添加proxy

(二)添加redis
1、先确定要分为几个组,分几个组就添加几个

2、在组内添加redis

3、设置主从状态
点击黄色按钮PROMOTE设置为主;点击绿色扳手按钮设置从关系。
设置之后状态为

(三)添加sentinel

添加后点击sync,哨兵的配置文件就自动生成了

#查看下哨兵配置文件,本次不截图上来了

(四)平衡slots
Slots为codis自带的机制,可以用来数据平衡,迁移等操作。首次直接点击rebalance all slots按钮即可自动平衡。

十一、注意项

#各配置项不要有多余空格、以及注释(如集群那里的配置带注释容易受影响)
#codis集群维护时,需要关闭dashboard时,不能使用kill -9的命令来关闭,使用codis-dashboard-admin.sh stop命令来关闭。

#假如使用了kill -9命令关闭,或者服务器物理断电等极端情况出现,则通过删除这个lock的状态键值就可以了,例如:/usr/local/codis/codis-3.2.0/bin/codis-admin --remove-lock --product=codis-zoo --zookeeper=192.168.43.176:2181,然后重启dashboard即可解决。

#如果sentinel有错误,修复好后需要点击蓝色按钮sync同步sentinel状态。

十二、测试

#192.168.43.176通过fe界面设置为主,其他为从,测试如下
[root@yhcs_1 bin]# ./redis-cli -h 192.168.43.176 -p 6379
192.168.43.176:6379> set name 123
OK

[root@yhcs_2 bin]# ./redis-cli -h 192.168.43.178 -p 6379
192.168.43.178:6379> get name
“123”

#哨兵的测试自己百度吧,懒得回头再弄一次了

十三、参考文档

#部分文档
使用codis-admin搭建codis集群:https://www.cnblogs.com/zhoujinyi/p/9950105.html
codis3.2.1集群搭建与测试https://blog.51cto.com/arthur376/2051993

心不死,土不埋,学无止境

zookeeper-3.4.14+codis-3.2.0集群部署(详细版)相关推荐

  1. redis3.0.0 集群安装详细步骤

    2019独角兽企业重金招聘Python工程师标准>>> redis3.0.0 集群安装详细步骤 博客分类: 缓存 Redis集群部署文档(centos6系统) (要让集群正常工作至少 ...

  2. kubernetes-1.11.0集群部署之master集群 (二)

    kubernetes-1.11.0集群部署之master集群 (二) Master master 的组件有以下: 1. API ServerApi server提供HTTP/HTTPS RESTful ...

  3. Hadoop 2.0集群配置详细教程

    Hadoop 2.0集群配置详细教程 前言 Hadoop2.0介绍 Hadoop是 apache 的开源 项目,开发的主要目的是为了构建可靠,可拓展 scalable ,分布式的系 统, hadoop ...

  4. Kafka集群部署详细步骤(包含zookeeper安装步骤)

    Kafka集群部署 注意:如果jdk1.8和zookeeper都安装设置过之后可以直接安装kafka跳过其它步骤 kafka基础简介及基本命令 1.环境准备 1.1集群规划 node01  node0 ...

  5. Spark 2.2.0 集群部署

    环境说明 服务器1 主机名:node201 IP:10.0.0.201 OS: centos 7.4 hadoop: NameNode, ResourceManager, SecondaryNameN ...

  6. codis集群部署实战

    一.概要 1.折腾codis集群已经快两个月了,感谢一直以来codis的作者刘奇和黄东旭的耐心支持,在这里给你们点个赞,现在我司已经有一个业务跑在了 codis集群上,目前只是切了整个业务的10%的量 ...

  7. 大数据生态(六)zookeeper集群部署(Linux和Windows[含一键启动脚本])

    目录 前言 1.解压安装Zookeeper到/e3base/zookeeper目录下 2 .创建$E3_INFO_HOME/zookeeper目录 3 .创建数据目录和日志目录 4.配置环境变量 4. ...

  8. php codis,codis集群部署实战

    codis介绍 Codis是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (有一些命令不支持), 上 ...

  9. zookeeper+kafka集群部署+storm集群

    zookeeper+kafka集群部署+storm集群 一.环境安装前准备: 准备三台机器 操作系统:centos6.8 jdk:jdk-8u111-linux-x64.gz zookeeper:zo ...

最新文章

  1. rs232串口驱动_LED驱动电路设计
  2. JS验证框架的使用方法
  3. 【队列】队列的基本操作总结
  4. Oracle数据库之过滤和排序
  5. 人工智能用python还是java_学会java和python语言,可以开始搞人工智能吗?
  6. const 作用 c语言,在C语言中const 作用的的全面总结.doc
  7. Exif文件格式描述
  8. 光纤测试时怎么选择对应项目的测试标准及测试仪?
  9. C++——已知a+b、 a+c、b+c、 a+b+c,求a、b、 c
  10. Centos7 安装Mysql5.7
  11. 语音合成 | 精选论文汇总(197篇)
  12. python绘制多边形样例_Python PIL ImageDraw.Draw.polygon()用法及代码示例
  13. 使用Asp.net MVC源代码调试你的应用程序
  14. 一个对象对应多个对象如何在一个界面里实现新增_谈MDM主数据管理系统设计和实现关键点...
  15. Android studio xpose的使用
  16. 高阶技术管理岗空降落地实践指南
  17. mysql杀掉sql语句,Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
  18. vlan配置实例详解_网工知识角|MUXVLAN技术详解,基本原理一篇搞定
  19. 调用JavaAPI发送传真
  20. js用正则表达式完成邮箱验证

热门文章

  1. IT龙门阵92期预告:微软张宏江谈Win 7中国研发者的智慧与心血
  2. 自主招生 计算机类 自荐信,自主招生类自荐信范文
  3. word函数公式大全 常见的excel函数公式 excel工作中经常用到的函数
  4. python编程樱花盛开_不出门也能赏樱,武大学生用python敲出樱花开放
  5. Linux征途——开发工具(下)
  6. 雷蛇电脑原厂预装出厂系统恢复镜像
  7. SVN 提示 Failed to run the WC DB work queue 错误解决
  8. python从入门到实践13章答案
  9. 读《Fusion of Partition Local Binary Patterns and Convolutional Neural Networks for Dorsal Hand Vein 》
  10. 儿童语言发育迟缓分类中C群d是指,(S—S法)语言发育迟缓检查(CRRC版)