codis是一个分布式redis集群架构,在数据量和并发量都很大的业务场景,我们在使用单点redis的时候,往往会受到内存和cpu的限制,这个时候引入codis的集群架构,可以满足大数据量和高并发的业务场景。
github地址:https://github.com/CodisLabs/codis
Codis 3.2 组件组成:
Codis Server:数据节点,每个server相当于一个redis
Zookeeper : 存放数据路由表和codis-proxy节点的元信息
Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议.除部分命令不支持以外,表现的和原生的 Redis 没有区别。
对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例;
不同 codis-proxy 之间由 codis-dashboard 保证状态同步。
Codis Dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及数据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。
对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;
所有对集群的修改都必须通过 codis-dashboard 完成。
Codis Admin:集群管理的命令行工具。
可用于控制 codis-proxy、codis-dashboard 状态以及访问外部存储。
Codis FE:集群管理界面。
多个集群实例共享可以共享同一个前端展示页面;
通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。
Storage:为集群状态提供外部存储。
提供 Namespace 概念,不同集群的会按照不同 product name 进行组织;
目前仅提供了 Zookeeper、Etcd、Fs 三种实现,但是提供了抽象的 interface 可自行扩展。
Redis Sentinel:哨兵进程,监控codis每组server的主从状态,在主出现故障时,从自动切换成主(不是瞬切,需要一定的时间)
架构规划:
操作系统:centos 7.5
服务器规划:
172.19.14.21 codis-proxy1(zk-1,proxy1,sentinel)172.19.14.22 codis-proxy2(zk-2,proxy2,sentinel)172.19.14.23 codis-proxy3(zk-3,proxy3,sentinel,dashboard,fe)172.19.14.26 codis-server1(master,slave)172.19.14.27 codis-server2(master,slave)172.19.14.28 codis-server3(master,slave)
安装步骤:
一 、配置hosts文件(所有服务器)
vim etc/hosts
172.19.14.21 codis-proxy1172.19.14.22 codis-proxy2172.19.14.23 codis-proxy3172.19.14.26 codis-server1172.19.14.27 codis-server2172.19.14.28 codis-server3
修改network文件,根据host修改每个节点的hostname
vim etc/sysconfig/network
NETWORKING=yesHOSTNAME=codis-proxy3
ps:使hostname立即生效
hostname codis-proxy3
二、安装zk(proxy节点)
1. 下载zk安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
2. 安装java环境
zk要求java6以上版本
yum -y install java-1.8.0-openjdk-develjava -versionopenjdk version "1.8.0_232"OpenJDK Runtime Environment (build 1.8.0_232-b09)OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
3. 安装zk
tar zxvf zookeeper-3.4.14.tar.gzmv zookeeper-3.4.14 usr/local/mkdir -p appl/zookeeper/{data,logs}
4. 修改配置文件
[root@codis-proxy1 conf]# vim zoo.cfg
tickTime=2000initLimit=5syncLimit=2dataDir=/var/zookeeper/datadataLogDir=/appl/zookeeper/logsclientPort=2181server.1=codis-proxy1:2888:3888server.2=codis-proxy2:2888:3888server.3=codis-proxy3:2888:3888
5. 配置myid
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字
[root@codis-proxy1 ~]# echo 1 > appl/zookeeper/data/myid[root@codis-proxy2 ~]# echo 2 > /appl/zookeeper/data/myid[root@codis-proxy3 ~]# echo 3 > /appl/zookeeper/data/myid
6. 启动zookeeper
启动顺序zookeeper-1>zookeeper-2>zookeeper-3
[root@codis-proxy1]# usr/local/zookeeper/bin/zkServer.sh startJMX enabled by defaultUsing config: usr/local/zookeeper/bin/../conf/zoo.cfgStarting zookeeper ... STARTED[root@codis-proxy1]# usr/local/zookeeper/bin/zkServer.sh statusJMX enabled by defaultUsing config: usr/local/zookeeper/bin/../conf/zoo.cfgMode: leader
启动完查看各节点zk状态,可以看到是1主2从结构 ( leader follower observer)
三、安装codis(codis_server和proxy机器上)
1. 安装go
下载go安装包
wget https://studygolang.com/dl/go1.13.3.linux-amd64.tar.gz
解压,移动到指定目录
tar -zxvf go1.13.3.linux-amd64.tar.gzmv go usr/local/
修改环境变量
vim ~/.bash_profile
export GOROOT=/usr/local/goexport CODISPATH=/usr/local/codisexport GOPATH=/usr/local/codisexport PATH=$PATH:$GOROOT/bin:$CODISPATH/bin:$GOPATH/bin
source ~/.bash_profile #使环境变量生效
查看go环境是否安装成功
[root@localhost software]# go versiongo version go1.13.3 linux/amd64
下载go语言开发包
go get github.com/tools/godep
此时的godep程序保存路径为: $GOPATH/src/github.com/tools/godep
将godep程序保存在"$GOPATH/bin",利用go语言的命令实现
cd $GOPATH/src/github.com/tools/godepgo install ./
此时在$GOPATH/bin目录之中,会自动出现一个"godep"程序文件,证明go完成
2. 人工配置codis开发包
下载地址:https://github.com/CodisLabs/codis
上传codis-release3.2.zip到服务器,将包解压到$GOPATH/src/github.com/CodisLabs目录下
unzip codis-release3.2.zip -d $GOPATH/src/github.com/CodisLabs
修改目录
mv codis-release3.2/ codis/
进入codis源代码所在的目录,进行编译安装
cd $GOPATH/src/github.com/CodisLabs/codis/make
srcroot :abs_srcroot : usr/local/codis/src/github.com/CodisLabs/codis/vendor/github.com/spinlock/jemalloc-go/jemalloc-4.4.0/objroot :abs_objroot : usr/local/codis/src/github.com/CodisLabs/codis/vendor/github.com/spinlock/jemalloc-go/jemalloc-4.4.0/JEMALLOC_PREFIX : je_JEMALLOC_PRIVATE_NAMESPACE: je_install_suffix :malloc_conf :autogen : 1cc-silence : 1debug : 0code-coverage : 0stats : 1prof : 0prof-libunwind : 0prof-libgcc : 0prof-gcc : 0tcache : 1fill : 1utrace : 0valgrind : 0xmalloc : 0munmap : 0lazy_lock : 0tls : 1cache-oblivious : 1===============================================================================go build -i -o bin/codis-dashboard ./cmd/dashboardgo build -i -tags "cgo_jemalloc" -o bin/codis-proxy ./cmd/proxygo build -i -o bin/codis-admin ./cmd/admingo build -i -o bin/codis-ha ./cmd/hago build -i -o bin/codis-fe ./cmd/fe
无报错,编译成功,为了方便管理,重新建立个目录
$ mkdir -p usr/local/codis/{logs,conf,scripts}
logs:保存所有的日志数据
conf:保存所有的配置文件信息
将所有的可执行文件拷贝到"/usr/local/codis/"文件中
cp -r $GOPATH/src/github.com/CodisLabs/codis/bin /usr/local/codis
3.codis-bashboard部署(codis-web节点)
生成codis-dashboard配置文件
[root@codis-proxy3 conf]# vim usr/local/codis/conf/dashboard.conf
################################################### ## Codis-Dashboard ## #################################################### Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem".# for zookeeper/etcd, coorinator_auth accept "user:password"# Quick Startcoordinator_name = "zookeeper"coordinator_addr = "172.19.14.21:2181,172.19.14.22:2181,172.19.14.23:2181"#coordinator_name = "zookeeper"#coordinator_addr = "127.0.0.1:2181"#coordinator_auth = ""# Set Codis Product Name/Auth.product_name = "codis-test"product_auth = ""# Set bind address for admin(rpc), tcp only.admin_addr = "172.19.14.23:18080"# Set arguments for data migration (only accept 'sync' & 'semi-async').migration_method = "semi-async"migration_parallel_slots = 100migration_async_maxbulks = 200migration_async_maxbytes = "32mb"migration_async_numkeys = 500migration_timeout = "30s"# Set configs for redis sentinel.sentinel_client_timeout = "10s"sentinel_quorum = 2sentinel_parallel_syncs = 1sentinel_down_after = "30s"sentinel_failover_timeout = "5m"sentinel_notification_script = ""sentinel_client_reconfig_script = ""
配置dashboard启动脚本
vim usr/local/codis/scripts/start_dashboard.sh
#!/bin/shCODIS_HOME=/usr/local/codis#nohup usr/local/codis/bin/codis-dashboard --ncpu=2 --config=/usr/local/codis/conf/dashboard.conf --log=/usr/local/codis/logs/dashboard.log --log-level=WARN & &nohup $CODIS_HOME/bin/codis-dashboard --ncpu=2 --config=$CODIS_HOME/conf/dashboard.conf --log=$CODIS_HOME/log/dashboard.log --log-level=WARN&
配置dashboard停止脚本
vim usr/local/codis/scripts/start_dashboard.sh
#!/bin/shCODIS_HOME=/usr/local/codis$CODIS_HOME/bin/codis-admin --dashboard=172.19.14.23:18080 --shutdown
4. 配置codis-fe(codis-web节点)
生成codis-fe配置文件
vim usr/local/codis/conf/codis.json
[{"name": "codis-test","dashboard": "172.19.14.23:18080"}]
配置codis-fe启动脚本
vim usr/local/codis/scripts/start_codis-fe.sh
#!/bin/shCODIS_HOME=/usr/local/codisnohup $CODIS_HOME/bin/codis-fe --ncpu=2 --log=$CODIS_HOME/log/fe.log --log-level=WARN --dashboard-list=$CODIS_HOME/conf/codis.json --listen=0.0.0.0:18090 &
5. 配置proxy(所有proxy节点)
vim usr/local/codis/conf/proxy.conf (各个proxy节点修改对应的admin_addr和proxy_addr)
################################################### ## Codis-Proxy ## #################################################### Set Codis Product Name/Auth.product_name = "codis-test"product_auth = ""# Set auth for client session# 1. product_auth is used for auth validation among codis-dashboard,# codis-proxy and codis-server.# 2. session_auth is different from product_auth, it requires clients# to issue AUTH <PASSWORD> before processing any other commands.session_auth = ""# Set bind address for admin(rpc), tcp only.admin_addr = "172.19.14.21:11080"# Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".proto_type = "tcp4"proxy_addr = "172.19.14.21:19000"# Set jodis address & session timeout# 1. jodis_name is short for jodis_coordinator_name, only accept "zookeeper" & "etcd".# 2. jodis_addr is short for jodis_coordinator_addr# 3. jodis_auth is short for jodis_coordinator_auth, for zookeeper/etcd, "user:password" is accepted.# 4. proxy will be registered as node:# if jodis_compatible = true (not suggested):# zk/codis/db_{PRODUCT_NAME}/proxy-{HASHID} (compatible with Codis2.0)# or else# jodis/{PRODUCT_NAME}/proxy-{HASHID}jodis_name = "zookeeper"jodis_addr = "172.19.14.21:2181,172.19.14.22:2181,172.19.14.23:2181"jodis_auth = ""jodis_timeout = "20s"jodis_compatible = false# Set datacenter of proxy.proxy_datacenter = ""# Set max number of alive sessions.proxy_max_clients = 20000# Set max offheap memory size. (0 to disable)proxy_max_offheap_size = "1024mb"# Set heap placeholder to reduce GC frequency.proxy_heap_placeholder = "256mb"# Proxy will ping backend redis (and clear 'MASTERDOWN' state) in a predefined interval. (0 to disable)backend_ping_period = "5s"# Set backend recv buffer size & timeout.backend_recv_bufsize = "128kb"backend_recv_timeout = "30s"# Set backend send buffer & timeout.backend_send_bufsize = "128kb"backend_send_timeout = "30s"# Set backend pipeline buffer size.backend_max_pipeline = 20480# Set backend never read replica groups, default is falsebackend_primary_only = false# Set backend parallel connections per serverbackend_primary_parallel = 1backend_replica_parallel = 1# Set backend tcp keepalive period. (0 to disable)backend_keepalive_period = "75s"# Set number of databases of backend.backend_number_databases = 16# If there is no request from client for a long time, the connection will be closed. (0 to disable)# Set session recv buffer size & timeout.session_recv_bufsize = "128kb"session_recv_timeout = "30m"# Set session send buffer size & timeout.session_send_bufsize = "64kb"session_send_timeout = "30s"# Make sure this is higher than the max number of requests for each pipeline request, or your client may be blocked.# Set session pipeline buffer size.session_max_pipeline = 10000# Set session tcp keepalive period. (0 to disable)session_keepalive_period = "75s"# Set session to be sensitive to failures. Default is false, instead of closing socket, proxy will send an error response to client.session_break_on_failure = false# Set metrics server (such as http://localhost:28000), proxy will report json formatted metrics to specified server in a predefined period.metrics_report_server = ""metrics_report_period = "1s"# Set influxdb server (such as http://localhost:8086), proxy will report metrics to influxdb.metrics_report_influxdb_server = ""metrics_report_influxdb_period = "1s"metrics_report_influxdb_username = ""metrics_report_influxdb_password = ""metrics_report_influxdb_database = ""# Set statsd server (such as localhost:8125), proxy will report metrics to statsd.metrics_report_statsd_server = ""metrics_report_statsd_period = "1s"metrics_report_statsd_prefix = ""
配置proxy启动脚本
vim usr/local/codis/scripts/start_codis-proxy.sh
#!/bin/shCODIS_HOME=/usr/local/codisnohup $CODIS_HOME/bin/codis-proxy --ncpu=2 --config=$CODIS_HOME/conf/proxy.conf --log=$CODIS_HOME/log/proxy.log --log-level=WARN &
配置proxy停止脚本
vim usr/local/codis/scripts/stop_codis-proxy.sh
#!/bin/shCODIS_HOME=/usr/local/codis$CODIS_HOME/bin/codis-admin --proxy=172.19.14.21:11080 --shutdown
6. 哨兵配置(所有proxy节点)
[root@codis-proxy1 conf]# vim sentinel.conf
protected-mode noport 26379dir "/tmp"
7. 配置codis_server(所有server节点)
修改内核参数
[root@codis-server1 conf]# echo "vm.overcommit_memory = 1" >> etc/sysctl.conf[root@codis-server1 conf]# sysctl -p
创建server端目录
mkdir -p var/codis_server/{run,conf,log,data}
修改server配置文件
vim var/codis_server/conf/6379.conf
bind 0.0.0.0protected-mode nodaemonize yespidfile var/run/redis_6379.pidbind 0.0.0.0protected-mode nodaemonize yespidfile var/codis_server/run/redis_6379.pidport 6379save 900 1save 300 10save 60 10000tcp-backlog 511timeout 300tcp-keepalive 0loglevel noticelogfile "/var/codis_server/log/redis_6379.log"databases 16stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename 6379.rdbdir var/codis_server/dataslave-serve-stale-data yesslave-read-only yesrepl-disable-tcp-nodelay noslave-priority 100maxclients 3000maxmemory 1gbmaxmemory-policy allkeys-lruappendonly yesappendfilename "6379_appendonly.aof"appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mblua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events ""hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000activerehashing yesclient-output-buffer-limit normal 0 0 0
vim var/codis_server/conf/6380.conf
bind 0.0.0.0protected-mode nodaemonize yespidfile var/run/redis_6380.pidbind 0.0.0.0protected-mode nodaemonize yespidfile var/codis_server/run/redis_6380.pidport 6380save 900 1save 300 10save 60 10000tcp-backlog 511timeout 300tcp-keepalive 0loglevel noticelogfile "/var/codis_server/log/redis_6380.log"databases 16stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename 6380.rdbdir var/codis_server/dataslave-serve-stale-data yesslave-read-only yesrepl-disable-tcp-nodelay noslave-priority 100maxclients 3000maxmemory 1gbmaxmemory-policy allkeys-lruappendonly yesappendfilename "6380_appendonly.aof"appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mblua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events ""hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000activerehashing yesclient-output-buffer-limit normal 0 0 0
安装过程问题记录
zk部分:
[root@mysql-master-21 data]# usr/local/zookeeper-3.4.14/bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfgError contacting service. It is probably not running.
问题处理:查看zk日志
2019-11-01 10:57:46,995 [myid:1] - WARN [QuorumPeer[myid=1]/0.0.0.0:2181:QuorumCnxManager@584] - Cannot open channel to 3 at election address codis-proxy1/172.19.14.21:3888java.net.ConnectException: Connection refused (Connection refused)at java.net.PlainSocketImpl.socketConnect(Native Method)at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:607)at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:838)at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:958)2019-11-01 10:57:46,995 [myid:1] - INFO [QuorumPeer[myid=1]/0.0.0.0:2181:QuorumPeer$QuorumServer@185] - Resolved hostname: codis-proxy1 to address: codis-proxy1/172.19.14.21
查看配置文件,配置文件中sever和主机对应顺序出错,修改后解决报错
tickTime=2000initLimit=5syncLimit=2dataDir=/var/zookeeper/data#dataLogDir=/appl/zookeeper/logsclientPort=2181server.1=codis-proxy3:2888:3888server.2=codis-proxy2:2888:3888server.3=codis-proxy1:2888:3888
codis编译报错:
报错
Hint: It's a good idea to run 'make test' ;)make[2]: Leaving directory `/usr/local/codis/src/github.com/CodisLabs/codis-release3.2/extern/redis-3.2.11/src'make[1]: Leaving directory `/usr/local/codis/src/github.com/CodisLabs/codis-release3.2/extern/redis-3.2.11'fatal: Not a git repository (or any of the parent directories): .gitautoconf./autogen.sh: line 5: autoconf: command not foundError 0 in autoconfmake[2]: *** [config] Error 1make[1]: *** [build] Error 2make: *** [codis-deps] Error 2
解决:
安装依赖
yum install autoconf automake libtool -y
解压go安装包报错
[root@localhost software]# tar -zxvf go1.13.3.linux-amd64.tar.gzgzip: stdin: not in gzip formattar: Child returned status 1tar: Error is not recoverable: exiting now
解决:
根据提示,这个包没有用gzip压缩,省略z指令,报错并没有变
[root@localhost software]# tar -xvf go1.13.3.linux-amd64.tar.gzgzip: stdin: not in gzip formattar: Child returned status 1tar: Error is not recoverable: exiting now
网上搜了下原因,大概原来是wget下来的tar省略了一些同意协议,所以安装包介质本身有点问题,手动下载好安装包后上传到服务器在解压果然解决了这个问题。
某节点通过go下载godep报错
报错1:
[root@localhost tools]# go get github.com/tools/godep# cd .; git clone -- https://github.com/CodisLabs/codis /usr/local/codis/src/github.com/CodisLabs/codiserror: RPC failed; result=56, HTTP code = 200fatal: The remote end hung up unexpectedlyfatal: early EOFfatal: index-pack failedpackage github.com/CodisLabs/codis: exit status 128
解决:
找了下资料发现是curl的postBuffer 默认值较小的原因,配置下个这个值,就不会出现该错误了
git config --global http.postBuffer 24288000000
然鹅现实是残酷的
[root@localhost tools]# go get github.com/tools/godep# cd .; git clone -- https://github.com/CodisLabs/codis /usr/local/codis/src/github.com/CodisLabs/codisfatal: Out of memory, malloc failed (tried to allocate 18446744072227747840 bytes)package github.com/CodisLabs/codis: exit status 128
最终 yum install gcc 安装了gcc环境居然好了,当然也可以直接下载源码包
地址https://github.com/tools/godep
unzip /var/software/godep-master.zip -d $GOPATH/src/github.com/tools/cd $GOPATH/src/github.com/tools/mv godep-master godep
报错2:
[root@localhost software]# go get github.com/tools/godepgo: missing Git command. See https://golang.org/s/gogetcmdpackage github.com/tools/godep: exec: "git": executable file not found in $PATH:
解决:
缺少git环境
yum -y install git
启动CODIS正常流程:
1.在zookeeper所有节点启动zookeeper服务
/usr/local/zookeeper-3.4.14/bin/zkCli.sh start
2.在codis-web启动codis-dashboard服务。
cd /usr/local/codis/scripts/sh start_dashboard.sh
3.在codis-web启动codis-fe服务。
cd /usr/local/codis/scripts/sh start_codis-fe.sh
4.在codis-proxy所有节点启动codis-proxy服务
cd /usr/local/codis/scripts/sh start_codis-proxy.sh
5.在CODIS-SERVER所有节点启动codis服务
启动codis-server服务
/usr/local/codis/bin/codis-server /appl/codis_server/conf/6379.conf/usr/local/codis/bin/codis-server /appl/codis_server/conf/6380.conf
6.在redis-sentinel所有节点启动redis-sentinel服务:
/usr/local/codis/bin/redis-sentinel /usr/local/codis/conf/sentinel.conf &
通过CODIS-FE管理面板管理CODIS集群
地址:172.19.14.23:18090

添加proxy

初始化SLOT,并分GROUP(在分group、添加CODIS后操作):

新增group后,再添加CODIS:(sync为主,promote为从,点击后,搭建主从并同步)

添加redis-sentinels:

添加完成后点击,此时查看sentinels的配置文件,会发现集群自动把集群的主备信息写入了配置文件中
[root@codis-proxy2 conf]# cat sentinel.conf
protected-mode noport 26379dir "/tmp"# Generated by CONFIG REWRITEsentinel myid b0612a76f5dd8000e7fe98609eb45dc90c925003sentinel monitor codis-test-2 172.19.14.27 6379 2sentinel failover-timeout codis-test-2 300000sentinel config-epoch codis-test-2 0sentinel leader-epoch codis-test-2 0sentinel known-slave codis-test-2 172.19.14.28 6380sentinel known-sentinel codis-test-2 172.19.14.23 26379 3019d72df0590fa5e3654ed120dad46ff97c6b2dsentinel known-sentinel codis-test-2 172.19.14.21 26379 b5c733221c83d95fe9dde5f75ecc166486b906a0sentinel monitor codis-test-1 172.19.14.26 6379 2sentinel failover-timeout codis-test-1 300000sentinel config-epoch codis-test-1 0sentinel leader-epoch codis-test-1 0sentinel known-slave codis-test-1 172.19.14.27 6380sentinel known-sentinel codis-test-1 172.19.14.23 26379 3019d72df0590fa5e3654ed120dad46ff97c6b2dsentinel known-sentinel codis-test-1 172.19.14.21 26379 b5c733221c83d95fe9dde5f75ecc166486b906a0sentinel monitor codis-test-3 172.19.14.28 6379 2sentinel failover-timeout codis-test-3 300000sentinel config-epoch codis-test-3 0sentinel leader-epoch codis-test-3 0sentinel known-slave codis-test-3 172.19.14.26 6380sentinel known-sentinel codis-test-3 172.19.14.23 26379 3019d72df0590fa5e3654ed120dad46ff97c6b2dsentinel known-sentinel codis-test-3 172.19.14.21 26379 b5c733221c83d95fe9dde5f75ecc166486b906a0sentinel current-epoch 1
至此,整个集群的搭建配置工作完成,因为后续采用了硬件设备实现的proxy的高可用,并没有在此使用keepalived_lvs。




