文档章节

接触Codis&Codis-ha

lnucel
 lnucel
发布于 2015/12/29 18:25
字数 1142
阅读 149
收藏 1
点赞 0
评论 0

之前博客地址

为什么学习和使用codis,在这略去1w字,参考文档如下

#文档地址    http://qiniuppt.qiniudn.com/liuqi.pdf

#视频地址    http://qiniu-opensource.qiniudn.com/ecug-2014-liuqi.mp4


头一次折腾codis,把自己的经历写一写,希望对初学者有一些帮助。

安装codis的编译环境需要有 golang 、git 环境。运行环境需要依赖有可用的zookeeper

一、依赖环境安装

1、安装编译环境前的一些依赖安装


yum install mercurial
yum install git
yum install gcc


以上这些命令在正常的情况下执行都没有问题,但在安装git的过程中遇到了一些问题,导致使用这些命令安装不成功,在备用参考命令里有,没有使用yum安装git。


2、安装go环境(一定要用1.3.1的)

wget          https://storage.googleapis.com/golang/go1.3.1.linux-amd64.tar.gz
#curl -O -L https://storage.googleapis.com/golang/go1.3.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.3.1.linux-amd64.tar.gz

#修改配置文件

vi /etc/profile


#profile文件修改如下,路径根据实际情况修改

export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/data/gopkg


#刷新配置文件

source /etc/profile


3、安装zookeeper的方式 


wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -C /usr/local -xzf  zookeeper-3.4.6.tar.gz
go get github.com/wandoulabs/codis
cp zoo_sample.cfg  zoo.cfg
#然后启动zookeeper
./zkServer.sh start


安装到这里,依赖环境已经全部完成,下面就可以惊心动魄的codis安装,其实搞起来也很简单,熟练之后十几秒就能搞定。


二、安装codis

go get github.com/wandoulabs/codis
cd  {$gopath}/src/github.com/wandoulabs/codis  
#{$gopath}改成自己的目录即可
./bootstrap.sh
make gotest

 

安装到这里在codis下面会生成一个文件deploy.tar 安装包里有依赖的go环境,复制过去就可以在生产环境使用,算是一个彩蛋,对于有代码洁癖的人来说绝对是酸爽。


下面继续开始神奇之旅


然后进入 sample 修改config.ini配置文件

配置文件详解

zk=localhost:2181  #zookeeperk的ip和端口
product=test       #zookeeper里节点名字,最好一个业务线一个
proxy_id=proxy_1   #启动proxy的id,一个proxy需要有一个配置文件
net_timeout=5      #超时时间,单位 秒
dashboard_addr=localhost:18087 #管理界面的ip和端口,最好设置成0.0.0.0监控所有网卡

然后就可以在浏览器观看dashboard界面了

http://{安装codis机器ip}:18087

如果不出意外你就可以看到管理界面了。当时遇到一点小问题,dashboard_addr=localhost:18087这个参数忘了改,在另外一台机器访问就出问题了。为了监控所以网卡一定要设置成 dashboard_addr=0.0.0.0:18087


三、安装codis-ha

codis-ha也是一个很酸爽的东西,可以帮你检查每个group下的master和slave的状态,当master挂的时候自动把slave提升为主。

下面是安装脚本 

go get github.com/ngaut/codis-ha
cd  {$gopath} /src/github.com/ngaut/codis-ha
go build
#然后启动
nohup ./codis-ha --codis-config={安装codis的机器ip}:18087 --productName=test &


注意:productName一定要为sample下config.ini里product的值


四、折腾


上面的安装成功之后就可以在dashboard操作增加redis 实例,和故意把master整挂,等各种操作,一切都很神奇,非常感谢作者,我是用node.js写的一段灌数据的脚本,速度还是刚刚的。codis有丰富的api,走的是http协议,相当丰盛,dashboard的操作都是调用的api,目前正在研究api的左右,等有时间写出来。


五、注意事项


1、在管理页面增加redis实例,需要先在机器启动实例才能,添加标准为 机器ip:端口 比如 192.168.1.2:6380

2、把一个slave提升为主之后,原有的主从关系就没有了,需要重新设置。

3、在机器启动新的proxy之后,在dashboard就可以刷新刷出来,在同一个dashboard看见的proxy都是平级关系。


因为时间紧张,后续会继续完善神奇的codis之旅。


备用命令、脚本

#安装git 的另外一种方式

wget https://www.kernel.org/pub/software/scm/git/git-2.3.0.tar.gz
tar -zxvf git-2.3.0.tar.gz
cd git-2.3.0
autoconf
./configure --prefix=/usr/local/git/
make  prefix=/usr install install-doc install-html install-info
make install


