天天看点

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

CODIS集群搭建

  • 1.6个主从的搭建
  • 2. 安装go语言环境
  • 3. 设置codis
    • 3.1 安装codis
    • 3.2 编译源码
  • 4. 启动脚本
    • 4.1 codis-proxy 配置
  • 5. 启动
    • 5.1 启动顺序
    • 5.2 启动流程
  • 6.配置集群
  • 7. 通过web添加集群并进行控制
  • 8. redis-sentinel的设置

1.6个主从的搭建

可以直接使用redis的做好的集群,3个集群,一主一从。

2. 安装go语言环境

== 下载go语言安装包==

wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
wget -c https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz


[[email protected] ~]# ls
codis-release3.2.zip        jdk-8u121-linux-x64.rpm
go1.8.3.linux-amd64.tar.gz  zookeeper-3.4.9.tar.gz
[[email protected] ~]# tar zxf go1.8.3.linux-amd64.tar.gz -C /usr/local/    ##解压到指定目录
[[email protected] ~]# cd /usr/local/go/bin/
[[email protected] bin]# pwd
/usr/local/go/bin
[[email protected] bin]# vim ~/.bash_profile   ##添加环境变量
[[email protected] bin]# cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/go/bin   
export PATH

[[email protected] bin]# source ~/.bash_profile
           

添加环境变量

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

3. 设置codis

3.1 安装codis

[[email protected] ~]# ll codis-release3.2.zip 
-rwxr-xr-x 1 root root 12453663 Jan 16 08:48 codis-release3.2.zip
[[email protected] ~]# ll codis-release3.2 -d
drwxr-xr-x 14 root root 322 Jun 22  2017 codis-release3.2
[[email protected] ~]# mkdir -p /usr/local/go/src/github.com/CodisLabs/
[[email protected] ~]# mv codis-release3.2 /usr/local/go/src/github.com/CodisLabs/codis
[[email protected] ~]# cd /usr/local/go/src/github.com/CodisLabs/codis/
[[email protected] codis]# ls
admin    deploy      extern           pkg        version
ansible  doc         Godeps           README.md  wandoujia_license.txt
cmd      Dockerfile  Makefile         scripts
config   example     MIT-LICENSE.txt  vendor

           

3.2 编译源码

安装前辈已经测试好的需要安装的依赖包

[[email protected] codis]# yum install gcc git autoconf -y
[[email protected] codis]# make
           
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

添加环境变量

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

4. 启动脚本

[[email protected] admin]# pwd
/usr/local/go/src/github.com/CodisLabs/codis/admin
[[email protected] admin]# ls
codis-dashboard-admin.sh  codis-proxy-admin.sh
codis-fe-admin.sh         codis-server-admin.sh
           

4.1 codis-proxy 配置

安装JDK

