转载请注明出处:https://www.cnblogs.com/format-ch/p/9323841.html

一、软件下载

  1. 下载
[root@localhost ~]# cd /home/download/
[root@localhost download]# ll
total 353324
-rw-r--r--. 1 root root 132489256 Jun 28 02:24 go1.10.3.linux-amd64.tar.gz
-rw-r--r--. 1 root root 190890122 May 30 04:58 jdk-8u171-linux-x64.tar.gz
-rw-r--r--. 1 root root 36667596 May 30 04:58 zookeeper-3.4.12.tar.gz
  1. 解压到相应目录

    全部解压到/usr/local/目录下,Codis也会安装此目录(或解压到自己习惯的目录)

//命令:
tar -zxvf go1.10.3.linux-amd64.tar.gz [root@localhost download]# cd /usr/local/
[root@localhost local]# ll
total 1704
drwxr-xr-x. 5 root root 160 Jun 28 03:40 go
drwxr-xr-x. 8 10 143 255 Mar 28 20:18 jdk1.8.0_171
drwxr-xr-x. 11 bean bean 4096 May 30 05:39 zookeeper-3.4.12

二、修改环境变量(/etc/profile)

修改完之后执行 source /etc/profile 使生效

//GOROOT就是go的安装目录,codis编译的时候,会根据这个目录来找go。
//GOPATH就是codis的根目录,之后下载的时候会直接下载到这个目录。 export GOROOT=/usr/local/go export GOPATH=/usr/local/codis JAVA_HOME=/usr/local/jdk1.8.0_171 export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.12 CLASS_PATH=$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$GOROOT/bin:$GOPATH/bin export CODIS_HOME=$GOPATH/src/github.com/CodisLabs/codis

三、zk配置

目前部署单节点

  1. 修改配置文件:
cd /usr/local/zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

注意在dataDir目录下,新建一个myid,写入1 dataDir目录在zoo.cfg里有配置

//命令
cd /usr/local/zookeeper-3.4.12/dataDir
vim myid
  1. 启动

    bin目录下执行下名命令

./zkServer.sh start

四、下载Codis源码

  1. 新建目录,必须和官网一样,不一样,要报错。
mkdir -p $GOPATH/src/github.com/CodisLabs
  1. 进入目录下载

    Codis 源代码需要下载到$GOPATH/src/github.com/CodisLabs/codis

[root@localhost CodisLabs]# pwd
/usr/local/codis/src/github.com/CodisLabs
[root@localhost CodisLabs]# git clone https://github.com/CodisLabs/codis.git -b release3.2

五、编译Codis源码

cd $GOPATH/src/github.com/CodisLabs/codis

make

六、启动codis-dashboard

  1. 修改配置文件
[root@localhost config]# pwd
/usr/local/codis/src/github.com/CodisLabs/codis/config
[root@localhost config]# vim dashboard.toml
  • 将默认注册中心修改为zookeeper
#coordinator_name = "filesystem"
#coordinator_addr = "/tmp/codis"
coordinator_name = "zookeeper"
coordinator_addr = "127.0.0.1:2181"
  1. 启动命令

    在Codis目录下执行如下操作

[root@localhost codis]# pwd
/usr/local/codis/src/github.com/CodisLabs/codis [root@localhost codis]# nohup ./bin/codis-dashboard --ncpu=1 --config=config/dashboard.toml --log=log/dashboard.log --log-level=WARN &
  1. 详细说明( 摘自官方文档,详见 : GitHub )
  • 启动参数说明:
