[root@server1 test]# tar zxf go1.8.linux-amd64.tar.gz
[root@server1 test]# cd go/
[root@server1 go]# ls
api blog doc LICENSE pkg src
AUTHORS CONTRIBUTING.md favicon.ico misc README.md test
bin CONTRIBUTORS lib PATENTS robots.txt VERSION
/usr/local
下/usr/bin
[root@server1 test]# mv go /usr/local/
[root@server1 test]# ls /usr/local/go/bin/
go godoc gofmt
[root@server1 test]# cp /usr/local/go/bin/* /usr/bin/
[root@server1 bin]# go version
go version go1.8 linux/amd64
GOROOT
就是go的安装目录,codis编译的时候,会根据这个目录来找go。GOPATH
就是codis的根目录,之后下载的时候会直接下载到这个目录。[root@server1 bin]# vim /root/.bash_profile
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/test/go
[root@server1 bin]# source /root/.bash_profile
[root@server1 ~]# vim hello.go
[root@server1 ~]# go run hello.go
hello,world
[root@server1 ~]# cat hello.go
package main
import "fmt"
func main(){
fmt.Printf("hello,world\n")
}
[root@server1 test]# yum install git autoconf automake libtool -y
[root@server1 test]# mkdir -p go/src/github.com/CodisLabs
[root@server1 test]# git clone https://github.com/CodisLabs/codis.git -b release3.2
[root@server1 test]# tar zxf codis-3.2.2.tar.gz
[root@server1 test]# cd codis-3.2.2/
[root@server1 codis-3.2.2]# ls
admin config Dockerfile Godeps MIT-LICENSE.txt scripts wandoujia_license.txt
ansible deploy example kubernetes pkg vendor
cmd doc extern Makefile README.md version
[root@server1 codis-3.2.2]# mkdir -p $GOPATH/src/github.com/CodisLabs
[root@server1 test]# mv codis-3.2.2 $GOPATH/src/github.com/CodisLabs/codis
[root@server1 codis-3.2.2]# make
[root@server1 codis]# cd bin/
[root@server1 bin]# ls
assets codis-dashboard codis-ha codis-server redis-cli version
codis-admin codis-fe codis-proxy redis-benchmark redis-sentinel
[root@server1 bin]# pwd
/test/go/src/github.com/CodisLabs/codis/bin
[root@server1 test]# rpm -ivh jdk-8u121-linux-x64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:jdk1.8.0_121-2000:1.8.0_121-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@server1 test]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
[root@server1 test]# tar zxf apache-zookeeper-3.5.9-bin.tar.gz
[root@server1 test]# mv apache-zookeeper-3.5.9-bin /usr/local/zookeeper
[root@server1 test]# cd /usr/local/zookeeper
[root@server1 zookeeper]# cd conf/
[root@server1 conf]# cp zoo_sample.cfg zoo.cfg
[root@server1 conf]# vim zoo.cfg
[root@server1 conf]# mkdir /tmp/zookeeper
[root@server1 conf]# cd /tmp/zookeeper
[root@server1 zookeeper]# vim myid
1
[root@server1 bin]# pwd
/usr/local/zookeeper/bin
[root@server1 bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
dashboard
Codis Dashboard
:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。
对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;
所有对集群的修改都必须通过 codis-dashboard 完成。
修改配置文件,只是修改了IP地址
[root@server1 config]# pwd
/test/go/src/github.com/CodisLabs/codis/config
[root@server1 config]# vim dashboard.toml
启动成功
[root@server1 config]# ../admin/codis-dashboard-admin.sh start
/test/go/src/github.com/CodisLabs/codis/admin/../config/dashboard.toml
starting codis-dashboard ...
Codis Proxy
Codis Proxy
:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外,表现的和原生的 Redis 没有区别(就像 Twemproxy)。
对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例;
不同 codis-proxy 之间由 codis-dashboard 保证状态同步。
修改配置文件
把0.0.0.0改为172.25.23.1
[root@server1 config]# vim proxy.toml
启动成功
[root@server1 config]# ../admin/codis-proxy-admin.sh start
/test/go/src/github.com/CodisLabs/codis/admin/../config/proxy.toml
starting codis-proxy ...
[root@server1 config]# pwd
/test/go/src/github.com/CodisLabs/codis/config
Codis Server
[root@server1 admin]# ./codis-server-admin.sh start
/test/go/src/github.com/CodisLabs/codis/admin/../config/redis.conf
starting codis-server ...
Codis FE
Codis FE:集群管理界面。
多个集群实例共享可以共享同一个前端展示页面;
通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。
[root@server1 admin]# ./codis-fe-admin.sh start
starting codis-fe ...
[root@server1 log]# netstat -antuple | grep codis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 0 35543 5329/codis-server 1
tcp 0 0 172.25.23.1:18080 0.0.0.0:* LISTEN 0 31709 4654/codis-dashboar
tcp 0 0 172.25.23.1:55762 172.25.23.1:18080 ESTABLISHED 0 36063 5343/codis-fe
tcp 0 0 127.0.0.1:55728 127.0.0.1:2181 ESTABLISHED 0 31705 4654/codis-dashboar
tcp 0 0 172.25.23.1:18080 172.25.23.1:55762 ESTABLISHED 0 36064 4654/codis-dashboar
tcp6 0 0 :::9090 :::* LISTEN 0 35555 5343/codis-fe
tcp6 0 0 172.25.23.1:9090 172.25.23.250:59618 ESTABLISHED 0 36059 5343/codis-fe
tcp6 0 0 172.25.23.1:9090 172.25.23.250:59616 ESTABLISHED 0 36057 5343/codis-fe
新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做,如下图所示,点击此按钮,我们即快速完成了一个集群的搭建。