[[email protected] ~]# yum install -y jdk-8u121-linux-x64.rpm
[[email protected] ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
[[email protected] ~]# javac -version
javac 1.8.0_121
           
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

安装zookeeper并修改配置文件

可以下载3.5.9的,这个网址只有3.5.9和3.6.2的,我下面实验使用的是3.4.9的。

[[email protected] ~]# wget https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9.tar.gz
[[email protected] ~] tar -zxf apache-zookeeper-3.5.9.tar.gz -C /usr/local/
[[email protected] ~]# cp /usr/local/zookeeper-3.4.9/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.9/conf/zoo.cfg
[[email protected] ~]# vim /usr/local/zookeeper-3.4.9/conf/zoo.cfg  ^C
[[email protected] ~]# grep -v ^# /usr/local/zookeeper-3.4.9/conf/zoo.cfg  | uniq
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
clientPort=2181
[[email protected] ~]# vim ~/.bash_profile
[[email protected] ~]# source ~/.bash_profile
[[email protected] ~]# mkdir -p /data/zookeeper/data
[[email protected] ~]# echo "1" > /data/zookeeper/data/myid
           
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
  • 设置myid:

    设置myid在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件配置的srver.X中的X为什么数字,则myid文件就输入这个数字,我只有一台zk,所以配置文件里可以不配置server.X,但还是要配置myid的,echo一个数字1进去即可。如果有多台zk,则分别在zk服务器上echo对应的数字进对应的myid文件

启动zookeeper

在哪个目录下启动,就在哪个目录下产生一个启动的日志zookeeper.out,查看这个日志可以查看是否正常启动了。由于单个zookeeper,所以这里指示Mode: standalone,如果有多个zk节点,就只有一个Mode: leader的状态,别的都是Mode: follower状态。

[[email protected] ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: standalone

           
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

配置codis和zookeepker关联

zk=localhost:2181  //zookeeper的地址, 如果是zookeeper集群,可以这么写: zk=hostname1:2181,hostname2:2181,hostname3:2181,hostname4:2181,hostname5:2181,如果是etcd,则写成http://hostname1:port,http://hostname2:port,http://hostname3:port
product=test     //产品名称, 这个codis集群的名字, 可以认为是命名空间, 不同命名空间的codis没有交集
proxy_id=proxy_1  //proxy会读取, 用于标记proxy的名字, 针对多个proxy的情况, 可以使用不同的config.ini, 只需要更改 proxy_id 即可
net_timeout=5     //检测状态时间间隔
dashboard_addr=localhost:18087  //dashboard 服务的地址,CLI 的所有命令都依赖于 dashboard 的 RESTful API,所以必须启动
coordinator=zookeeper   //如果用etcd,则将zookeeper替换为etcd
           
[[email protected] codis]# vim config.ini
[[email protected] codis]# cat config.ini 
zk=localhost:2181
product=test
proxy_id=proxy_1
net_timeout=5 
dashboard_addr=localhost:18087
coordinator=zookeeper
[[email protected] codis]# pwd
/usr/local/go/src/github.com/CodisLabs/codis
           

5. 启动

5.1 启动顺序

- 	1. start zookeeper //启动zookeeper服务
	2. change config items in config.ini //修改codis配置文件
	3. ./start_dashboard.sh //启动 dashboard
	4. ./start_redis.sh //启动redis实例
	5. ./add_group.sh //添加redis组,一个redis组只能有一个master
	6. ./initslot.sh //初始化槽
	7. ./start_proxy.sh //启动proxy
	8. ./set_proxy_online.sh //上线proxy项目
	9. open browser to http://localhost:18087/admin //访问web
           

5.2 启动流程

启动zookeeper

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

启动Codis Dashboard

[[email protected] admin]# pwd
/usr/local/go/src/github.com/CodisLabs/codis/admin
[[email protected] admin]# ls
codis-dashboard-admin.sh  codis-proxy-admin.sh
codis-fe-admin.sh         codis-server-admin.sh
[[email protected] admin]# ./codis-dashboard-admin.sh start
/usr/local/go/src/github.com/CodisLabs/codis/admin/../config/dashboard.toml
starting codis-dashboard ... 
[[email protected] admin]# cat ../log/codis-dashboard.log.2021-01-16
           

启 动CodisDashboard组 件 , 查 看 日 志 文 件codis-dashboard.log.2017-10-18 是否启动成功。

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

启动Codis Proxy

[[email protected] admin]# ./codis-proxy-admin.sh start
/usr/local/go/src/github.com/CodisLabs/codis/admin/../config/proxy.toml
starting codis-proxy ... 
[[email protected] admin]# tail -n 5 ../log/codis-proxy.log.2021-01-16 
2021/01/16 20:39:02 proxy_api.go:44: [WARN] [0xc420092fd0] API call /api/proxy/start/f1d4258d376bad28087a3b07c705cc15 from 172.25.13.5:35692 []
2021/01/16 20:39:02 proxy_api.go:44: [WARN] [0xc420092fd0] API call /api/proxy/sentinels/f1d4258d376bad28087a3b07c705cc15 from 172.25.13.5:35692 []
2021/01/16 20:39:02 proxy.go:293: [WARN] [0xc420092fd0] set sentinels = []
2021/01/16 20:39:02 main.go:323: [WARN] rpc online proxy seems OK
2021/01/16 20:39:03 main.go:213: [WARN] [0xc420092fd0] proxy is working ...
[[email protected] admin]# 
           

启动CodisProxy组件,查看日志codis-proxy.log.2017-10-18 是否启动成功。

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

== 启动Codis Server和 Codis Fe组件==

[[email protected] admin]# ./codis-server-admin.sh start
/usr/local/go/src/github.com/CodisLabs/codis/admin/../config/redis.conf
starting codis-server ... 
[[email protected] admin]# tail -n 5 /tmp/redis_6379.log 

           

启动 Codis Server 组件,查看日志/tmp/redis_6379.log 文件是否启动成功。

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

启动 Codis Fe 组件,查看日志 codis-fe.log.xxxx.xx.xx文件是否启动成功。

[[email protected] admin]# ./codis-fe-admin.sh start

starting codis-fe ... 
[[email protected] admin]# tail ../log/codis-fe.log.2021-01-16 

           
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

6.配置集群

[[email protected] codis]# cd config/
[[email protected] config]# ls
dashboard.toml  proxy.toml  redis.conf  sentinel.conf
[[email protected] config]# vim redis.conf 
[[email protected] config]# cp redis.conf redis1.conf
[[email protected] config]# cp redis.conf redis2.conf
[[email protected] config]# cp redis.conf redis3.conf
[[email protected] config]# vim redis1.conf ##redis1.2.3配置文件参照redis写,端口修改,保护模式关闭,对于有端口的文件也修改掉端口即可
[[email protected] config]# grep -v ^# redis.conf  | uniq

bind 127.0.0.1

protected-mode no

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes

supervised no

pidfile /tmp/redis_6379.pid

loglevel notice

logfile "/tmp/redis_6379.log"

databases 16

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

           

圈着的地方需要修改端口和保护模式。使用端口7000、7001、7002

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

7. 通过web添加集群并进行控制

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

查看信息,有俩个slave,分别是端口7001和7003

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置
[[email protected] config]# ps ax | grep :7000
 2878 ?        Ssl    0:00 codis-server 127.0.0.1:7000
 3533 pts/0    S+     0:00 grep --color=auto :7000
[[email protected] config]# kill -9 2878
[[email protected] config]# redis-cli -p 7001 ##master挂掉,slave还可以访问数据
127.0.0.1:7001> get name
"westos"
127.0.0.1:7001> 
           
CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

但是没有进行主备切换!!!

手动进行主备切换

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

8. redis-sentinel的设置

redis-sentinel是要配置主从架构才能生效,但是在codis集群中并不一样,因为他的配置由zookeeper来维护,所以,这里codis使用 的redis-sentinel只需要配置一些基本配置就可以了。

sentinel的一些基本配置

CODIS集群的简单搭建1.6个主从的搭建2. 安装go语言环境3. 设置codis4. 启动脚本5. 启动6.配置集群7. 通过web添加集群并进行控制8. redis-sentinel的设置

继续阅读