$ ./bin/codis-dashboard -h
Usage:
codis-dashboard [--ncpu=N] [--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR]
codis-dashboard --default-config
codis-dashboard --version Options:
--ncpu=N 最大使用 CPU 个数
-c CONF, --config=CONF 指定启动配置文件
-l FILE, --log=FILE 设置 log 输出文件
--log-level=LEVEL 设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN
默认配置文件:
$ ./bin/codis-dashboard --default-config | tee dashboard.toml
##################################################
# #
# Codis-Dashboard #
# #
################################################## # Set Coordinator, only accept "zookeeper" & "etcd"
coordinator_name = "zookeeper"
coordinator_addr = "127.0.0.1:2181" # Set Codis Product {Name/Auth}.
product_name = "codis-demo"
product_auth = "" # Set bind address for admin(rpc), tcp only.
admin_addr = "0.0.0.0:18080"
参数 说明
coordinator_name 外部存储类型,接受 zookeeper/etcd
coordinator_addr 外部存储地址
product_name 集群名称,满足正则 \w[\w.-]*
product_auth 集群密码,默认为空
admin_addr RESTful API 端口

  1. 停止命令
./bin/codis-admin --dashboard=192.168.30.128:18080 --shutdown
七、启动Codis Proxy
  1. 修改配置文件
# vim config/proxy.toml
  • 修改为zk注册中心
jodis_name = "zookeeper"
jodis_addr = "127.0.0.1:2181"
jodis_auth = ""
jodis_timeout = "20s"
jodis_compatible = false
  1. 启动命令
nohup ./bin/codis-proxy --ncpu=1 --config=config/proxy.toml --log=log/proxy.log --log-level=WARN &

codis-proxy 启动后,处于 waiting 状态,监听 proxy_addr 地址,但是不会 accept 连接,添加到集群并完成集群状态的同步,才能改变状态为 online。添加的方法有以下两种:

  • 通过 codis-fe 添加:通过 Add Proxy 按钮,将 admin_addr 加入到集群中(见下方 9.3 页面配置章节);
  • 通过 codis-admin 命令行工具添加,方法如下:
./bin/codis-admin --dashboard=127.0.0.1:18080 --create-proxy -x 127.0.0.1:11080

其中 127.0.0.1:18080 以及 127.0.0.1:11080 分别为 dashboard 和 proxy 的 admin_addr 地址;

添加过程中,dashboard 会完成如下一系列动作:

  • 获取 proxy 信息,对集群 name 以及 auth 进行验证,并将其信息写入到外部存储中;
  • 同步 slots 状态;
  • 标记 proxy 状态为 online,此后 proxy 开始 accept 连接并开始提供服务;
  1. 详细说明( 摘自官方文档,详见 : GitHub )
  • 启动参数说明:
$ ./bin/codis-proxy -h
Usage:
codis-proxy [--ncpu=N] [--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR] [--host-proxy=ADDR] [--ulimit=NLIMIT]
codis-proxy --default-config
codis-proxy --version Options:
--ncpu=N 最大使用 CPU 个数
-c CONF, --config=CONF 指定启动配置文件
-l FILE, --log=FILE 设置 log 输出文件
--log-level=LEVEL 设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN
--ulimit=NLIMIT 检查 ulimit -n 的结果,确保运行时最大文件描述不少于 NLIMIT
默认配置文件
$ ./bin/codis-proxy --default-config | tee proxy.toml
##################################################
# #
# Codis-Proxy #
# #
################################################## # Set Codis Product {Name/Auth}.
product_name = "codis-demo"
product_auth = "" # Set bind address for admin(rpc), tcp only.
admin_addr = "0.0.0.0:11080" # Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
proto_type = "tcp4"
proxy_addr = "0.0.0.0:19000" # Set jodis address & session timeout.
jodis_addr = ""
jodis_timeout = 10
jodis_compatible = false # Proxy will ping-pong backend redis periodly to keep-alive
backend_ping_period = 5 # If there is no request from client for a long time, the connection will be droped. Set 0 to disable.
session_max_timeout = 1800 # Buffer size for each client connection.
session_max_bufsize = 131072 # Number of buffered requests for each client connection.
# Make sure this is higher than the max number of requests for each pipeline request, or your client may be blocked.
session_max_pipeline = 1024 # Set period between keep alives. Set 0 to disable.
session_keepalive_period = 60
参数 说明
product_name 集群名称,参考 dashboard 参数说明
product_auth 集群密码,默认为空
admin_addr RESTful API 端口
proto_type Redis 端口类型,接受 tcp/tcp4/tcp6/unix/unixpacket
proxy_addr Redis 端口地址或者路径
jodis_addr Jodis 注册 zookeeper 地址
jodis_timeout Jodis 注册 session timeout 时间,单位 second
jodis_compatible Jodis 注册 zookeeper 的路径
backend_ping_period 与 codis-server 探活周期,单位 second,0 表示禁止
session_max_timeout 与 client 连接最大读超时,单位 second,0 表示禁止
session_max_bufsize 与 client 连接读写缓冲区大小,单位 byte
session_max_pipeline 与 client 连接最大的 pipeline 大小
session_keepalive_period 与 client 的 tcp keepalive 周期,仅 tcp 有效,0 表示禁止

