codis简介:
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。
go环境配置:
[root@server1 ~]#tar -zxf go1.8.linux-amd64.tar.gz
[root@server1 ~]#mv go /usr/local/
[root@server1 ~]# ls
codis-release3.2.zip go1.8.linux-amd64.tar.gz
[root@server1 ~]# which go
/usr/local/go/bin/go
[root@server1 ~]# go env
[root@server1 ~]# go env GOPATH
/root/go
[root@server1 ~]# vim .bash_profile
---
export PATH=$PATH:/usr/local/go/bin
---
安装codis:
[root@server1 ~]# mkdir -p go/src/github.com/CodisLabs/
[root@server1 ~]# ls
codis-release3.2.zip go go1.8.linux-amd64.tar.gz
[root@server1 ~]# unzip codis-release3.2.zip
...
[root@server1 ~]# ls
codis-release3.2 codis-release3.2.zip go go1.8.linux-amd64.tar.gz
[root@server1 ~]# mv codis-release3.2 ./go/src/github.com/CodisLabs/
[root@server1 ~]# cd go/src/github.com/CodisLabs/
[root@server1 CodisLabs]# mv ./codis-release3.2/ codis
[root@server1 CodisLabs]# cd codis/
[root@server1 codis]# yum install -y git autoconf gcc
[root@server1 codis]# make
[root@server1 codis]# ./admin/codis-dashboard-admin.sh start
/root/go/src/github.com/CodisLabs/codis/admin/../config/dashboard.toml
starting codis-dashboard ...
[root@server1 codis]# ./admin/codis-proxy-admin.sh start
/root/go/src/github.com/CodisLabs/codis/admin/../config/proxy.toml
starting codis-proxy ...
[root@server1 codis]# ./admin/codis-server-admin.sh start
/root/go/src/github.com/CodisLabs/codis/admin/../config/redis.conf
starting codis-server ...
[root@server1 codis]# ./admin/codis-fe-admin.sh start
starting codis-fe ...
[root@server1 codis]# bin/codis-server
16884:C 12 Aug 17:39:49.978 # Warning: no config file specified, using the default config. In order to specify a config file use bin/codis-server /path/to/redis.conf
16884:M 12 Aug 17:39:49.979 * Increased maximum number of open files to 10032 (it was originally set to 1024).
16884:M 12 Aug 17:39:49.979 # Creating Server TCP listening socket *:6379: bind: Address already in use
[root@server1 codis]# redis-cli -c -p 6379
127.0.0.1:6379> set oo pp
OK
127.0.0.1:6379> get oo
"pp"
配置:
[root@server1 codis]# cd config/
[root@server1 config]# ls
dashboard.toml proxy.toml redis.conf sentinel.conf
[root@server1 config]# grep -v ^# redis.conf >redis1.conf
[root@server1 config]# vim redis1.conf #只改端口,不重复就行。eg:6381
[root@server1 config]# cp redis1.conf redis2.conf
[root@server1 config]# cp redis1.conf redis3.conf
[root@server1 config]# vim redis2.conf #改端口
[root@server1 config]# vim redis3.conf #改端口
[root@server1 config]# cd ..
[root@server1 codis]# ./bin/codis-server config/redis1.conf
[root@server1 codis]# ./bin/codis-server config/redis2.conf
[root@server1 codis]# ./bin/codis-server config/redis3.conf
...
[root@server1 codis]# ps ax
PID TTY STAT TIME COMMAND
...
16896 ? Ssl 0:00 ./bin/codis-server 127.0.0.1:6381
16901 ? Ssl 0:00 ./bin/codis-server 127.0.0.1:6382
16915 ? Ssl 0:00 ./bin/codis-server 127.0.0.1:6383
16919 pts/0 R+ 0:00 ps ax
[root@server1 codis]#
然后就是配置组了
添加组
codis-proxy高可用
一、需要jdk环境,所以先配置jdk环境
tar zxf jdk-7u79-linux-x64.tar.gz
mv jdk1.7.0_79/ /usr/local/
cd /usr/local/
ln -s jdk1.7.0_79/ java
配置java环境变量
vim /etc/profile
在里面添加下面几行
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin /etc/profile
JAVA_HOME 后跟上面jdk解压目录
我将解压包移到/usr/local下 并创建了名为java的软连接,所以写/usr/local/java
- 查看路径:
echo $JAVA_HOME
echo $CLASSPATH
echo $PATH
which java
which javac
二、GO 安装
[root@server1 ~]# tar -zxf go1.8.linux-amd64.tar.gz -C /usr/local/
[root@server1 ~]# vim /etc/profile
##最后面添加以下几行
export GOPATH=/usr/local/codis
export GOROOT=/usr/local/go
export PATH=$PATH:/usr/local/go/bin
[root@server1 ~]# source /etc/profile
[root@server1 ~]# go version
go version go1.8 linux/amd64
三、 Zookeeper安装
tar -xzf zookeeper-3.4.6.tar.gz -C /usr/local/
vim /etc/profile
---
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6/
export PATH=$PATH:/usr/local/go/bin:$ZOOKEEPER_HOME/bin
---
source /etc/profile
- 配置zookeeper,修改配置文件:
cp /usr/local/zookeeper-3.4.6/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.6/conf/zoo.cfg
vim /usr/local/zookeeper-3.4.6/conf/zoo.cfg
---
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
clientPort=2181
#server.1=codis-1:2888:3888
#server.2=codis-2:2888:3888
#server.2=codis-3:2888:3888
---
mkdir -p /data/zookeeper/data
echo "1" > /data/zookeeper/data/myid
设置myid:
设置myid在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件配置的srver.X中的X为什么数字,则myid文件就输入这个数字,我只有一台zk,所以配置文件里可以不配置server.X,但还是要配置myid的,echo一个数字1进去即可。如果有多台zk,则分别在zk服务器上echo对应的数字进对应的myid文件
配置host
vim /ect/hosts 172.25.5.1 zookeeper-1 172.25.5.2 zookeeper-2 172.25.5.3 zookeeper-3
[root@server1 ~]# zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@server1 ~]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: standalone
cat zookeeper.out
查看日志。
配置config.ini
[root@server1 ~]# vim /usr/local/codis/config.ini
zk=localhost:2181
product=test
proxy_id=proxy_1
net_timeout=5
dashboard_addr=localhost:18087
coordinator=zookeeper
1、启动zookeeper
zkServer.sh start
2、启 动CodisDashboard组 件 ,
cd $GOPATH/src/github.com/CodisLabs/codis
./admin/codis-dashboard-admin.sh start
cat log/codis-dashboard.log.2018-8-11
3、启动CodisProxy组件
./admin/codis-proxy-admin.sh start
tail log/codis-proxy.log.2011-8-11
4、启动 Codis Server 组件
./admin/codis-server-admin.sh start
tail /tmp/redis_6379.log
5、启动 Codis Fe 组件
./admin/codis-fe-admin.sh start
tail log/codis-fe.log.2018-8-11
Codis目录重建
[root@server1 ~]# mkdir -p /data/codis/sh
[root@server1 ~]# mkdir -p /data/codis/conf
[root@server1 ~]# mkdir -p /data/codis/log
[root@server1 ~]# mkdir -p /data/codis/run
[root@server1 ~]# mkdir -p /data/codis/redis/bin
[root@server1 ~]# mkdir -p /data/codis/redis/redis-6379
[root@server1 ~]# mkdir -p /data/codis/redis/redis-6380
[root@rhel65-lockey1 ~]# cd $GOPATH/src/github.com/CodisLabs/codis/extern/redis-3.2.8/src/
配置启动Codis各组件—-启动Redis
主库:/data/codis/redis/redis-6379/redis.conf
vim redis.conf
---
#port 6379
port 6379
#daemonize no
daemonize yes
---
codis-server /data/codis/redis/redis-6379/redis.conf
启动顺序
- start zookeeper //启动zookeeper服务
- change config items in config.ini //修改codis配置文件
- ./start_dashboard.sh //启动 dashboard
- ./start_redis.sh //启动redis实例
- ./add_group.sh //添加redis组,一个redis组只能有一个master
- ./initslot.sh //初始化槽
- ./start_proxy.sh //启动proxy
- ./set_proxy_online.sh //上线proxy项目
- open browser to http://localhost:18087/admin //访问web