codis初步搭建

来源:互联网 发布:php 统计数组重复次数 编辑:程序博客网 时间:2024/06/05 20:41

codis使用

Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务

下载与编译

安装go运行环境

在这里我是网上下载的go1.8.linux-amd64.tar.gz压缩包
[root@server11 ~]# tar zxf go1.8.linux-amd64.tar.gz -C /usr/local/

设置go环境变量

[root@server11 ~]# vim /etc/profile

export GOROOT=/usr/local/goexport PATH=$GOROOT/bin:$PATHexport GOPATH=/home/user/go

[root@server11 ~]# source /etc/profile
[root@server11 ~]# go version
go version go1.8 linux/amd64

检测

写一个简单的go测试程序
[root@server11 ~]# vim hello.go

package main  import "fmt"  func main(){       fmt.Print("hello!!!\n")}

[root@server11 ~]# go run hello.go
hello!!!

安装codis

Codis采用源码安装,使用的安装包为codis-release3.2.zip

[root@server11 ~]# mkdir -p $GOPATH/src/github.com/CodisLabs[root@server11 ~]# unzip codis-release3.2.zip[root@server11 ~]# mv codis-release3.2 /home/user/go/src/github.com/CodisLabs/codis[root@server11 ~]# cd /home/user/go/src/github.com/CodisLabs/codis[root@server11 codis]# lsadmin    config  Dockerfile  Godeps           pkg        vendoransible  deploy  example     Makefile         README.md  versioncmd      doc     extern      MIT-LICENSE.txt  scripts    wandoujia_license.txt

在编译之前还需要安装相应的包用来解决依赖关系

[root@server11 codis]# yum install -y gcc-c++ git autoconf

编译

[root@server11 codis]# makemake -j4 -C extern/redis-3.2.8/cache-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-fe ./cmd/fe

快速启动

[root@server11 codis]# ./admin/codis-dashboard-admin.sh start[root@server11 codis]# tail -100 ./log/codis-dashboard.log.2017-10-19[root@server11 codis]# ./admin/codis-server-admin.sh start[root@server11 codis]# tail -100 /tmp/redis_6379.log.2017-10-19[root@server11 codis]# ./admin/codis-proxy-admin.sh start[root@server11 codis]# tail -100 ./log/codis-proxy.log.2017-10-19[root@server11 codis]# ./admin/codis-fe-admin.sh start[root@server11 codis]# tail -100 ./log/codis-fe.log.2017-10-19查看一下日志中是否有报错信息,注意,这里日志的日期是自动补齐的

过滤查看一下codis

这里写图片描述

查看工作端口

这里写图片描述

登陆测试页面

通过web浏览器访问集群管理页面(fe地址:127.0.0.1:9090) 选择我们刚搭建的集群 codis-demo

这里写图片描述

这里写图片描述

在 Proxy 栏可看到我们已经启动的 Proxy, 但是 Group 栏为空,因为我们启动的 codis-server 并未加入到集群 添加 NEW GROUP,NEW GROUP 行输入 1,再点击 NEW GROUP 即可 添加 Codis Server,Add Server 行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击 Add Server 按钮即可
这里写图片描述

通过fe初始化slot

新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做
这里写图片描述

zookeeper的安装

首先安装开发工具及openjdk,zookeeper是由Java语言开发的,所以需要openjdk环境。

[root@server11 ~]# yum groupinstall "Development tools" "Compatibility libraries" -y[root@server11 ~]# yum install openssl-devel openssl -y[root@server11 ~]# yum install java-1.8.0-openjdk-devel java-1.8.0-openjdk -y

确定Java运行环境正常

[root@server11 ~] java -versionopenjdk version "1.8.0_101"OpenJDK Runtime Environment (build 1.8.0_101-b13)OpenJDK 64-Bit Server VM (build 25.101-b13, mixed mode)

开始装zookeeper

[root@server11 ~]# tar zxf zookeeper-3.4.6.tar.gz[root@server11 ~]# ln -s /usr/local/zookeeper-3.4.6/ /usr/local/zookeeper[root@server11 ~]# cd /usr/local/zookeeper/conf[root@server11 ~]# cp zoo_sample.cfg zoo.cfg

编译zookeeper配置文件/usr/local/zookeeper/conf/zoo.cfg