注:Codis3 会将 jodis 节点注册在 /jodis/{PRODUCT_NAME} 下,这点与 Codis2 不太兼容,所以为了兼容性,可以考虑将 jodis_compatible 设置成 true

  1. 停止命令
./bin/codis-admin --proxy=192.168.30.128:11080 --auth="" --shutdown
  1. 启动第二个Codis Proxy
  • config目录下proxy.toml配置文件复制一份为proxy19001.toml(原文件默认端口为19000)
[root@localhost codis]# pwd
/usr/local/codis/src/github.com/CodisLabs/codis
[root@localhost codis]# cp config/proxy.toml config/proxy19001.toml
  • 编辑复制好的配置文件,修改RESTful API 端口与代理端口端口如下
vim config/proxy19001.toml
---------------------------------
# Set bind address for admin(rpc), tcp only.
admin_addr = "0.0.0.0:11081" # Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
proto_type = "tcp4"
proxy_addr = "0.0.0.0:19001"
  • 启动第二个代理
nohup ./bin/codis-proxy --ncpu=1 --config=config/proxy19001.toml --log=log/proxy19001.log --log-level=WARN &
  • 将代理添加入集群(也可在Fe操作,见下方 9.3 页面配置章节)
./bin/codis-admin --dashboard=127.0.0.1:18080 --create-proxy -x 127.0.0.1:11081
八、启动Codis Server
  1. 启动命令
nohup ./bin/codis-server config/redis.conf &
    默认日志路径
/tmp/redis_6379.log
  1. 停止命令
 ./bin/redis-cli shutdown
  1. 启动多个Codis Server
  • config目录下redis.conf配置文件复制3份,总共4份,做两个server各配一个从服务
localhost:6379 localhost:7379
localhost:6380 localhost:7380
[root@localhost codis]# pwd
/usr/local/codis/src/github.com/CodisLabs/codis
[root@localhost codis]# cp config/redis.conf config/redis7379.conf
[root@localhost codis]# cp config/redis.conf config/redis6380.conf
[root@localhost codis]# cp config/redis.conf config/redis7380.conf
  • 修改配置文件(示例为6380,其余操作相同)
vim config/redis6380.conf
------------------------------
port 6380
pidfile /tmp/redis_6380.pid
logfile "/tmp/redis_6380.log"
dbfilename dump6380.rdb
dir /tmp/redis_6380
  • 启动
nohup ./bin/codis-server config/redis6380.conf &
  • 依次修改其余两个配置文件并启动

服务启动后如其余终端无法连接服务,请将相关配置文件redis.confbind 127.0.0.1改为bind 0.0.0.0,原设置只可本机访问,修改后所有IP都可访问

九、启动Codis FE
  1. 启动命令
nohup ./bin/codis-fe --ncpu=1 --log=log/fe.log --log-level=WARN --zookeeper=127.0.0.1:2181 --listen=0.0.0.0:8080 &

前一个参数是zk的地址端口,后面一个是fe的地址端口

  1. 详细说明( 摘自官方文档,详见 : GitHub )
  • 启动参数说明:
