千家信息网

codis 3.2集群单机环境安装

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,codis 3.2集群单机环境安装一、软件环境系统:centos 6.5Jdk:jdk-8u111-linux-x64.gzgo : go1.7.3.linux-amd64.tar.gzzookeep
千家信息网最后更新 2025年12月03日codis 3.2集群单机环境安装

codis 3.2集群单机环境安装

一、软件环境

系统:centos 6.5

Jdkjdk-8u111-linux-x64.gz

go : go1.7.3.linux-amd64.tar.gz

zookeeper: zookeeper-3.4.6.tar.gz

本机IP172.16.40.131

软件下载地址:

codishttps://github.com/CodisLabs/codis

zookeeperhttps://zookeeper.apache.org/

gohttp://golangtc.com/download

二、部署zookeeper集群

1.安装相关依赖包

yum install -y gcc makegcc-c++ automake lrzsz openssl-devel zlib-* bzip2-* readline* git nmap unzipwget lsof xz net-tools mercurial

2.安装java

tar zxvfjdk-8u111-linux-x64.gz -C /usr/local/

cd /usr/local/

ln -sv jdk1.8.0_111 java

修改环境变量

vi /etc/profile

JAVA_HOME=/usr/local/java

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

让环境变量生效

source /etc/profile

查看JAVA版本

java -version

java version "1.8.0_111"

Java(TM) SE Runtime Environment (build1.8.0_111-b14)

Java HotSpot(TM) 64-Bit Server VM (build25.111-b14, mixed mode)

3.安装zookeeper

mkdir /{app,appdata}

cd /app

mkdir -pv ./{zk1,zk2,zk3}/{data,log}

tar zxvf zookeeper-3.4.6.tar.gz -C /app/zk1/

tar zxvf zookeeper-3.4.6.tar.gz -C /app/zk2/

tar zxvf zookeeper-3.4.6.tar.gz -C /app/zk3/

ln -sv /app/zk1/zookeeper-3.4.6 /app/zk1/zookeeper

ln -sv /app/zk2/zookeeper-3.4.6 /app/zk2/zookeeper

ln -sv /app/zk3/zookeeper-3.4.6 /app/zk3/zookeeper

cp /app/zk1/zookeeper/conf/zoo_sample.cfg/app/zk1/zookeeper/conf/zoo.cfg

修改zoo.cfg配置文件

vi /app/zk1/zookeeper/conf/zoo.cfg

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting anacknowledgement

syncLimit=5

# the directory where the snapshot isstored.

# do not use /tmp for storage, /tmp here isjust

# example sakes.

dataDir=/app/zk1/data

# the port at which the clients willconnect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle moreclients

#maxClientCnxns=60

#

# Be sure to read the maintenance sectionof the

# administrator guide before turning onautopurge.

#

#http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain indataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable autopurge feature

#autopurge.purgeInterval=1

server.1=172.16.40.131:2881:3888

server.2=172.16.40.131:2882:3888

server.3=172.16.40.131:2883:3888

生成myid

echo "1">/app/zk1/data/myid

配置zk2zk3:

cp /app/zk1/zookeeper/conf/zoo.cfg /app/zk2/zookeeper/conf/

cp /app/zk1/zookeeper/conf/zoo.cfg /app/zk3/zookeeper/conf/

sed -i 's/zk1/zk2/g' /app/zk2/zookeeper/conf/zoo.cfg

sed -i 's/zk1/zk3/g' /app/zk3/zookeeper/conf/zoo.cfg

sed -i 's/2181/2182/g' /app/zk2/zookeeper/conf/zoo.cfg

sed -i 's/2181/2183/g' /app/zk3/zookeeper/conf/zoo.cfg

echo "2">/app/zk2/data/myid

echo "3">/app/zk3/data/myid

启动zookeeper服务

/app/zk1/zookeeper/bin/zkServer.sh start

/app/zk2/zookeeper/bin/zkServer.sh start

/app/zk3/zookeeper/bin/zkServer.sh start

查看zookeeper状态

/app/zk1/zookeeper/bin/zkServer.sh status

JMX enabled by default

Using config:/app/zk1/zookeeper/bin/../conf/zoo.cfg

Mode: leader

/app/zk2/zookeeper/bin/zkServer.sh status

JMX enabled by default

Using config:/app/zk2/zookeeper/bin/../conf/zoo.cfg

/app/zk3/zookeeper/bin/zkServer.sh status

JMX enabled by default

Using config:/app/zk3/zookeeper/bin/../conf/zoo.cfg

Mode: follower

二、部署codis

1.go环境部署

cd /app

tar zxvf go1.7.3.linux-amd64.tar.gz -C /app

mkdir gopkg

配置GOROOTGOPATH

vi /etc/profile