#修改配置文件 for git

vi /etc/profile


#修改配置文件如下

export GIT_HOME=/usr/local/git/
export PATH=$PATH:$GIT_HOME/bin


#刷新配置文件

source /etc/profile


#灌数据的脚本,一段node.js代码

var redis = require("redis");
var client = redis.createClient(6379, '127.0.0.1', {connect_timeout: 1});
for (var i = 0; i < 30; i++) {
client.set('mykey:'+i, 'mykey:'+i, function(error, res) {
if(error) {
      console.log(error);
      } else {
     //console.log(res);
 }
        });
console.log(i);
}



© 著作权归作者所有

共有 人打赏支持
lnucel
粉丝 0
博文 8
码字总数 2836
作品 0
海淀
瞻博-Juniper-SSG-双机高可用(HA)平滑升级经验分享篇

已经十一月第三周最后一天了,博客依然是那个博客,学技术的那个人依然是那个人,哈哈。这里不免稍微感性一番,确实这一年在忙碌中过去了,几乎都没感知的过去了。依稀记得一月份的目标和指标...

Allen在路上 ⋅ 2016/11/20 ⋅ 0

Mirantis OpenStack fuel 物理机部署

理机上使用fuel 5.1部署openstack HA 存储使用ceph 2014年12月5日 15:58 新浪博客 How to Install Mirantis Fuel 5.1 Openstack wihceph 作者:@法不荣情 本人刚开始接触openstack,对一切还...

剑气满天 ⋅ 2015/08/18 ⋅ 3

Cisco HSRP 双机配置

Cisco HSRP配置 网络拓扑 配置命令 HA-A配置命令 HA-A>enable HA-A#conf terminal Enter configuration commands, one per line. End withCNTL/Z. HA-A(config)#int gigabitEthernet 0/2 HA......

思懿 ⋅ 2016/05/23 ⋅ 0

HILLSTONE E5560防火墙HA配置

实验环境 两台HILLSTONE E5560 一根网线(HA连接) 实验拓扑 Hillstone-A HA配置 选择“HA控制连接接口1”,使用HA0即可; 配置HA互联IP地址,1.1.1.1/30; 配置HA簇ID,选择一个簇ID表示开启...

wangcc127 ⋅ 2017/04/19 ⋅ 0

使用heartbeat做双机热备笔记

我用到的集群系统主要就2种: 高可用(High Availability)HA集群, 使用Heartbeat实现;也会称为”双机热备”, “双机互备”, “双机”。 负载均衡群集(Load Balance Cluster),使用Linux Virtu...

红薯 ⋅ 2008/10/16 ⋅ 0

HA集群配置

改hostname 主:改为master 从:还未slave vip :192.168.23.110 主从同事执行 vim /etc/hosts 192.168.23.135 master192.168.23.129 slave yum install -y heartbeat yum install -y libne......

AM学linux ⋅ 2017/08/08 ⋅ 0

RabbitMQ高可用镜像队列

RabbitMQ高可用镜像队列 在分布式系统中,通常使用多个术语来标识主要副本和辅助副本。本指南通常使用“主”来引用队列的主要副本,而对于辅助副本则使用“镜像”。但是,你会发现“master”...

全能程序猿 ⋅ 2017/12/14 ⋅ 0

求指导:mysql存储过程中 select 单独查询的结果数量 和 循环遍历游标 插入到表中的数据数量为什么不一致呢?

求指导:mysql存储过程中 select 单独查询的结果数量 和 循环遍历游标 插入到表中的数据数量为什么不一致呢? BEGIN DECLARE azcx0089 VARCHAR(36); DECLARE ahax0001 VARCHAR(36); DECLARE ...

zsj2643 ⋅ 2017/04/08 ⋅ 0

华为VRRP配置

高级应用-VRRP配置 交换机VRRP配置 1 功能需求及组网说明 VRRP配置 『配置环境参数』 HA-A通过E0/24与汇聚交换机相连,通过E0/23上行 HA-B通过E0/24与汇聚交换机相连,通过E0/23上行 交换机H...

思懿 ⋅ 2016/08/24 ⋅ 0

Apache+heartbeat HA方案

Apache+heartbeat HA方案 主从热备,当master 宕机自动切换到slave提供服务,直到master恢复后自动切换到master提供服务。 1、系统环境 Master: ha01 eth0:192.168.58.101 eth1:192.168.107....

twtcom001 ⋅ 2009/02/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部