codis安装手册
本文属原创,转载请注明此信息:http://www.cnblogs.com/robinjava77/p/5465150.html (Robin)
codis交流群 240361424 感谢群里各位群友的热情分享及特殊问题的解疑
一、 java安装
l centOS 自带的openJDK需要卸载
1、head -n 1 /etc/issue 查看linux系统版本
2、java -version 查看linux java版本,若显示的openJDK须卸载
3、rpm -qa | grep java 查看信息
tzdata-java-2014g-1.el6.noarch
java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64
4、卸载openJDK
yum -y remove java java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
yum -y remove java java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64
5、java –version
-bash: java: command not found 说明卸载成功
l 安装: mkdir /usr/java
cd /usr/java
上传文件 jdk-7u79-linux-x64.rpm
chmod +x jdk-7u79-linux-x64.rpm
rpm -ivh jdk-7u79-linux-x64.rpm
l 配置环境
vim /etc/profile
#set java environment
JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
l 检查
java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
!出现上述则安装成功
还可以使用javac 或者 java 命令 来检查
l 清除安装包
rm -rf jdk-7u79-linux-x64.rpm
二、 Zookeeper安装
l 创建目录 mkdir /usr/local/upload 进入该目录
l 下载 wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
l 安装 tar -xzf zookeeper-3.4.6.tar.gz -C /usr/local/
三、 go安装
l 下载: wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz
l 解压: tar -zxvf go1.4.1.linux-amd64.tar.gz
mv go /usr/local/
cd /usr/local/go/src/
l 相关依赖包环境安装:
yum groupinstall "Development Tools"
yum install -y git
l 编译go:
/usr/local/go/src/all.bash
l 设置环境变量:
vim /etc/profile
#set go enviroment
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=$GOROOT/bin
source /etc/profile
l 检测go是否可以正常使用:
编辑文件命令:vim hello.go
文件内容:
package main
import "fmt"
func main(){
fmt.Printf("hello,world\n")
}
测试go
命令:go run hello.go
输出:hello,world
四、 codis安装
l 官方文档:https://github.com/CodisLabs/codis/blob/master/doc/tutorial_zh.md
l 下载codis代码:
go get -u -d github.com/CodisLabs/codis
l 编译codis:
cd /usr/local/go/bin/src/github.com/CodisLabs/codis
执行make命令,编译
执行make gotest 测试
执行成功后,会生成bin目录:assets codis-config codis-proxy codis-server
五、 codis部署
(一)、部署zookeeper(可部署1个,建议部署多台[奇数]提供集群服务,须安装JDK)
1、cd /usr/local/zookeeper-3.4.6/conf
2、vim zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/zookeeper/data
#dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=zookeeper-1:2888:3888
server.2=zookeeper-2:2888:3888
server.3=zookeeper-3:2888:3888
3、配置host 注意下面ip是zk的实际ip地址
vim /ect/hosts
ip zookeeper-1
ip zookeeper-2
ip zookeeper-3
4、vim /data/zookeeper/data/myid
在此文件内编辑自己对应的serverID. serverID见上述红色标记的数字
5、sh /usr/local/zookeeper-3.4.6/bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
./zkCli.sh -server ip:2181 能正确访问 则说明zk部署成功
zk启动成功(依次将zk集群启动)
(二)、部署codis-server(部署多台形成集群)
1、mkdir /usr/local/codis
2、mkdir /usr/local/codis/conf
3、mkdir /usr/local/codis/log
4、cp /usr/local/go/bin/src/github.com/CodisLabs/codis/bin/codis-server /usr/local/codis/
5、cp /usr/local/go/bin/src/github.com/CodisLabs/codis/test/redis.temp /usr/local/codis/conf/redis_6379.conf
6、vim /usr/local/codis/conf/redis_6379.conf
主redis配置设置:
requirepass pwd codis-server密码 若使用密码,则不支持codis-ha插件
masterauth pwd codis-server 从同步主密码(建议主redis也配置此项,codis-ha会自
动做主从切换,避免届时补充此项)
#save 900 1
#save 300 10
#save 60 10000 这里是为了关闭主redis的rdb
rdbcompression no 一个CRC64的校验就被放在了文件末尾,当存储或者加载rbd文件
的时候会 有一个10%左右的性能下降
appendonly no 关闭AOF持久化策略
从redis配置设置:
requirepass pwd codis-server密码(建议从redis也配置此项,codis-ha会自动做主从切
换,避免届时补充此项)
masterauth pwd codis-server 从同步主密码
save 900 1
save 300 10
save 60 10000 这里是为了关闭主redis的rdb 从redis开放rdb数据持久策略
rdbchecksum yes
dbfilename dump.rdb 快照的文件名
dir /var/lib/redis 存放快照的目录
appendonly yes 开放aof持久化策略
appendfsync everysec 每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,
是受推荐的方式
no-appendfsync-on-rewrite yes设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等
rewrite完成后再写入,建议yes
auto-aof-rewrite-percentage 100 当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自
动启动新的日志重写过程
auto-aof-rewrite-min-size 64mb 当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids
时由于文件尺寸较小导致频繁的重写
7、mkdir /var/lib/redis
8、cd /usr/local/codis
9、nohup ./codis-server ./conf/redis_6379.conf > ./log/codis_server_6379.log 2>&1 &
10、通过redis-cli
redis-cli -h IP -p PORT 访问codis-server
CONFIG GET requirepass
(error) NOAUTH Authentication required.
auth pwd
OK
CONFIG GET requirepass
1) "requirepass"
2) "pwd"
按照上述命令执行,得到如上现象,则说明codis-server启动成功,并且密码设置成功
(三)、部署codis-config(只需部署一台)
1、mkdir /usr/local/codis
2、mkdir /usr/local/codis/conf
3、mkdir /usr/local/codis/log
4、cp /usr/local/go/bin/src/github.com/CodisLabs/codis/bin/codis-config /usr/local/codis/
5、cp /usr/local/go/bin/src/github.com/CodisLabs/codis/config.ini /usr/local/codis/conf/
6、cp -r /usr/local/go/bin/src/github.com/CodisLabs/codis/bin/assets /usr/local/codis
7、vim /etc/hosts
ip zookeeper-1
ip zookeeper-2
ip zookeeper-3
8、vim /usr/local/codis/conf/config.ini
设置zk=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
设置dashboard_addr=ip:18087
9、nohup ./codis-config -c ./conf/config.ini dashboard > ./log/codis_config.log 2>&1 &
10、./codis-config -c ./conf/config.ini slot init (这个命令执行时,codis-proxy必须全部在未启动状态)
{
"msg": "OK",
"ret": 0
}
看到上述消息,则说明执行slot init成功
(四)、部署codis-proxy(可部署一台,建议部署多台)
1、mkdir /usr/local/codis
2、mkdir /usr/local/codis/conf
3、mkdir /usr/local/codis/log
4、cp /usr/local/go/bin/src/github.com/CodisLabs/codis/bin/codis-proxy /usr/local/codis/
5、cp /usr/local/go/bin/src/github.com/CodisLabs/codis/config.ini /usr/local/codis/conf/
6、vim /etc/hosts
ip zookeeper-1
ip zookeeper-2
ip zookeeper-3
7、vim /usr/local/codis/conf/config.ini
设置zk=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
设置 dashboard_addr=ip:18087
设置 password=pwd 若使用密码,则不支持codis-ha插件。3.0以上版本支持密码
设置proxy_id=proxy_1
8、nohup ./codis-proxy -c ./conf/config.ini -L ./log/proxy.log --cpu=8 --addr=本proxy服务ip:19000 --http-addr=本proxy服务ip:11000 > codis_proxy_1.log 2>&1 &
六、 codis-HA插件(codis官方提供的从redis自动升级为主redis的插件,须先安装go)
codis-ha不支持auth,若使用codis-ha插件,请去掉密码设置
l 下载 cd /usr/local
go get github.com/ngaut/codis-ha
cd /usr/local/go/bin/src/github.com/ngaut/
cp -r codis-ha /usr/local
cd /usr/local/codis-ha
go build
l 创建脚本vim start_codis_ha.sh
l 内容 codis-ha --codis-config=codis-configIP:prort --log-level=“info” --productName=test &> ./logs/codis-ha.log &
创建日志目录:mkdir logs
给sh文件赋予权限:chmod +x start_codis_ha.sh
l 启动 sh start_codis_ha.sh
七、 codis扩容(数据迁移)
l 部署好codis-server
l Server Groops à +New Server Group 下图输入分组编号
l 选择新增的组,点击 +Add Ner Redis Instance 输入新增codis-server ip:port
l 上述操作添加完主从后,点击 ”Migrate Status” à Migrate Slot(S)
输入给扩容组分配的slot,第三项不能填写-1;
关于扩容分slot选择建议:将现在key最多的组内的slot分配给新的组。
八、 codis-server回收
l 先把要回收的codis-server的slot移动到仍在继续使用的组中
l 然后删除从redis,直至仅剩主redis
l 最后删除组
九、 安全性设置密码变更
1、修改codis-proxy的config.ini 中的password
2、通过web或者指令下线codis-proxy,重新上线codis-proxy
3、修改codis-server的安全性设置(若采用这种不重启redis-server的方式修改密码,请将修改的密码 同时修改进redis-server配置文件中,以防忘记)
1) redis-cli -h ip -p port(下述命令都是在redis客户端执行)
2) CONFIG SET requirepass password
3) CONFIG GET requirepass
提示:(error) NOAUTH Authentication required 则配置修改成功
4) auth password
5) CONFIG GET requirepass à 1) "requirepass" 2) " password "
6) redis-cli -a password -h ip -p port
7) CONFIG GET masterauth password
4、上述操作完后,重启dashboard
十、 常见问题
1)、Dashboard启动后,关闭,再启动,需要先到zookeeper里面删除:
/zk/codis/db_test/dashboard
2)、codis-config(dashboard)、codis-proxy需要以nohup方式启动
3)、zookeeper要求JAVA的环境才能运行,且jdk版本要求6.0以上(含6.0)
4)、codis-ha或者手动把一个slave提升为主之后,原有的主从关系就没有了,需要手动去把新提升主redis的数据同步到各个从redis中,然设置主从关系。
设置主从关系方式:
①web界面操作,删除原来master redis信息,重启挂掉的redis,将这个redis添加进组;
②指令操作方式
codis-config server list
codis-config server add <group_id> <redis_addr> <role>
codis-config server remove <group_id> <redis_addr>
codis-config server promote <group_id> <redis_addr>
codis-config server add-group <group_id>
codis-config server remove-group <group_id>
建议使用web界面操作,操作简单
5)、下线任一个proxy后且仍存在提供服务的proxy,codis仍是可以正常使用的,但是重新上线的proxy若出现一个配置不正常的proxy,则整个codis不可用。
6)、codis的1024个slot必须要分配完,才能对外提供服务,否则无法将添加的proxy改为online;
7)、solts迁移错误问题,
登录zk取消迁移任务
1.zkCli.sh –server ip:port
2.rmr /zk/codis/db_test/migrate_tasks
3.create /zk/codis/db_test/migrate_tasks “migrate”
4.rmr /zk/codis/db_test/fence
5.rmr /zk/codis/db_test/dashboard
6.rmr /zk/codis/db_test/proxy
7. ./codis-config -c ./conf/config.ini slot init
8)、部署完成后,若codis里的主从通过codis-ha进行自动切换后,须通过zkCli 进入zk,使用命令 “CONFIG SET key value” 对主从redis按照“五à(二)à6”的要求进行修改。
9)、主从codis-server,若对codis-server设置密码,requirepass和masterauth未设置相同的密码,codis无法自动完成主从数据同步。
十一、 Codis应用场景
海量的key,value值小于1M的缓存场景。
① 数据根据key,分布在 1024 个 slot 中,分布算法:crc32(key) % 1024;
② 数据迁移是由 codis-config 发起的,在 codis-config 看来,数据迁移的最小单位是 slot
③ 数据迁移时,选取slots的key-value 传输目标codis-server,完成后,删除本地key-value。这个操作是原子操作
十二、 Codis使用优化事项
1.关闭group master 的rdb和aof,提高master性能,开放slave的rdb和aof,确保数据不丢失;
2.
codis安装手册的更多相关文章
- Redis安装手册
转载请注明出处:http://www.cnblogs.com/robinjava77/p/5465146.html (Robin) 1)下载redis:wget http://download.red ...
- linux下subversion server安装手册
linux下subversion server安装手册 安装基于的Linux版本为:Red Hat Enterprise Linux Server release 6.3. 一 准备需要的安装包. ( ...
- Oracle 11g R2安装手册(图文教程)For Windows
1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下 官方网站: http://download.or ...
- oracle 11gR2 RAC安装手册
--oracle 11gR2 RAC安装手册 -----------------------------2013/10/29 参考三思笔记 http://files.cnblogs.com/jackh ...
- entos 7虚拟机安装手册
entos 7虚拟机安装手册. 环境:VMware虚拟机软件 centos7 最小化安装包 步骤: 第一步:新建虚拟机 第二步:选择要安装的虚拟机的操作系统镜像.如我这里使用的就是CentOS7最小化 ...
- Nginx安装手册
前提是搭建yum安装环境,见前面的教程资料 Nginx安装手册1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. gcc 安装ngin ...
- 豌豆夹Redis解决方案Codis安装使用
豌豆夹Redis解决方案Codis安装使用 1.安装 1.1 Golang环境 Golang的安装非常简单,因为官网被墙,可以从国内镜像如studygolang.com下载. [root@vm roo ...
- 泛微云桥e-Bridge安装手册
有时候不看官方文档进行配置,可能会出现奇奇怪怪的问题,SO转载一下官方文档,顺带学习. 想超长体验此软件,请搜索本博客内容,有破解方法,仅用来学习使用,顺带进行二次开发,请勿使用在商业用途,谢谢. 泛 ...
- Gpload安装手册(Linux版本)
Gpload安装手册(Linux版本) 一.python 2.7版本 Linux系统默认是安装python2.7的,如果没有需要手动安装(python版本要求2.4.4以上): 通过命令:python ...
随机推荐
- C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】
为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果不用参数, 写的简单点吧,就写从数据库查找到id和pw与用户输入一样的数据吧 sql:se ...
- Java后台判断请求来自PC端还是移动端
核心代码
- Microsoft Visual Studio 2012注册密钥
Microsoft Visual Studio Ultimate 2012 旗舰版 有效注册密钥:YKCW6-BPFPF-BT8C9-7DCTH-QXGWCMicrosoft Visual Studi ...
- sql server远程备份和恢复
sql server远程备份和恢复 SQLSERVER服务实例名称:192.168.0.2需要备份的数据库名称: a备份机器名称(Client端):192.168.0.3备份机用户:zf 密码:123 ...
- iis 7.5 0x80004005 静态文件 html、js、css 500错误
环境:iis 7.5 win7 64位 vs2012 问题:本地环境F5直接运行,没有任何问题,发布到IIS,静态文件不能访问,出现500错误,网上找了一堆解决办法,排除路径不正确,iis全部功能勾了 ...
- smarty模板引擎部分内容(思维导图)
- PHP面向对象基础part.1
- [Maven]Maven非常详细完整的教程
请参考:http://blog.csdn.net/u012152619/article/category/6239920 第四部分已看完 另外也可参看简书:http://www.jianshu.com ...
- 安装LockBox 3.7.0,用LockBox加密解密!
LockBox 官 方 网 站:http://lockbox.seanbdurkin.id.au/HomePage LockBox的Github 网址:https://github.com/S ...
- Error:The network adaptor could not establish the connection问题的解决办法
最近在学习hibernate 5.0.4, 自然而然就需要使用数据库,由于本人工作中一直使用Oracle,于是在自己的电脑上安装了Oracle 12.1.0, 安装完成使用一直没有问题,突然有一天使 ...