Codis集群3.03安装配置基础

Codis基础


01.codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别。

  • codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。

  • codis架构图如下:

clipboard.png

02.codis由codis-proxy,codis-redis,codis-dashboard和zookeeper组成。

  • codis-dashboard,codis的主控制节点。

  • codis-proxy,客户端连接redis的代理工具,本身实现了redis协议,和原生的redis没有太多区别。

  • codis-redis,实现redis实例功能。

  • zookeeper,用来存放数据路由和codis-proxy的节点元信息;codis-proxy之间通过zookeeper来同步信息。

03.实现环境:

  • zookeeper,10.1.20.1

  • zookeeper,10.1.20.2

  • zookeeper,10.1.20.3

  • codis-redis,10.1.20.4

  • codis-redis,10.1.20.5

  • codis-proxy,10.1.20.6

  • codis-proxy,10.1.20.7

  • dashboard,10.1.20.24


zookeeper安装


对象:10.1.20.1,10.1.20.2,10.1.20.3

01.zookeeper是一个分布式的开源框架,它能很好的管理集群,而且提供协调分布式应用的基本服务。

  • 它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

  • zookeeper本身可以以standalone模式(单节点状态)安装运行,不过它的长处在于通过分布式zookeeper集群(一个leader,多个follower),基于一定的策略来保证zookeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

02.zookeeper集群中主要有两个角色,分别是领导者和学习者。

  • 领导者(leader),用于负责进行投票的发起和决议,更新系统状态。

  • 学习者(learner),包括跟随者(follower)和观察者(observer)。

  • 跟随者用于接受客户端请求并向客户端返回结果,在选主过程中参与投票。

  • 观察者用于接受客户端连接,将写请求转发给领导者;但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统并提高读取速度。

03.zookeeper的集群数量:

  • zookeeper节点部署的越多,服务的可靠性也就越高。

  • zookeeper集群中,超过半数的节点宕机才造成整个集群宕机,所以节点应配置为奇数个。


04.安装jdk:

  • cd /root/Downloads,进入下载目录。

  • tar -zxvf jdk-7u60-linux-x64.tar.gz -C /usr/local/,解压至指定目录。

  • vim /etc/profile,修改profile文件,添加如下内容:

export JAVA_HOME=/usr/local/jdk1.7.0_60

export PATH=$JAVA_HOME/bin:$PATH

export PATH=$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

  • source /etc/profile,载入profile文件。

  • java -version,确认出现“Java(TM) SE Runtime Environment”等信息确保jdk安装好。

05.安装zookeeper:

  • cd /root/Downloads,进入下载目录。

  • wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz,下载zookeeper安装包。

  • tar -zxvf zookeeper-3.4.8.tar.gz -C /usr/local/,解压至指定目录。

  • mv /usr/local/zookeeper-3.4.8 /usr/local/zookeeper,更改目录名。

  • chown -R root:root /usr/local/zookeeper,更改目录属主属组。

  • vim /etc/profile,修改profile文件,添加如下内容:

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

  • source /etc/profile,载入profile文件。

  • cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg,修改配置文件名称。

06.启动zookeeper:

  • /usr/local/zookeeper/bin/zkServer.sh start,在任意一台服务器上启动zookeeper。

  • netstat -ntlp | grep 2181,查看2181是否启动。

  • /usr/local/zookeeper/bin/zkServer.sh status,确认zookeeper已启动,并且为standalone状态。

07.配置zookeeper集群:

  • vim /usr/local/zookeeper/conf/zoo.cfg,修改如下参数:

dataLogDir=/usr/local/zookeeper/log

dataDir=/usr/local/zookeeper/data

clientPort=2181

server.1=10.1.20.1:2888:3888

server.2=10.1.20.2:2888:3888

server.3=10.1.20.3:2888:3888

  • mkdir -p /usr/local/zookeeper/{log,data},创建对应的目录。

  • echo "1" > /usr/local/zookeeper/data/myid,在10.1.20.1服务器上执行,数字根据配置文件中,ip对应的server.#中的数字决定。

  • echo "2" > /usr/local/zookeeper/data/myid,在10.1.20.2服务器上执行。

  • echo "3" > /usr/local/zookeeper/data/myid,在10.1.20.3服务器上执行。

  • /usr/local/zookeeper/bin/zkServer.sh start,启动每天服务器上的zookeeper。

  • /usr/local/zookeeper/bin/zkServer.sh status,分别查询状态,应有1台为leader,2台为follewer。

  • /usr/local/zookeeper/bin/zkCli.sh -server 10.1.20.2:2181,从服务器连接其他zookeeper,查看是否成功。


Codis安装

对象:10.1.20.4,10.1.20.5,10.1.20.6,10.1.20.7,10.1.20.24

