安装codis(release3.2.8)

来源:互联网 发布:cocos2d-js 编辑:程序博客网 时间:2024/05/13 18:48

参考文献 :https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md


注意:codis不同版本的安装不同, 本我这是针对release3.2.8进行安装部署


1、安装go:

下载安装包:(貌似海外服务器才能下载,如果不能下载,从其他途径下载  链接:http://pan.baidu.com/s/1jI05l1k 密码:3tit)

wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz

下载后,解压就可以用了:

[root@codis-proxy ~]# tar -zxf go1.4.1.linux-amd64.tar.gz -C /usr/local/

2、安装JDK,自己在官网下载一个安装即可,版本要求不严格,后面的zookeeper会用到JDK:

[root@codis-proxy ~]# sh jdk-6u34-fcs-bin-b04-linux-amd64-19_jul_2012.bin
[root@codis-proxy ~]# mv jdk1.6.0_34 /usr/local/
[root@codis-proxy ~]# mv /usr/local/jdk1.6.0_34 /usr/local/jdk

3、安装zookeeper

[root@codis-proxy ~]# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz[root@codis-proxy ~]# tar -xzf zookeeper-3.4.6.tar.gz -C /usr/local/

然后修改环境变量为 vim /etc/profile 在最后添加以下内容:

export GOROOT=/usr/local/goexport GOPATH=/usr/local/codisJAVA_HOME=/usr/local/jdkCLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/libexport ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6export PATH=$PATH:$GOROOT/bin:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

然后执行 source /etc/profile
编辑一个文件来测试一下go是否正常使用了:

复制代码
[root@codis-proxy ~]# cat hello.go         package main    import "fmt"    func main(){        fmt.Printf("hello,world\n") }[root@codis-proxy ~]# go run hello.go hello,world
复制代码

可以看到,正常打印hello,world了,在命令直接输入java,如果出现一大堆使用说明,就意味java安装成功了。

4、安装codis,安装codis时依赖go,所以在安装codis先装好go,上面已经装好:

获取codis:

[root@codis-proxy ~]# yum install -y git[root@codis-proxy ~]# yum install autoconf automake libtool -y     // 这行非常重要,官网没有给出这个,安装的时候会报错  
make[2]: *** [config] Error 1
make[1]: *** [build] Error 2
make: *** [codis-deps] Error 2[root@codis-proxy ~]# 
下面的安装就参见官网就可以了,以下内容拷贝自官网

1. 安装 Go 运行环境 参考这里

安装完成后可以运行下列命令进行检测:

$ go versiongo version go1.7.3 linux/amd64

2. 设置编译环境

注意 $GOPATH 是本机所有第三方库 go 项目所在目录,Codis 仅是其中之一。

添加 $GOPATH/bin 到 $PATH,例如:PATH=$PATH:$GOPATH/bin

$ go env GOPATH/home/codis/gopath

3. 下载 Codis 源代码

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

$ mkdir -p $GOPATH/src/github.com/CodisLabs$ cd $_ && git clone https://github.com/CodisLabs/codis.git -b release3.2

4. 编译 Codis 源代码

  • 直接通过 make 进行编译,会看到如下输出:
$ cd $GOPATH/src/github.com/CodisLabs/codis$ makemake -j -C extern/redis-3.2.8/... ...go build -i -o bin/codis-dashboard ./cmd/dashboardgo build -i -o bin/codis-proxy ./cmd/proxygo build -i -o bin/codis-admin ./cmd/admingo build -i -o bin/codis-fe ./cmd/fe$ ls bin/total 69124drwxr-xr-x 4 codis codis     4096 Jan  4 14:55 assets-rwxr-xr-x 1 codis codis 17600752 Jan  4 14:55 codis-admin-rwxr-xr-x 1 codis codis 18416320 Jan  4 14:55 codis-dashboard-rwxr-xr-x 1 codis codis  9498040 Jan  4 14:55 codis-fe-rwxr-xr-x 1 codis codis 11057280 Jan  4 14:55 codis-proxy-rwxr-xr-x 1 codis codis  4234432 Jan  4 14:55 codis-server-rw-r--r-- 1 codis codis      148 Jan  4 14:55 version... ...$ cat bin/versionversion = 2016-01-03 14:53:22 +0800 @51f06ae3b58a256a58f857f590430977638846a3compile = 2016-01-04 15:00:17 +0800 by go version go1.5.2 linux/amd64

1. 快速启动

2分钟快速构建一个单机版测试 codis 集群,无任何外部组件依赖.

源码中 admin 文件夹提供了一系列脚本以便快速启动、停止各个组件,提高运维效率。

启动codis-dashboard

使用 codis-dashboard-admin.sh 脚本启动 dashboard,并查看 dashboard 日志确认启动是否有异常。

./admin/codis-dashboard-admin.sh start tail -100 ./log/codis-dashboard.log.2017-04-08
2017/04/08 15:16:57 fsclient.go:197: [INFO] fsclient - create /codis3/codis-demo/topom OK2017/04/08 15:16:57 main.go:140: [WARN] [0xc42025f7a0] dashboard is working ...2017/04/08 15:16:57 topom.go:424: [WARN] admin start service on [::]:18080

快速启动集群元数据存储使用 filesystem,默认数据路径保存在 /tmp/codis,若启动失败,请检查当前用户是否对该路径拥有读写权限。

启动codis-proxy

使用 codis-proxy-admin.sh 脚本启动 codis-proxy,并查看 proxy 日志确认启动是否有异常。

./admin/codis-proxy-admin.sh starttail -100 ./log/codis-proxy.log.2017-04-08
2017/04/08 15:39:37 proxy.go:293: [WARN] [0xc4200df760] set sentinels = []2017/04/08 15:39:37 main.go:320: [WARN] rpc online proxy seems OK2017/04/08 15:39:38 main.go:210: [WARN] [0xc4200df760] proxy is working ...

启动codis-server

使用 codis-server-admin.sh 脚本启动 codis-server,并查看 redis 日志确认启动是否有异常。

./admin/codis-server-admin.sh starttail -100 /tmp/redis_6379.log 
5706:M 08 Apr 16:04:11.748 * DB loaded from disk: 0.000 seconds5706:M 08 Apr 16:04:11.748 * The server is now ready to accept connections on port 6379

redis.conf 配置中 pidfile、logfile 默认保存在 /tmp 目录,若启动失败,请检查当前用户是否有该目录的读写权限。

启动codis-fe

使用 codis-fe-admin.sh 脚本启动 codis-fe,并查看 fe 日志确认启动是否有异常。

./admin/codis-fe-admin.sh starttail -100 ./log/codis-fe.log.2017-04-08
2017/04/08 16:12:13 main.go:100: [WARN] set ncpu = 12017/04/08 16:12:13 main.go:103: [WARN] set listen = 0.0.0.0:90902017/04/08 16:12:13 main.go:115: [WARN] set assets = /home/codis/go/src/github.com/CodisLabs/codis/admin/../bin/assets2017/04/08 16:12:13 main.go:153: [WARN] set --filesystem = /tmp/codis

通过fe添加group

通过web浏览器访问集群管理页面(fe地址:127.0.0.1:9090) 选择我们刚搭建的集群 codis-demo,在 Proxy 栏可看到我们已经启动的 Proxy, 但是 Group 栏为空,因为我们启动的 codis-server 并未加入到集群 添加 NEW GROUPNEW GROUP 行输入 1,再点击 NEW GROUP 即可 添加 Codis Server,Add Server 行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击 Add Server 按钮即可,如下图所示

addgroup

通过fe初始化slot

新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做,如下图所示,点击此按钮,我们即快速完成了一个集群的搭建。

rebalance_slots

通过 ansible 快速部署集群

使用 ansible 可快速在单机、多机部署多套 codis 集群。 ansible 文件夹包含了部署 codis 集群的 playbook,根据自己部署环境修改 groups_var/all 文件里参数,修改 hosts 文件添加部署的环境 IP 即可。 ansible 安装也及其简单,各部署机器无需安装任何额外的 agent,彼此之间通过 ssh 通信。

git clone git://github.com/ansible/ansible.git -b stable-2.3cd ./ansiblesource ./hacking/env-setupcd $codis_dir/ansibleansible-playbook -i hosts site.yml

2. 启动及参数

注意:请按照顺序逐步完成操作。生产环境建议修改dashboard coordinator_name配置,使用 zookeeper 或etctd作为外部存储。

注意:Codis 3.x 支持 AUTH,但是要求所有组件使用的 AUTH 必须完全相同。

2.1 Codis Dashboard

2.1.1 启动命令:
$ nohup ./bin/codis-dashboard --ncpu=4 --config=dashboard.toml \    --log=dashboard.log --log-level=WARN &

默认配置文件 dashboard.toml 可由 codis-dashboard 生成。

2.1.2 详细说明:
  • 启动参数说明:
$ ./bin/codis-dashboard -hUsage:    codis-dashboard [--ncpu=N] [--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR]    codis-dashboard  --default-config    codis-dashboard  --versionOptions:    --ncpu=N                    最大使用 CPU 个数    -c CONF, --config=CONF      指定启动配置文件    -l FILE, --log=FILE         设置 log 输出文件    --log-level=LEVEL           设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN

参数 --host-admin 请参见与 Docker 有关章节。

  • 默认配置文件:
$ ./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/etcdcoordinator_addr外部存储地址product_name集群名称,满足正则 \w[\w\.\-]*product_auth集群密码,默认为空admin_addrRESTful API 端口

2.2 Codis Proxy

2.2.1 启动命令:
$ nohup ./bin/codis-proxy --ncpu=4 --config=proxy.toml \    --log=proxy.log --log-level=WARN &

默认配置文件 proxy.toml 可由 codis-proxy 生成。

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

  • 通过 codis-fe 添加:通过 Add Proxy 按钮,将 admin_addr 加入到集群中;
  • 通过 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 连接并开始提供服务;
2.2.2 详细说明:
  • 启动参数说明:
$ ./bin/codis-proxy -hUsage:codis-proxy [--ncpu=N] [--config=CONF] [--log=FILE] [--log-level=LEVEL] [--host-admin=ADDR] [--host-proxy=ADDR] [--ulimit=NLIMIT]codis-proxy  --default-configcodis-proxy  --versionOptions:--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

参数 --host-proxy 以及 --host-admin 请参见与 Docker 有关章节。

  • 默认配置文件:
$ ./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 = 10jodis_compatible = false# Proxy will ping-pong backend redis periodly to keep-alivebackend_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_addrRESTful API 端口proto_typeRedis 端口类型,接受 tcp/tcp4/tcp6/unix/unixpacketproxy_addrRedis 端口地址或者路径jodis_addrJodis 注册 zookeeper 地址jodis_timeoutJodis 注册 session timeout 时间,单位 secondjodis_compatibleJodis 注册 zookeeper 的路径backend_ping_period与 codis-server 探活周期,单位 second,0 表示禁止session_max_timeout与 client 连接最大读超时,单位 second,0 表示禁止session_max_bufsize与 client 连接读写缓冲区大小,单位 bytesession_max_pipeline与 client 连接最大的 pipeline 大小session_keepalive_period与 client 的 tcp keepalive 周期,仅 tcp 有效,0 表示禁止

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

2.3 Codis Server

  • 启动 ./bin/codis-server,与启动普通 redis 的方法一致。

  • 启动完成后,可以通过 codis-fe 提供的界面或者 codis-admin 命令行工具添加到集群中。

2.4 Codis FE(可选组件)

2.4.1 启动命令:
$ nohup ./bin/codis-fe --ncpu=4 --log=fe.log --log-level=WARN \    --zookeeper=127.0.0.1:2181 --listen=127.0.0.1:8080 &
2.4.2 详细说明:
  • 启动参数说明:
$ ./bin/codis-fe -hUsage:codis-fe [--ncpu=N] [--log=FILE] [--log-level=LEVEL] [--assets-dir=PATH] (--dashboard-list=FILE|--zookeeper=ADDR|--etcd=ADDR|--filesystem=ROOT) --listen=ADDRcodis-fe  --versionOptions:--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"    }]

2.5 Codis Admin(命令行工具)

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

2.5.1 codis-dashboard 异常退出的修复

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

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

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

  1. 确认 codis-proxy 进程已经退出(很重要);
  2. 运行 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 进程已经退出。

3. Jodis 与 HA

因为 codis-proxy 是无状态的,可以比较容易的搭多个实例,达到高可用性和横向扩展。

对 Java 用户来说,可以使用基于 Jedis 的实现 Jodis ,来实现 proxy 层的 HA:

  • 它会通过监控 zookeeper 上的注册信息来实时获得当前可用的 proxy 列表,既可以保证高可用性;
  • 也可以通过轮流请求所有的proxy实现负载均衡。

如果需要异步请求,可以使用我们基于Netty开发的 Nedis。

对下层的 redis 实例来说,当一个 group 的 master 挂掉的时候,应该让管理员清楚,并手动的操作,因为这涉及到了数据一致性等问题(redis的主从同步是最终一致性的)。因此 codis 不会自动的将某个 slave 升级成 master。关于外部 codis-ha 工具(具体可以参考之前的章节),这是一个通过 codis-dashboard 开放的 RESTful API 实现自动切换主从的工具。该工具会在检测到 master 挂掉的时候主动应用主从切换策略,提升单个 slave 成为新的 master。

需要注意,codis 将其中一个 slave 升级为 master 时,该组内其他 slave 实例是不会自动改变状态的,这些 slave 仍将试图从旧的 master 上同步数据,因而会导致组内新的 master 和其他 slave 之间的数据不一致。因此当出现主从切换时,需要管理员手动创建新的 sync action 来完成新 master 与 slave 之间的数据同步(codis-ha 不提供自动操作的工具,因为这样太不安全了)。

4. Docker 部署

Codis 3.x 起,开始正式支持 Docker 部署。这就需要 codis-dashboard 以及 codis-proxy 能够外部的 listen 地址暴露出来并保存在外部存储中。

  • codis-proxy 增加了 --host-admin 以及 --host-proxy 参数;
  • codis-dashboard 增加了 --host-admin 参数;

以 codis-proxy 的 Docker 为例:

$ docker run --name "Codis-Proxy" -d -p 29000:19000 -p 21080:11080 codis-image \    codis-proxy -c proxy.toml --host-admin 100.0.1.100:29000 --host-proxy 100.0.1.100:21080

codis-proxy 在启动后,会使用 --host-admin 和 --host-proxy 参数所指定的实际地址替换 Docker 内监听的地址,向 codis-dashboard 注册。这样,例如使用 Jodis 的过程中,客户端就能够通过 100.0.1.100:29000 来访问 proxy 实例。

codis-dashboard 也是相同的道理,会使用 --host-admin 地址向外部存储注册,这样 codis-fe 也能通过该地址正确的对 codis-dashboard 进行操作。

具体样例可以参考 scripts/docker.sh

5. 从Codis 2.x 升级

Codis 3.x 修改了 codis-dashboard 与 codis-proxy 之间的通信方式,因此 Codis 2.x 并不兼容。但是我们提供了手动升级方案。

注意1:升级时,需要保证所有 slot 都处在 online 状态。即没有任何数据迁移操作正在进行。

注意2:升级完成后,需要手动关闭 Codis 2.x 的所有 proxy 和 config 组件。

step 1. 导出配置文件

$ ./bin/codis-admin --config-dump --product=codis_v2.0 --zookeeper=127.0.0.1:2181 -1 | tee codis_v2.0.json

该命令会从 zookeeper 上拉取 /zk/codis/db_codis_v2.0 下全部的文件,并组织成 json 格式并输出。

选项 -1 表示配置文件是 Codis 1.x 版本,缺省是 Codis 3.x 版本。

step 2. 转换配置文件

$ ./bin/codis-admin --config-convert codis_v2.0.json | tee codis_v3.0.json

该命令会将 Codis 1.x 版本的配置文件中有效信息提取出来,并转成 Codis 3.x 版本的配置文件并输出。

step 3. 更新配置文件

注意:更新配置文件时,请确保 Codis 3.x 中该集群不存在,否则可能导致更新失败或者集群状态异常。

$ ./bin/codis-admin --config-restore=codis_v3.0.json --product=codis_v3.0 --zookeeper=127.0.0.1:2181 --confirm

该命令会将 Codis 3.x 版本的配置文件提交到 /codis3/codis_v3.0 目录下。

选项 --confirm 选项表示确认提交,缺省时该命令仅仅打印配置文件作为调试。

step 4. 启动 Codis 3.x dashboard 以及 proxy

过程参考之前章节。因为集群信息已经存在,所以可以安全启动 codis-dashboard,并逐一添加 codis-proxy 到集群中。

step 5. 关闭 Codis 2.x dashboard 以及 proxy

Codis 3.x 的组件兼容 Jodis 协议。

因为 Codis 2.x 与 Codis 3.x 在外部存储中的组织结构不同,所以可以安全的 kill 掉全部 Codis 2.x 组件。

注意:关闭过程请不要使用 kill -9,因为旧组件在退出时会自动清理部分注册信息。



通过命令安装codis注意事项,自己踩过的雷

1、dashboard.toml 

admin_addr = "127.0.0.1:18080" , 要配置为具体ip,不可以配置成 0.0.0.0:18080 ,因为配置成0.0.0.1:18080就会安装机器名称进行解析,会找不到机器 ,ps:其他配置文件配置的 0.0.0.0 也要改成对应的ip ;另外admin_addr 配置127就可以,不用配置为真实ip

2、proxy.toml

admin_addr = "127.0.0.1:11080 同dashborad.toml一样

proxy_addr = "121.42.253.88:19000" 要配置为具体ip 并且服务器的19000的端口要开放

jodis_addr = "121.42.253.88:2181" 这地址不能为空, 必须填写,也就是一个zk地址

3、codis dashborad 非正常关闭无法启动

执行 ./bin/codis-admin --remove-lock --product=codis_demo --zookeeper=127.0.0.1:2181 命令,解除zk上的锁



问题:
codis-server
1、codis-server 的配置文件放在什么地方
启动的时候指定配置文件
2、codis-server 如何单独进行安装
3、codis-server 如何做主备
1、在安装的时候,配置文件进行配置
2、在codis-fe , group中进行主从切换,这切换后,会修改对应的redis.conf 文件, 每个group下只能有一个主
3、主从切换修改配置文件

slaveof 127.0.0.1 6380 // 从服务才有的配置,主服务没有,指定从服务是哪个主服务的从服务
pidfile : /var/run/redis_6380.pid // 存储pid(进程号)的文件
port 6001 // redis端口
dbfilename : dump6001.rdb // redis数据库文件
4、codis-server 如何进行主从切换
4.1、在codis-fe 中进行手动切换
4.2、自动切换,不建议使用,建议如果出现故障进行预警(我没见过自动切换的受益者;反而见过一大波被自动切换整的死去活来的运维。)
可以通过在linux上监控端口或者进程进行预警

5、启动停止服务
如果是用apt-get或者yum install安装的redis,可以直接通过下面的命令停止/启动/重启redis
/etc/init.d/redis-server stop/etc/init.d/redis-server start/etc/init.d/redis-server restart
如果是通过源码安装的redis,则可以通过redis的客户端程序redis-clishutdown命令来重启redis
redis-cli -h 127.0.0.1 -p 6379 shutdown
如果上述方式都没有成功停止redis,则可以使用终极武器 kill -9

codis-proxy
1、codis-proxy 主备如何做
不区分主从,平行的
2、codis-proxy 如何多个做集群
就是添加一个新的就可以,用一个服务,启动的时候指定不同的配置文件
3、codis-proxy 如何单独进行安装
4、停止proxy服务 ,通过页面进codis-fe进行停止服务

codis-dashboard
1、集群如何部署
不需要集群部署,及时挂了对生产也没有影响
而且好像不能搭建多个,因为dashboard向zk写数据,需要占用zk的节点,启动一个只会
2、如何停止服务