$ ./bin/codis-fe -h
Usage:
codis-fe [--ncpu=N] [--log=FILE] [--log-level=LEVEL] [--assets-dir=PATH] (--dashboard-list=FILE|--zookeeper=ADDR|--etcd=ADDR|--filesystem=ROOT) --listen=ADDR
codis-fe --version Options:
--ncpu=N 最大使用 CPU 个数
-d LIST, --dashboard-list=LIST 配置文件,能够自动刷新
-l FILE, --log=FILE 设置 log 输出文件
--log-level=LEVEL 设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN
--listen=ADDR HTTP 服务端口

配置文件 codis.json 可以手动编辑,也可以通过 codis-admin 从外部存储中拉取,例如:

$ ./bin/codis-admin --dashboard-list --zookeeper=127.0.0.1:2181 | tee codis.json
[
{
"name": "codis-demo",
"dashboard": "127.0.0.1:18080"
},
{
"name": "codis-demo2",
"dashboard": "127.0.0.1:28080"
}
]
  1. 页面配置
  • 访问Fe地址:http://192.168.30.128:8080

  • 点击项目名进行具体页面

  • 通过Fe添加Codis-proxy

    如图,在输入框中填入启动的代理地址,之后点击New Proxy进行添加,同 7.2 codis-admin 命令行工具添加

  • 通过fe添加group

    如图在 Proxy 栏可看到我们已经启动的 Proxy, 但是 Group 栏为空,因为我们启动的 codis-server 并未加入到集群

    添加 NEW GROUPNEW GROUP 行输入 1,再点击 NEW GROUP 即可

    添加 Codis Server,Add Server 行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击 Add Server 按钮即可

    每个group只能有一个主,其余为从服务,可多从,点击如图所示按钮,将服务配置为从服务,之后按照上述 8.3 表格规划依次添加及配置好其余服务

说明: 上述 8.3 部署 Codis Server 多实例时为拷贝3份数据,更改相关主要配置信息,并未设置主从,原因为 codis-fe 管理端可以配置主从,上述 9.3最后一点也说明了通过fe配置主从方式,也可以直接通过修改redis.conf配置文件来设置主从,修改如下:

//编辑从服务配置文件
vim config/redis7380.conf
//增加如下行,配置主服务地址信息
slaveof 192.168.30.128 6380
  • 通过fe初始化slot

    新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),通过 fe 提供的 rebalance all slots 按钮可以进行快速初始化,也可自定义配置

十、命令行工具( 摘自官方文档,详见 : GitHub )

注意:使用 codis-admin 是十分危险的。

  1. codis-dashboard 异常退出的修复

当 codis-dashboard 启动时,会在外部存储上存放一条数据,用于存储 dashboard 信息,同时作为 LOCK 存在。当 codis-dashboard 安全退出时,会主动删除该数据。当 codis-dashboard 异常退出时,由于之前 LOCK 未安全删除,重启往往会失败。因此 codis-admin 提供了强制删除工具:

  • 确认 codis-dashboard 进程已经退出(很重要);
  • 运行 codis-admin 删除 LOCK:
$ ./bin/codis-admin --remove-lock --product=codis-demo --zookeeper=127.0.0.1:2181
  1. codis-proxy 异常退出的修复

通常 codis-proxy 都是通过 codis-dashboard 进行移除,移除过程中 codis-dashboard 为了安全会向 codis-proxy 发送 offline 指令,成功后才会将 proxy 信息从外部存储中移除。如果 codis-proxy 异常退出,该操作会失败。此时可以使用 codis-admin 工具进行移除:

  • 确认 codis-proxy 进程已经退出(很重要);
  • 运行 codis-admin 删除 proxy:
$ ./bin/codis-admin --dashboard=127.0.0.1:18080 --remove-proxy --addr=127.0.0.1:11080 --force

