1.1. 部署
1、 两台服务器,6 个实例,3 个主节点,3 个从节点(也可以所有节点都放一台服务器)。
主节点与从节点存在对应关系,启动完后可通过 cluster node 命令获取。
cd /usr/local/redis-3.2.8/src/
./redis-cli -h 192.168.1.151 -c -p 7000
cluster nodes
2、 一般情况下,一个主节点坏了,还有从节点补上。若整个集群只有两个正常主节点
(从节点没补上),集群则会处于 down 状态。
1.1.1. 初始步骤
1、 安装所需环境和工具
yum install wget vim tcl gcc make
2、 下载 redis 压缩包并解压
cd /usr/local/
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -zxvf redis-3.2.8.tar.gz
3、 编译 redis 源文件
cd redis-3.2.8
make
cd src
make install
4、测试: make test
(如果 /usr/local/bin/ 文件夹内没有 redis-server 那几个文件,就从
/usr/local/redis-3.2.8/src/ 中拷贝过去,命令:cp redis-server redis-cli redis-sentinel
redis-benchmark redis-check-aof redis-check-rdb /usr/local/bin/) Make test 问题处理:
1、描述
处理
更改 tests/integration/replication-psync.tcl 文件(在 redis 的解压目录内):
vi tests/integration/replication-psync.tcl
把对应报错的那段代码中的 after 后面的数字,从 100 改成 500。
2、 描述:
[exception]: Executing test client: NOREPLICAS Not enough good slaves to write..
NOREPLICAS Not enough good slaves to write.
......
Killing still running Redis server 63439
Killing still running Redis server 63486
Killing still running Redis server 63519
Killing still running Redis server 63546
Killing still running Redis server 63574
Killing still running Redis server 63591
I/O error reading reply
......
"createComplexDataset $r $ops"
(procedure "bg_complex_data" line 4)
invoked from within
"bg_complex_data [lindex $argv 0] [lindex $argv 1] [lindex $argv 2] [lindex $argv 3]"
(file "tests/helpers/bg_complex_data.tcl" line 10)
Killing still running Redis server 21198
make: [test] Error 1
处理:
[root@localhost src]# vim ../tests/integration/replication-2.tcl
start_server {tags {"repl"}} {
start_server {} {
test {First server should have role slave after SLAVEOF} {
r -1 slaveof [srv 0 host] [srv 0 port]
after 10000 #修改成 10000
s -1 role
} {slave}
1.1.2. 配置
每台机都要
1、配置内核参数
配置 vm.overcommit_memory 为 1,这可以避免数据被截断
sysctl -w vm.overcommit_memory=1
2、创建多实例的文件夹,用来存放不同实例的配置文件
cd /usr/local/
mkdir cluster
cd cluster
mkdir 7000 7001 7002
(文件名与后续配置的端口号要一致,另外一台用 7003、7004、7005) 3、修改配置文件
vi /usr/local/redis-3.2.8/redis.conf
bind 192.168.1.151(ip 地址,需要不同服务器的节点连通,就不能设置为 127.0.0.1)
protected-mode no(需要不同服务器的节点连通,这个就要设置为 no)
daemonize yes(设置后台运行 redis)
cluster-enabled yes
cluster-node-timeout 5000
appendonly yes
4、 复制配置文件到各个实例文件夹,并修改相应端口号和参数
cp -f /usr/local/redis-3.2.8/redis.conf /usr/local/cluster/7000/
cp -f /usr/local/redis-3.2.8/redis.conf /usr/local/cluster/7001/
cp -f /usr/local/redis-3.2.8/redis.conf /usr/local/cluster/7002/
5、 配置文件根据不同端口需要设置的地方,以端口号 7000 为例
port 7000
pidfile /var/run/redis_7000.pid
logfile /var/log/redis/redis_7000.log
dbfilename dump_7000.rdb
appendfilename "appendonly_7000.aof"
cluster-config-file nodes_7000.conf
6、 启动各个实例
启动前 mkdir /var/log/redis
cd /usr/local/redis-3.2.8/src/
./redis-server /usr/local/cluster/7000/redis.conf &
./redis-server /usr/local/cluster/7001/redis.conf &
./redis-server /usr/local/cluster/7002/redis.conf &
使用 ps -ef|grep redis 查看是否都启动成功,IP 和端口号都正确
1.1.3. 启动服务器的配置(选其中一台)
测试两台服务器是否都能 telnet 得通另一台的 7000~7002 和 17000~17002
启动服务器安装 ruby 环境
1、 安装 rubygems
yum install rubygems
2、 RVM 安装 ruby 高版本
进入官方 https://rvm.io/ 复制长命令,如下面所示(...C0E3 空格 7D2B...):
1
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
7D2BAF1CF37B13E2069D6956105BD0E739499BDB
3、可能会等待十几秒时间,然后执行下面命令:
\curl -sSL https://get.rvm.io | bash -s stable
4、
source /etc/profile.d/rvm.sh //按照提示,执行该命令
rvm list known // list 一下可以安装的版本
5、 rvm install 2.2.10 // 实际部署用 2.2.10,注意 list 里面有没有
6、ruby -v //查看验证下已经安装的版本
gem –v
至此,ruby 安装完成了。
7、 使用 gem 安装 redis 和 ruby 接口
gem install redis --version 3.3.0
1.1.4. 启动服务器创建集群
cd /usr/local/redis-3.2.8/src/
./redis-trib.rb create --replicas 1 192.168.2.247:7000 192.168.2.247:7001 192.168.2.247:7002
192.168.2.248:7000 192.168.2.248:7001 192.168.2.248:7002
留意屏幕,会有一句(type 'yes' to accept),输入 yes ,回车,就是接受自动分配的
三主三从
(1)如果最后出现
[OK] All nodes agree about slots configuration.
Check for open slots...
Check slots coverage...
[OK] All 16384 slots covered.
说明成功了。
(2)如果是出现(暂时没遇到)
Waiting for the cluster to join...........
一直有 “.”出现,说明另一台服务器的端口策略没通,一直在等那边的节点加入集群,请百
度.....
1.1.5. 验证集群节点数
cd /usr/local/redis-3.2.8/src/
./redis-cli -h 192.168.2.247 -c -p 7000
命令 1:cluster nodes
命令 2:cluster info
学习使人进步!
共勉,加油!
工作时间:8:00-18:00
电子邮件
扫码二维码
获取最新动态