maxClientCnxns=60tickTime=2000initLimit=10syncLimit=5dataDir=/data/zookeeper/dbdataLogDir=/data/zookeeper/logclientPort=2181# cluster configureserver.1=172.25.30.11:2888:3888server.2=172.25.30.12:2888:3888server.3=172.25.30.13:2888:3888

[root@server11 ~]# mkdir /data/zookeeper/{db,log} -p

这里只给出了server11的配置,server12和server13同理

下面需要生成ID,这里需要注意,myid对应的zoo.cfg的server.ID,比如第二台zookeeper主机对应的myid应该是2,以此类推,三个主机分别为:

[root@server11 ~]# echo 1 > /data/zookeeper/db/myid[root@server12 ~]# echo 2 > /data/zookeeper/db/myid[root@server13 ~]# echo 3 > /data/zookeeper/db/myid

输出环境变量及启动zookeeper
Vim /etc/profile

Source /etc/profile
[root@server11 ~] zkServer.sh start
查看状态

[root@server11 conf]# zkServer.sh statusJMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgMode: follower[root@server12 conf]# zkServer.sh statusJMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgMode: leader[root@server13 conf]# zkServer.sh statusJMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgMode: follower

客户端连接,可以查看相关信息

[root@server13 conf]# zkCli.sh -server 127.0.0.1:2181Connecting to 127.0.0.1:21812017-10-19 17:01:29,598 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT2017-10-19 17:01:29,605 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=<NA>2017-10-19 17:01:29,605 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_65......WATCHER::WatchedEvent state:SyncConnected type:None path:null[zk: 127.0.0.1:2181(CONNECTED) 0] 

配置组件

主库为6379,从库为6380

[root@server11 conf]# mkdir -p /data/codis/redis/redis-6379[root@server11 conf]# mkdir -p /data/codis/redis/redis-6380

配置主库的组件

主库:/data/codis/redis/redis-6379/redis.confdaemonize yespidfile /data/codis/run/redis-6379.pidport 6379tcp-backlog 65535bind 0.0.0.0timeout 0tcp-keepalive 0loglevel noticelogfile "/data/codis/log/redis-6379.log"databases 16lua-time-limit 5000maxclients 10000slowlog-log-slower-than 10000slowlog-max-len 128maxmemory 3Gmaxmemory-policy noevictionclient-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60hash-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 yeslatency-monitor-threshold 0

从库:/data/codis/redis/redis-6380/redis.conf

pidfile /data/codis/run/redis-6380.pidport 6380tcp-backlog 65535bind 0.0.0.0timeout 0tcp-keepalive 0loglevel noticelogfile "/data/codis/log/redis-6380.log"databases 16lua-time-limit 5000maxclients 10000slowlog-log-slower-than 10000slowlog-max-len 128maxmemory 3Gmaxmemory-policy noevictionno-appendfsync-on-rewrite yesappendonly yesappendfilename "appendonly.aof"appendfsync noauto-aof-rewrite-min-size 512mbauto-aof-rewrite-percentage 100aof-load-truncated yesaof-rewrite-incremental-fsync yesclient-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60hash-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 yeslatency-monitor-threshold 0

使用codis-server启动redis

[root@server11 ~]# codis-server /data/codis/redis/redis-6379/redis.conf[root@server11 ~]# codis-server /data/codis/redis/redis-6380/redis.conf

启动dashboard

首先生成默认的配置文件:

codis-dashboard --default-config | tee /data/codis/conf/dashboard.toml

启动

nohup codis-dashboard --ncpu=2 --config=/data/codis/conf/dashboard.toml --log=/data/codis/log/dashboard.log --log-level=WARN &

启动codis-proxy

生成配置文件

[root@server11 ~]# codis-proxy --default-config | tee /data/codis/conf/proxy.toml

启动

nohupcodis-proxy--ncpu=2--config=/data/codis/conf/proxy.toml--log=/data/codis/log/proxy.log --log-level=WARN &

admin_addr 加入到集群

codis-admin --dashboard=172.25.30.11:18080 --create-proxy -x 172.25.30.11:11080codis-admin --dashboard=172.25.30.12:18080 --create-proxy -x 172.25.30.12:11080codis-admin --dashboard=172.25.30.13:18080 --create-proxy -x 172.25.30.12:11080
原创粉丝点击