Codis的部署
部署go环境在官网下载go的语言包[root@server1 test]# tar zxf go1.8.linux-amd64.tar.gz[root@server1 test]# cd go/[root@server1 go]# lsapiblogdocLICENSEpkgsrcAUTHORSCONTRIBUTING.mdfavicon.icomiscREADME.mdtest
安装 go
- 在官网下载go的语言包
[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
- 测试go语言
[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")
}
安装 Codis
- 安装相应的工具
[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
安装 jdk
[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)
安装 zookeeper
- 下载并解压
[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
- 创建dataDir
[root@server1 conf]# mkdir /tmp/zookeeper
[root@server1 conf]# cd /tmp/zookeeper
[root@server1 zookeeper]# vim myid
1
- 启动zk
[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
启动 Codis,搭建集群
- 启动
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
- Codis Server:基于 redis-3.2.8 分支开发。增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。
[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
- 通过fe添加Group
Group就是一主一从的环境,当然也可以一主多从。
- 通过fe初始化slot
新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做,如下图所示,点击此按钮,我们即快速完成了一个集群的搭建。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)