export GOROOT=/app/go

export GOPATH=/app/gopkg

export PATH=$PATH:$GOROOT/bin

生效环境变量

source /etc/profile

查看go版本

go version

go version go1.7.3 linux/amd64

2.codis编译

创建codis编译目录

mkdir -pv /app/gopkg/src/github.com/CodisLabs/

下载codis软件包

cd /app/gopkg/src/github.com/CodisLabs/

git clone https://github.com/CodisLabs/codis.git -b release3.2

编译

cd codis/

make

编译正确如下,没有错误出现说明已编译完成

===============================================================================

go build -i -o bin/codis-dashboard./cmd/dashboard

go build -i -tags "cgo_jemalloc"-o bin/codis-proxy ./cmd/proxy

go build -i -o bin/codis-admin ./cmd/admin

go build -i -o bin/codis-fe ./cmd/fe

查看bin目录生成文件

cd /app/gopkg/src/github.com/CodisLabs/codis/bin/

[root@codis-02 bin]# ll

total 84488

drwxr-xr-x. 4 root root 4096 Jun 13 18:12 assets

-rwxr-xr-x. 1 root root 15465215 Jun 1318:12 codis-admin

-rwxr-xr-x. 1 root root 17085915 Jun 1318:12 codis-dashboard

-rwxr-xr-x. 1 root root 15358965 Jun 1318:12 codis-fe

-rwxr-xr-x. 1 root root 19311099 Jun 1318:12 codis-proxy

-rwxr-xr-x. 1 root root 7982986 Jun 13 18:11 codis-server

-rwxr-xr-x. 1 root root 5580519 Jun 13 18:11 redis-benchmark

-rwxr-xr-x. 1 root root 5712403 Jun 13 18:11 redis-cli

-rw-r--r--. 1 root root 168 Jun 13 18:11 version

3.codis实例

部署redis实例一主两从

创建codis实例所需目录,

mkdir -pv /app/codis/redis/{7001,7002,7003,7004,7005,7006}

cp -r /app/gopkg/src/github.com/CodisLabs/codis/bin/app/codis/

redis配置如下

vi /app/codis/redis/7001/redis.conf

bind 0.0.0.0

protected-mode no

port 7001

tcp-backlog 511

timeout 60

tcp-keepalive 300

daemonize yes

supervised no

pidfile "/tmp/redis_7001.pid"

loglevel notice

logfile "/app/codis/redis/7001/redis_7001.log"

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename"dump_7001.rdb"

dir "/app/codis/redis/7001"

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 yes

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 64mb60

client-output-buffer-limit pubsub 32mb 8mb60

hz 10

aof-rewrite-incremental-fsync yes

配置7002,7003,7004,7005,7006

cp /app/codis/redis/7001/redis.conf /app/codis/redis/7002/

cp /app/codis/redis/7001/redis.conf /app/codis/redis/7003/

cp /app/codis/redis/7001/redis.conf /app/codis/redis/7004/

cp /app/codis/redis/7001/redis.conf /app/codis/redis/7005/

cp /app/codis/redis/7001/redis.conf /app/codis/redis/7006/

sed -i 's/7001/7002/g' /app/codis/redis/7002/redis.conf

sed -i 's/7001/7003/g' /app/codis/redis/7003/redis.conf

sed -i 's/7001/7004/g' /app/codis/redis/7004/redis.conf

sed -i 's/7001/7005/g' /app/codis/redis/7005/redis.conf

sed -i 's/7001/7006/g' /app/codis/redis/7006/redis.conf

启动codis-server服务

/app/codis/bin/codis-server /app/codis/redis/7001/redis.conf

/app/codis/bin/codis-server /app/codis/redis/7002/redis.conf

/app/codis/bin/codis-server /app/codis/redis/7003/redis.conf

/app/codis/bin/codis-server /app/codis/redis/7004/redis.conf

/app/codis/bin/codis-server /app/codis/redis/7005/redis.conf

/app/codis/bin/codis-server /app/codis/redis/7006/redis.conf

三、部署codis-proxy

1.生成codis-proxy配置文件

cd /app/codis/bin/

/app/codis/bin/codis-proxy --default-config|tee proxy.toml >> proxy.toml

vi proxy.tom

##################################################

# #

# Codis-Proxy #

# #

##################################################

# Set Codis Product Name/Auth.

product_name ="codis-demo"

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 before processing any other commands.

session_auth = ""

# Set bind address for admin(rpc), tcponly.

admin_addr ="0.0.0.0:11080"

# Set bind address for proxy, proto_typecan be "tcp", "tcp4", "tcp6", "unix" or"unixpacket".

proto_type = "tcp4"

proxy_addr ="0.0.0.0: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. 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.16.40.131:2881,172.16.40.131:2882,172.16.40.131:2883"