01.安装基本依赖包:

  • yum install -y git gcc make g++ gcc-c++ automake openssl-devel zlib-*

02.安装go语言包:

export GOROOT=/usr/local/go

export GOPATH=/usr/local/codis

export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

  • source /etc/profile,刷新/etc/profile文件。

  • go version,测试go语言是否正常。

  • vim /opt/hello.go,测试go命令是否能正常使用,添加如下内容:

package main

    import "fmt"


    func main(){

        fmt.Printf("hello world\n")

        }

  • go run /opt/hello.go,测试输出hello world。

03.安装godep:

  • mkdir -p /usr/local/codis/src/github.com/tools,创建codis目录。

  • cd /usr/local/codis/src/github.com/tools,进入codis工具目录。

  • go get -u github.com/tools/godep,下载godep。

  • cd godep/,进入安装目录。

  • go install ./,安装godep,检查该程序有无安装在/usr/local/codis/bin下。

  • which godep,测试系统是否识别。

04.安装codis:

  • mkdir -p /usr/local/codis/src/github.com/CodisLabs,创建安装目录。

  • cd /root/Downloads,进入下载目录。

  • tar -zxvf /root/Downloads/codis-3.0.3.tar.gz,解压安装文件。

  • cp -rf /root/Downloads/codis-3.0.3 /usr/local/codis/src/github.com/CodisLabs/codis,复制安装目录。

  • cd /usr/local/codis/src/github.com/CodisLabs/codis,进入安装目录。

  • make && make gotest,测试安装,确定不报错为安装成功。

  • 安装成功后,会在/usr/local/codis/src/github.com/CodisLabs/codis/bin目录下产生如下文件:

1.png

Codis集群3.03安装配置基础

