Codis集群
了解,摸索 肯定有不完善的地方和我解释不出来的地方还望海涵。
Codis是什么、原理、构架、优缺点、及zookeeper
Codis集群的搭建部署
准备
四个包、三台虚拟机
codis-release3.2.zip #从我们老师那里拿的
go1.9.1.linux-amd64.tar.gz #从同学那里copy
zookeeper-3.4.14.tar.gz #从同学那里copy
jdk-8u121-linux-x64.rpm #/pub/docs/lamp/拿得。 懂得都懂
实验步骤
如果之前做过redis的服务,将redis服务停掉,因为会占用6379端口。
1、安装go,这里选用的版本为go1.9.1——因为codis3.2要求至少是1.7或1.8以上版本。
[root@server4 ~]# tar zxf go1.9.1.linux-amd64.tar.gz -C /usr/local/
2、配置环境变量
[root@server4 local]# vim /etc/profile
export GOROOT=/usr/local/go #在最后添加
export GOPATH=/usr/local/codis
export PATH=$PATH:/usr/local/go/bin
[root@server4 local]# source /etc/profile #重新加载环境变量
3、对codi进行源码编译,编译codis时依赖go,所以在安装codis先装好go。
[root@server4 local]# mkdir -p $GOPATH/src/github.com/CodisLabs #设置编译环境
[root@server4 local]# cd
[root@server4 ~]# unzip codis-release3.2.zip -d $GOPATH/src/github.com/CodisLabs #没有unzip就装一个
[root@server4 ~]# cd $GOPATH/src/github.com/CodisLabs
[root@server4 CodisLabs]# mv codis-release3.2/ codis #为了方便 名字无所谓
[root@server4 CodisLabs]# cd codis/
[root@server4 codis]# yum install gcc git autoconf -y
#gcc二进制编译器
#Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来。
#Autoconf是一个用于包,以适应多种Unix类系统的 shell脚本的工具。由Autoconf生成的配置脚本在运行的时候与Autoconf是无关的, 就是说配置脚本的用户并不需要拥有Autoconf。
以上全是百度出来的,不知在此环境是否解释的通。gcc肯定没错(小声比比。。
我是实验过不装autoconf,会报错,我能力有限看不了报错。
4、进行编译安装
5、安装JDK
[root@server4 ~]# yum install jdk-8u121-linux-x64.rpm -y
[root@server4 ~]# java -version
6、安装zookeeper
[root@server4 ~]# tar zxf zookeeper-3.4.14.tar.gz -C /usr/local/
[root@server4 ~]# cd /usr/local/
[root@server4 local]# mv zookeeper-3.4.14/ zookeeper
7、编辑环境变量
[root@server4 local]# vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:/usr/local/go/bin:$ZOOKEEPER_HOME/bin
[root@server4 local]# source /etc/profile
8、修改zookeeper的配置文件
[root@server4 local]# cd /usr/local/zookeeper/conf/
[root@server4 conf]# cp zoo_sample.cfg zoo.cfg #zoo.cfg 不能乱改,否则还得再改一个配置文件
[root@server4 conf]# vim zoo.cfg
tickTime=2000 #一个周期(tick)的时长(单位:毫秒)
initLimit=10 #初始化同步阶段最多耗费tick个数
syncLimit=5 #等待应答的最大间隔tick个数
dataDir=/data/zookeeper/data #该目录需要手动建立。
clientPort=2181 #客户端连接server的端口,即对外服务端口,一般设置为 2181
maxClientCnxns=60 #最大连接数设置(单ip限制). 注:默认60,设成0即无限制
autopurge.purgeInterval=24 #ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时
autopurge.snapRetainCount=500 #这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个
9、设置myid在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字(该数字的取值范围是1-255),用来标识当前主机,conf/zoo.cfg文件配置的server.X中的X是什么数字,则myid文件就输入这个数字,我只有一台zk,所以配置文件里可以不配置server.X,但还是要配置myid 的,echo一个数字1进去即可。
[root@server4 conf]# mkdir /data/zookeeper/data -p
[root@server4 conf]# echo "1" > /data/zookeeper/data/myid
[root@server4 conf]# cat /data/zookeeper/data/myid
1
10、启动zookeeper
[root@server4 conf]# cd /usr/local/zookeeper/bin
[root@server4 bin]# ./zkServer.sh start
[root@server4 bin]# ./zkServer.sh status
11、对codis进行配置,并启动codis的各个组件。编辑/usr/local/codis/config.ini文件并启动codis-dashboard组件
###!启动dashboard前,必须启动zookeeper服务
[root@server4 bin]# vim /usr/local/codis/config.ini
zk=localhost:2181
product=meng
proxy_id=proxy_1
net_timeout=5
dashboard_addr=localhost:18087
coordinator=zookeeper
[root@server4 bin]# cd $GOPATH/src/github.com/CodisLabs/codis/admin
[root@server4 admin]# ./codis-dashboard-admin.sh start #启动codis-dashboard组件
[root@server4 admin]# ./codis-proxy-admin.sh start #启动codis-proxy组件
[root@server4 admin]# ./codis-fe-admin.sh start #启动codis-fe组件
[root@server4 admin]# ./codis-server-admin.sh start #启动codis-server组件
[root@server4 admin]# netstat -antlp
12、配置server1和server3,步骤完全相同。
有个配置文件不同
[root@server1 ~]# cd /usr/local/codis/src/github.com/CodisLabs/codis/config/
[root@server1 config]# vim redis.conf
启动
[root@server1 config]# cd /usr/local/codis/src/github.com/CodisLabs/codis/admin
[root@server1 admin]# ./codis-server-admin.sh start
[root@server1 admin]# netstat -antlp
13、测试:172.25.111.4:9090,进入web管理界面
还是有些问题,server4不可以当master,添加了第一个组就无法删掉(我能力有限)。能演示的办法是创建一个新的组,把server4排除在外。
我们会发现,还是down的情况,依次点2组的绿色扳手,给他key。
现在没有红(指错误),我们去到server3中的/usr/local/codis/src/github.com/CodisLabs/codis/config 看redis.conf最后一行会出现slaveof 172.25.111.1 6379
我们修改成 172.25.111.4 6379 并重新启动./codis-server-admin.sh restart在/usr/local/codis/src/github.com/CodisLabs/codis/admin
重新刷新页面
不出所料,down掉了。点扳手。将会自动更改回来。
连接不上server4的可能情况(我猜想的、猜想的):
1、构架我没有理解透彻,可能与server4连接上没有关系,server4只负责中转或连接server1和server3。
2、server4的bind 127.0.0.1的监听ip没有写上,导致别人连接不上它。(实验过了、没用)
补充:我参考同学的做了一个 127.0.0.1 server4 中的模拟分片(额… 是这个术语吧。
在server4上
[root@server4 config]# cp redis.conf redis6381.conf
[root@server4 config]# vim redis6381.conf #修改
port 6381
pidfile "/tmp/redis_6381.pid"
logfile "/tmp/redis_6381.log
[root@server4 config]# cd ..
[root@server4 codis]# ./bin/codis-server ./config/redis6381.conf #加载