选项 --force 表示,无论 offline 操作是否成功,都从外部存储中将该节点删除。所以操作前,一定要确认该 codis-proxy 进程已经退出。

参考:https://github.com/CodisLabs/codis


Codis3.2 安装部署的更多相关文章

  1. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  2. KVM安装部署

    KVM安装部署 公司开始部署KVM,KVM的全称是kernel base virtual machine,对KVM虚拟化技术研究了一段时间, KVM是基于硬件的完全虚拟化,跟vmware.xen.hy ...

  3. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  4. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

  5. C# winform安装部署(转载)

    c# winform 程序打包部署 核心总结: 1.建议在完成的要打包的项目外,另建解决方案建立安装部署项目(而不是在同一个解决方案内新建),在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目 ...

  6. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

  7. 比Ansible更吊的自动化运维工具,自动化统一安装部署_自动化部署udeploy 1.0

    新增功能: 2015-03-11 除pass(备份与更新)与start(启动服务)外,实现一切自动化. 注:pass与start设为业务类,由于各类业务不同,所以无法实现自动化.同类业务除外,如更新的 ...

  8. 比Ansible更吊的自动化运维工具,自动化统一安装部署自动化部署udeploy 1.0 版本发布

    新增功能: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一shell脚本开发,由框架统一调用. 并发多线程部署,不管多少台服务器,多少个服务,同时发起线程进行更新.部署.启动. 提高list规则 ...

  9. SCCM 2012 R2安装部署过程和问题(三)

    上篇 SCCM 2012 R2安装部署过程和问题(二) 个人认为对于使用SCCM 2012的最重要的经验是耐心. SCCM采用分布式部署的架构,不同的站点角色可以部署在不同的服务器上,站点角色之间的通 ...

随机推荐

  1. ArchLinux中证书错误解决方案

    ca-certificates 更新 x509: failed to load system roots and no roots provided. curl error: Problem with ...

  2. React Native 一些事

    ReactJS 是否准备好 有时候我们常常需要监听 ReactJS 的的加载情况. 比如说,当获取一条推送,应用还没有起来,通过点击推送启动应用后,而推送中包含一些我们感兴趣的字段需要处理,我们如果直 ...

  3. LINQ -2015-04-27

    LINQ--language-integrated-query 1.它和sql语言区别呢? SQL语言常用在ralational-database中,而LINQ对内存数据,数据库,xml文件等多种形式 ...

  4. WINDOWS SERVER 2012标准版密钥

    Windows Server 2012 R2 安装密钥(只适用安装,不支持激活) 标准版 = NB4WH-BBBYV-3MPPC-9RCMV-46XCB MMPXK-NBJDQ-JPM34-WX3FM ...

  5. css属性详解和浮动

    一.CSS属性组成和作用 属性:属性值 1)每个css样式都必须由两部分组成:选择符和声明 注:声明又包括属性和属性值 2)css属性:属性是指定选择符具有的属性,他是css的核心,css2共有150 ...

  6. Xshell和Xftp登陆WSL

    参考:https://zhuanlan.zhihu.com/p/34950508 关键步骤: 1. 下载Xshell和Xftp 2.  拷贝ssh配置文件 sudo cp /etc/ssh/sshd_ ...

  7. 【算法笔记】B1051 复数乘法

    题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805274496319488 思路: 难点在于对复数其他形式的认 ...

  8. es第十篇:Elasticsearch for Apache Hadoop

    es for apache hadoop(elasticsearch-hadoop.jar)允许hadoop作业(mapreduce.hive.pig.cascading.spark)与es交互. A ...

  9. sort sorted() reverse() reversed() 的区别1

    sort()是可变对象(字典.列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值.sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组.字符串是不具有这些方法的 ...

  10. 《大数据日知录》读书笔记-ch2数据复制与一致性

    CAP理论:Consistency,Availability,Partition tolerance 对于一个分布式数据系统,CAP三要素不可兼得,至多实现其二.要么AP,要么CP,不存在CAP.分布 ...