jodis_timeout = "20s"

jodis_compatible = false

# Set datacenter of proxy.

proxy_datacenter = ""

# Set max number of alive sessions.

proxy_max_clients = 1000

# Set max offheap memory size. (0 todisable)

proxy_max_offheap_size = "1024mb"

# Set heap placeholder to reduce GCfrequency.

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 false

backend_primary_only = false

# Set backend parallel connections perserver

backend_primary_parallel = 1

backend_replica_parallel = 1

# Set backend tcp keepalive period. (0 todisable)

backend_keepalive_period = "75s"

# Set number of databases of backend.

backend_number_databases = 16

# If there is no request from client for along 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 maxnumber 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 todisable)

session_keepalive_period = "75s"

# Set session to be sensitive to failures.Default is false, instead of closing socket, proxy will send an error responseto client.

session_break_on_failure = false

# Set metrics server (such ashttp://localhost:28000), proxy will report json formatted metrics to specifiedserver in a predefined period.

metrics_report_server = ""

metrics_report_period = "1s"

# Set influxdb server (such ashttp://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 aslocalhost:8125), proxy will report metrics to statsd.

metrics_report_statsd_server = ""

metrics_report_statsd_period ="1s"

metrics_report_statsd_prefix = ""

参数说明:

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

jodis_compatible Jodis 注册 zookeeper 的路

backend_ping_period codis-server 探活周期,单位 second0 表示禁

session_max_timeout client 连接最大读超时,单位 second0 表示禁

session_max_bufsize client 连接读写缓冲区小,单位byte

session_max_pipeline client 连接最大的 pipeline

session_keepalive_period client tcpkeepalive 周期,仅 tcp 有效,0 表示禁

2.启动codis-proxy

nohup /app/codis/bin/codis-proxy --ncpu=4--config=/app/codis/bin/proxy.toml --log=proxy.log --log-level=WARN &

四、部署codis-dashboard

1. 生成codis-proxy配置文件

/app/codis/bin/codis-dashboard--default-config |tee dashboard.toml >>dashboard.toml

修改codis-proxy配置

vidashboard.toml

##################################################

# #

# Codis-Dashboard #

# #

##################################################

# SetCoordinator, only accept "zookeeper" & "etcd" &"filesystem".

# QuickStart

#coordinator_name= "filesystem"

#coordinator_addr= "/tmp/codis"

coordinator_name = "zookeeper"

coordinator_addr ="172.16.40.131:2181,172.16.40.131:2182,172.16.40.131:2183"

# SetCodis Product Name/Auth.

product_name = "codis-demo"

product_auth = ""

# Setbind address for admin(rpc), tcp only.

admin_addr = "0.0.0.0:18080"

# Setarguments for data migration (only accept 'sync' & 'semi-async').

migration_method= "semi-async"

migration_parallel_slots= 100

migration_async_maxbulks= 200

migration_async_maxbytes= "32mb"

migration_async_numkeys= 500

migration_timeout= "30s"

# Setconfigs for redis sentinel.

sentinel_quorum= 2

sentinel_parallel_syncs= 1

sentinel_down_after= "30s"

sentinel_failover_timeout= "5m"

sentinel_notification_script= ""

sentinel_client_reconfig_script= ""

参数说明:

coordinator_name外部存储类型,接受 zookeeper/etcd

coordinator_addr外部存储地址

product_name集群名称,满足正则 \w[\w\.\-]*

product_auth集群密码,默认为空

admin_addrRESTful API

启动codis-dashboard

nohup/app/codis/bin/codis-dashboard --ncpu=4 --config=/app/codis/bin/dashboard.toml --log=dashboard.log --log-level=WARN &

五、部署codis-fe

5.1生成codis-fe配置文件

/app/codis/bin/codis-admin --dashboard-list --zookeeper=172.16.40.131:2182 |tee ./codis.json>>codis.json

[root@codis-02bin]# cat codis.json

[

{

"name":"codis-demo",

"dashboard":"172.16.40.131:18080"

}

]

启动codis-fe服务

nohup/app/codis/bin/codis-fe --ncpu=4 --log=fe.log --log-level=WARN --dashboard-list=/app/codis/bin/codis.json --listen=0.0.0.0:18090 &

查看相关服务端口

[root@codis-02bin]# ss -tunlp | grep codis

tcp LISTEN 0 128 *:19000 *:* users:(("codis-proxy",10106,7))

tcp LISTEN 0 128 *:7001 *:* users:(("codis-server",10063,4))

tcp LISTEN 0 128 *:7002 *:* users:(("codis-server",10068,4))

tcp LISTEN 0 128 *:7003 *:* users:(("codis-server",10073,4))

