codis3.2集群单机环境安装-创新互联

codis 3.2集群单机环境安装

目前创新互联建站已为超过千家的企业提供了网站建设、域名、虚拟主机绵阳服务器托管、企业网站设计、槐荫网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

一、软件环境

系统:centos 6.5

Jdk:jdk-8u111-linux-x64.gz

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

zookeeper: zookeeper-3.4.6.tar.gz

本机IP:172.16.40.131

软件下载地址:

codis:https://github.com/CodisLabs/codis

zookeeper:https://zookeeper.apache.org/

go:http://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

配置zk2、zk3:

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

配置GOROOT、GOPATH

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 探活周期,单位 second,0 表示禁止

session_max_timeout 与 client 连接大读超时,单位 second,0 表示禁止

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 3.2集群单机环境安装

添加codis-proxy

采用命令增加

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

也可以采用界面增加

codis 3.2集群单机环境安装

添加codis-server

先NEW GROUP

codis 3.2集群单机环境安装

增加一主两从

codis 3.2集群单机环境安装

增加两组

codis 3.2集群单机环境安装

以上也可以用命令增加

添加redis-sentinel

codis 3.2集群单机环境安装

命令增加

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

codis 3.2集群单机环境安装

codis 3.2集群单机环境安装

分配 slot

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

codis 3.2集群单机环境安装

在 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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:codis3.2集群单机环境安装-创新互联
文章地址:http://hbruida.cn/article/ddcehp.html