转载请注明出处 55555555555

一、软件下载

  1. 下载
  • 下载 zookeeper (Codis注册中心)

    http://mirrors.hust.edu.cn/apache/zookeeper/

  • 下载 Jdk (zookeeper需要)

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • 下载 Go (Codis编译需要)

    https://golang.org/dl/ (需要科学上网)

    [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

2. 启动

    在`bin`目录下执行下名命令

./zkServer.sh start


#### 四、下载Codis源码
1. 新建目录,必须和官网一样,不一样,要报错。 

mkdir -p $GOPATH/src/github.com/CodisLabs

2. 进入目录下载

    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”


2. 启动命令

    在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 &

3. 详细说明( 摘自官方文档,详见 : [GitHub](https://github.com/CodisLabs/codis) )
- 启动参数说明:

$ ./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 端口

***
4. 停止命令

./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

2. 启动命令

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` 连接并开始提供服务;

3. 详细说明( 摘自官方文档,详见 : [GitHub](https://github.com/CodisLabs/codis) )
- 启动参数说明:

$ ./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`。**

4. 停止命令

./bin/codis-admin –proxy=192.168.30.128:11080 –auth=”” –shutdown

5. 启动第二个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


2. 停止命令

./bin/redis-cli shutdown

3. 启动多个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.conf`里`bind 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的地址端口

2. 详细说明( 摘自官方文档,详见 : [GitHub](https://github.com/CodisLabs/codis) )
- 启动参数说明:

$ ./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”
}]

3. 页面配置

- 访问Fe地址:http://192.168.30.128:8080

    ![Fe首页](https://note.youdao.com/yws/public/resource/0226ef7794c78096de268e7552bc2785/xmlnote/0F7F3414D958412F83BEB5E0E88CC617/2040)
- 点击项目名进行具体页面

    ![项目监控页面](https://note.youdao.com/yws/public/resource/0226ef7794c78096de268e7552bc2785/xmlnote/B73941DB9AD64BF1951CAF2876455A85/2037)
- 通过Fe添加Codis-proxy

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

    ![Codis-proxy页面](https://note.youdao.com/yws/public/resource/0226ef7794c78096de268e7552bc2785/xmlnote/40B187B013A04074B021533B11886322/2039)
- 通过fe添加group
    
    如图在 Proxy 栏可看到我们已经启动的 Proxy, 但是 Group 栏为空,因为我们启动的 codis-server 并未加入到集群

    ![group页面](https://note.youdao.com/yws/public/resource/0226ef7794c78096de268e7552bc2785/xmlnote/CD7677C9EE00455A97E2ADE1992691C2/2043)
    
    添加 `NEW GROUP`,`NEW GROUP` 行输入 1,再点击 `NEW GROUP` 即可
    
    ![group添加页面](https://note.youdao.com/yws/public/resource/0226ef7794c78096de268e7552bc2785/xmlnote/45943DE60A3F481FA73C93586768DBB3/2042)
    
    添加 Codis Server,`Add Server` 行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击  `Add Server` 按钮即可
        
    ![service添加页面](https://note.youdao.com/yws/public/resource/0226ef7794c78096de268e7552bc2785/xmlnote/56A471A9BC954BC6B0411EF4373B6CB5/2036)
    
    每个group只能有一个主,其余为从服务,可多从,点击如图所示按钮,将服务配置为从服务,之后按照上述 8.3 表格规划依次添加及配置好其余服务
    
    ![配置完成](https://note.youdao.com/yws/public/resource/0226ef7794c78096de268e7552bc2785/xmlnote/DEB375B494944C2CB2192250046F0FFA/2038)
    
> **说明:** 上述 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` 按钮可以进行快速初始化,也可自定义配置

    ![slot配置页面](https://note.youdao.com/yws/public/resource/0226ef7794c78096de268e7552bc2785/xmlnote/BBB348EAC07045BC94DB0DD9375AACB4/2035)

##### 十、命令行工具( 摘自官方文档,详见 : [GitHub](https://github.com/CodisLabs/codis) )
**注意:使用 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

2. 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


版权声明:本文为format-ch原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/format-ch/p/9323341.html