05.创建程序目录:

  • mkdir -p /codis/{bin,conf,log,scripts,run,database},创建目录结构。

  • cp -rp /usr/local/codis/src/github.com/CodisLabs/codis/bin/* /codis/bin/,复制因公程序至程序目录。

  • cp /usr/local/codis/src/github.com/CodisLabs/codis/extern/redis-2.8.21/src/{redis-benchmark,redis-check-aof,redis-check-dump,redis-cli} /codis/bin/,复制redis的程序至程序目录。

  • cp /usr/local/codis/src/github.com/CodisLabs/codis/extern/redis-2.8.21/redis.conf /codis/conf/redis6379.conf,复制redis配置文件至redis主配置。

  • cp /usr/local/codis/src/github.com/CodisLabs/codis/extern/redis-2.8.21/redis.conf /codis/conf/redis6380.conf,复制redis配置文件至redis从配置。

集群配置


01.配置并启动codis-dashboard(10.1.20.24)。

  • /codis/bin/codis-dashboard –default-config | tee /codis/conf/dashboard.toml,生成配置文件。

  • vim /codis/conf/dashboard.toml,修改如下配置:

coordinator_addr = "10.1.20.1:2181,10.1.20.2:2181,10.1.20.3:2181"

product_name = "codis-jym"

  • coordinator_name为外部存储的类型,为zookeeper或者etcd,不能用其他名称;coordinator_addr为外部存储zookeeper的集群地址。

  • product_name为codis集群名称,可以自定义;product_auth为codis集群认证密码,默认为空。

  • nohup /codis/bin/codis-dashboard –config=/codis/conf/dashboard.toml –log=/codis/log/dashboard.log &,启动codis-dashboard,启动后会产生一个18080的端口。


02.配置并启动codis-proxy(10.1.20.6,10.1.20.7)。

  • /codis/bin/codis-proxy –default-config | tee /codis/conf/proxy.toml,产生默认配置文件。

  • vim /codis/conf/proxy.toml,修改如下配置:

product_name = "codis-jym"

jodis_addr = "10.1.20.1:2181,10.1.20.2:2181,10.1.20.3:2181"

  • nohup /codis/bin/codis-proxy –config=/codis/conf/proxy.toml –log=/codis/log/proxy.log &,启动codis-proxy。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –create-proxy -x 10.1.20.6:11080,将proxy添加进集群管理中。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –create-proxy -x 10.1.20.7:11080,将proxy添加进集群管理中。

  • http://10.1.20.24:18080/topom,获取dashboard的json文件,查看proxy的状态,如下图:

12.png

  • Codis集群3.03安装配置基础/codis/bin/codis-admin –dashboard=10.1.20.24:18080 –list-proxy,查看proxy集群。

03.配置并启动codis-sever(10.1.20.4,10.1.20.5)。

  • vim /codis/conf/redis6379.conf,将6379配置为master服务器,修改如下配置:

pidfile /codis/run/redis6379.pid

timeout 3600

tcp-keepalive 60

logfile "/codis/log/redis6379.log"

#save 900 1

#save 300 10

#save 60 10000

dbfilename dump6379.rdb

dir /codis/database/redis6379

  • vim /codis/conf/redis6380.conf,将6380配置为master服务器,修改如下配置:

pidfile /codis/run/redis6380.pid

timeout 3600

tcp-keepalive 60

logfile "/codis/log/redis6380.log"

dbfilename dump6380.rdb

dir /codis/database/redis6380

  • /codis/bin/codis-server /codis/conf/redis6379.conf &,启动6379实例。

  • /codis/bin/codis-server /codis/conf/redis6380.conf &,启动6380实例。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080  –create-group –gid=1,新建一个redisgroup,gid为1。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080  –create-group –gid=2,新建一个redisgroup,gid为2。

10.1.20.4上

    1. /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –group-add –gid=1 –addr=10.1.20.4:6379,将6379加入gid1。

    2. /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –group-add –gid=2 –addr=10.1.20.4:6380,将6380加入gid2。

10.1.20.5上

    1. /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –group-add –gid=2 –addr=10.1.20.5:6379,将6379加入gid1。

    2. /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –group-add –gid=1 –addr=10.1.20.5:6380,将6379加入gid1。

  • 实例的放置倾向于交叉放置,每台codis-sever上放置不同的主从实例。

  • /codis/bin/codis-admin –dashboard=10.1.20.24:18080 –list-group,查看group情况。

04.配置并启动codis-sever(10.1.10.24,可选):

  • /codis/bin/codis-admin –dashboard-list –zookeeper=10.1.20.1:2181 | tee /codis/conf/fe.json,通过zookeeper下载fe配置文件。

  • nohup /codis/bin/codis-fe –dashboard-list=/codis/conf/fe.json –listen=10.1.20.24:8080 &,启动codis-fe。

  • http://10.1.20.24:8080/,访问图形化界面。

原创文章,作者:wenjun8888,如若转载,请注明出处:http://www.178linux.com/49320

(0)
wenjun8888wenjun8888
上一篇 2016-09-26
下一篇 2016-09-26

相关推荐

  • 文本编辑秘籍之vim宝典

    一、初识Vim Vim是从 vi 发展出来的一个文本编辑器。其功能非常强大,熟练掌握vim的常用操作和快捷操作能让我们从繁杂的文本处理任务中杀出血路,在运维的道路上愉快前行。 vim使用简单命令组合来完成复杂操作,同时也支持基本正则表达式。 二、拨开vim迷雾: 2.1 使用vim打开一个文件: 如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑…

    Linux干货 2016-08-10
  • 优云软件数据专家最佳实践:数据挖掘与运维分析

    这份研究报告,作者是优云软件数据专家陈是维,在耗时1年时间制作的一份最佳实践,今天和大家分享下,关于《数据采矿和运维分析》,共同探讨~ 数据挖掘(Data Mining)是从大量数据中提取或“挖掘”知识。 广义数据挖掘:数据挖掘是从存放在数据库、数据仓库或其它信息库中的大量数据挖掘有趣知识的过程。 数据挖掘技术侧重:1)概率与数理统计 2)数据库技术 3)人…

    大数据运维 2016-07-16
  • 读写执行权限对文件和目录的影响

    权限的作用 对于linux运维工作来说,熟练掌握文件管理技能是非常重要的,所谓“一切皆文件”,控制住文件的权限,可以说也就控制住了linux系统。而且,运维的工作要和成千上万的文件打交道,对于文件属性的熟识程度对于工作的顺利开展有着深远的影响。综上,了解文件,熟悉文件,掌握文件,是我们运维的一个重要的课程。 不同权限对文件和目录的影响 首先,我们现对权限进行…

    Linux干货 2017-07-30
  • FHS文件系统结构

    FHS文件系统结构 FHS(Filesystem Hierarchy Standard)文件系统层次结构标准是根据无数开发者的经验总结而来的,多数Linux版本采用这种文件组织形式,FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理,并且会维持更新。

    Linux干货 2016-10-29
  • Week5 grep和find命令及正则表达式练习

    1、显示当前系统上root、fedora或user1用户的默认shell;   cat /etc/passwd  | grep -E "^\<root\>|^\<fedora\>|^\<\user1\>" |&nb…

    Linux干货 2017-02-14
  • Linux文件类型及颜色标识

    文件类型(共7种): – :普通文件 d:目录文件 (directory) c:字符设备文件 (char) b:块设备文件 (block) s:本地域套接口 (socket) p:有名管道 (pipeline) l:符号连接 (link) 关于硬链接、软连接、复制之间的区别说明: 上图中,我为photo.png这个图片文件建立了一个拷贝(phot…

    Linux干货 2016-10-16