tcp LISTEN 0 128 *:7004 *:* users:(("codis-server",10078,4))

tcp LISTEN 0 128 *:7005 *:* users:(("codis-server",10083,4))

tcp LISTEN 0 128 *:7006 *:* users:(("codis-server",10088,4))

tcp LISTEN 0 128 :::18080 :::* users:(("codis-dashboard",10150,5))

tcp LISTEN 0 128 :::11080 :::* users:(("codis-proxy",10106,8))

tcp LISTEN 0 128 :::18090 :::* users:(("codis-fe",10221,5))

六、redis sentinel部署

创建redis-sentinel目录

mkdir -pv /app/codis/sentinel/{27001,27002}

配置sentinel文件

vi /app/codis/sentinel/27001/sentinel-27001.conf

bind 0.0.0.0

protected-mode no

port 27001

dir /app/codis/sentinel/27001/

vi /app/codis/sentinel/27002/sentinel-27002.conf

bind 0.0.0.0

protected-mode no

port 27002

dir /app/codis/sentinel/27002/

启动sentinel服务

cp/app/gopkg/src/github.com/CodisLabs/codis/extern/redis-3.2.8/src/redis-sentinel/app/codis/bin/

/app/codis/bin/redis-sentinel /app/codis/sentinel/27001/sentinel-27001.conf &

/app/codis/bin/redis-sentinel /app/codis/sentinel/27002/sentinel-27002.conf &

七、使用codis-fe管理codis集群环境

1.codis-fe管理界面

http://172.16.40.131:18090

添加codis-proxy

采用命令增加

[root@codis-02 bin]# ./codis-admin --dashboard=127.0.0.1:18080 --create-proxy -x 127.0.0.1:11080

也可以采用界面增加

添加codis-server

NEW GROUP

增加一主两从

增加两组

以上也可以用命令增加

添加redis-sentinel

命令增加

[root@codis-02bin]# ./codis-admin --dashboard=172.16.40.131:18080 --sentinel-add --addr=172.16.40.131:27002


分配 slot

slot:数据槽,在 codis-server 间数据分片的单元;建议将数据槽均分于多个 group

codis-fe 管理界面添加 redis-sentinel,并同步,同步后 redis-sentinel 配置文件会更新

root@codis-02bin]# cat /app/codis/sentinel/27001/sentinel-27001.conf

bind 0.0.0.0

protected-mode no

port 27001

dir "/app/codis/sentinel/27001"

#Generated by CONFIG REWRITE

sentinelmyid b445aae57d1283b4d89d9ed23fd96982dbc344c3

sentinelmonitor codis-demo-2 172.16.40.131 7004 2

sentinelfailover-timeout codis-demo-2 300000

sentinelconfig-epoch codis-demo-2 0

sentinelleader-epoch codis-demo-2 0

sentinelknown-slave codis-demo-2 172.16.40.131 7005

sentinelknown-slave codis-demo-2 172.16.40.131 7006

sentinelknown-sentinel codis-demo-2 172.16.40.131 27002b236624dce5df7317e5c3e5f30401899c4961094

sentinelmonitor codis-demo-1 172.16.40.131 7001 2

sentinelfailover-timeout codis-demo-1 300000

sentinelconfig-epoch codis-demo-1 0

sentinelleader-epoch codis-demo-1 0

sentinelknown-slave codis-demo-1 172.16.40.131 7002

sentinelknown-slave codis-demo-1 172.16.40.131 7003

sentinelknown-sentinel codis-demo-1 172.16.40.131 27002 b236624dce5df7317e5c3e5f30401899c4961094

sentinelcurrent-epoch 0


配置 环境 集群 文件 端口 服务 生成 编译 单位 地址 目录 参数 变量 命令 实例 数据 界面 软件 管理 最大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 述职报告软件开发规划 数据库学习笔记数据库分析与设计 危害网络安全的哪三种人 单位学习网络安全的意义 河北希幔软件开发有限公司 手机网络安全选项在哪里设置 计算机网络技术涉及英语单词 做软件开发的怎么销售 达梦数据库日期传参转换错误 守护网络安全手抄报文字 工联数据库是什么部门 陕西戴尔服务器虚拟化解决方案 啥是佩奇 软件开发 怀化软件开发培训地址 pdu服务器专用电源报价 电脑上有dhcp服务器 盛马互联网科技 什么是网络技术数字虚拟化 南充网络安全宣传周邀请函 长沙数据库培训哪里有 青海智慧医养软件开发公司 我的世界服务器常用种子 ajax返回数据库 会网络安全画饭圈乱象为题画一张 计算机网络技术可以做什么 静态页面能和数据库连接 163qq邮箱服务器配置怎么填 静安区直销软件开发流程 网络安全为什么是一个系统 贵州6台网络安全教育
0