redis集群安装步骤

该文章详细描述了如何在9台机器上搭建Redis集群,包括准备服务器、安装Redis服务、初始化节点、启用集群模式、部署集群管理脚本以及测试集群的高可用性和数据一致性。通过Yum源管理软件包,使用redis-trib.rb工具创建和管理集群,并展示了在节点故障时的自动故障转移功能。
摘要由CSDN通过智能技术生成

Redis 集群搭建
# 准备 server50-58 共 9 台机器
[root@server50 ~]# for i in 192.168.88.5{0..8}
> do
> ssh $i "hostname; ifconfig eth0 | head -2"
> done
Redis 节点安装 Redis 服务并完成初始化
# 所有节点同步 Yum 源 repo 文件
[root@pubserver ~]# for i in 192.168.88.5{0..8}
> do
> ssh $i "rm -rf /etc/yum.repos.d/*.repo"
> scp /etc/yum.repos.d/*.repo $i:/etc/yum.repos.d/
> ssh $i "yum clean all; yum repolist"
> done
# Redis 节点安装 Redis 服务
[root@server51 ~]# ls
redis-4.0.8.tar.gz
# 上传 Redis 源码包[root@server51 ~]# for i in 192.168.88.5{2..8}
# 同步 Redis 源码包
> do
> scp redis-4.0.8.tar.gz $i:/root
> done
[root@server51 ~]# for i in 192.168.88.5{1..8}
# 所有 Redis 节点安装 Redis
> do
> ssh $i "yum clean all; yum repolist"
> ssh $i "yum -y install gcc"
> ssh $i "tar -xf redis-4.0.8.tar.gz;cd redis-4.0.8"
> ssh $i "make && make install"
> done
# 所有节点完成 Redis 服务初始化
[root@server51 ~]# /root/redis-4.0.8/utils/install_server.sh
Please select the redis port for this instance: [6379]
# 一路回车
# 端口
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] # 配置文件
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] # 日志
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] # 数据存储
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] # 主程序
Selected config:
...
successful!
[root@server52 ~]# /root/redis-4.0.8/utils/install_server.sh
[root@server53 ~]# /root/redis-4.0.8/utils/install_server.sh
[root@server54 ~]# /root/redis-4.0.8/utils/install_server.sh
[root@server55 ~]# /root/redis-4.0.8/utils/install_server.sh
[root@server56 ~]# /root/redis-4.0.8/utils/install_server.sh
[root@server57 ~]# /root/redis-4.0.8/utils/install_server.sh
[root@server58 ~]# /root/redis-4.0.8/utils/install_server.sh
# 测试所有 Redis 节点
[root@server51 ~]# for i in 192.168.88.5{1..8}
> do
> ssh $i "hostname;redis-cli ping"
> done
root@192.168.88.51's password:
server51
PONG
root@192.168.88.52's password:server52
PONG
root@192.168.88.53's password:
server53
PONG
root@192.168.88.54's password:
server54
PONG
root@192.168.88.55's password:
server55
PONG
root@192.168.88.56's password:
server56
PONG
root@192.168.88.57's password:
server57
PONG
root@192.168.88.58's password:
server58
PONG
Redis 节点启用集群模式
# 启用集群模式
[root@server51 ~]# vim /etc/redis/6379.conf
# 修改配置文件
[root@server51 ~]# sed -rn '70p;89p;93p;815p;823p;829p;' /etc/redis/6379.conf
bind 0.0.0.0 # 监听所有网卡
protected-mode no # 关闭保护模式
port 6379 # 监听端口
cluster-enabled yes # 启用集群模式
cluster-config-file nodes-6379.conf # 集群配置文件存放位置
cluster-node-timeout 15000 # 集群节点通信超时时间 15 秒
[root@server51 ~]# for i in 192.168.88.5{2..8}
# 同步配置文件到所有节点
> do
> scp /etc/redis/6379.conf $i:/etc/redis/
> done
[root@server51 ~]# for i in 192.168.88.5{1..8}
> do
> ssh $i "/etc/init.d/redis_6379 restart" # 重启 Redis 服务
> ssh $i "hostname; ss -pantul | grep redis" # 查看监听端口,应有 6379 和 16379
> ssh $i "redis-cli info cluster" # 返回值为 1
> doneRedis 集群搭建
# 注意:管理节点只用于管理,不参与集群提供服务
# 管理节点需部署 Ruby 环境
[root@server50 ~]# ls
# 上传 Redis 源码包
redis-3.2.1.gem
[root@server50 ~]# yum clean all ; yum repolist
# 确认 Yum 可用
[root@server50 ~]# yum -y install ruby.x86_64 rubygems.noarch
ruby-devel.x86_64
[root@server50 ~]# gem list
*** LOCAL GEMS ***
bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
psych (2.0.0)
rdoc (4.0.0)
[root@server50 ~]# gem install redis-3.2.1.gem
Successfully installed redis-3.2.1
Parsing documentation for redis-3.2.1
Installing ri documentation for redis-3.2.1
1 gem installed
# 部署集群管理脚本
[root@server50 ~]# ls
# 上传 Redis 源码包
redis-4.0.8.tar.gz
[root@server50 ~]# tar -xf redis-4.0.8.tar.gz
# 解包
[root@server50 ~]# cp redis-4.0.8/src/redis-trib.rb
/usr/local/bin/
[root@server50 ~]# redis-trib.rb help
# 拷贝集群管理脚本
# 查看脚本帮助信息
Usage: redis-trib <command> <options> <arguments ...>
create
host1:port1 ... hostN:portN
# 创造集群
--replicas <arg>
check
host:port
# 获取集群详细信息
info host:port # 获取集群简略信息
fix host:port # 修复集群
--timeout <arg>
reshard
host:port
--from <arg>
--to <arg>
--slots <arg>
--yes
--timeout <arg>
# 重新分片--pipeline <arg>
rebalance
host:port
# 重新均衡哈希槽
--weight <arg>
--auto-weights
--use-empty-masters
--timeout <arg>
--simulate
--pipeline <arg>
--threshold <arg>
add-node
new_host:new_port existing_host:existing_port
# 添加节点
--slave
--master-id <arg>
del-node
set-timeout
call
host:port node_id
host:port milliseconds
host:port command arg arg .. arg
import
host:port
# 移除节点
# 设置超时时间
# 执行指令
# 导入配置
--from <arg>
--copy
--replace
help
(show this help)
# 创建 Redis 集群(3 主 3 从结构)
[root@server50 ~]# redis-trib.rb create --replicas 1 \
> 192.168.88.51:6379 192.168.88.52:6379 \
> 192.168.88.53:6379 192.168.88.54:6379 \
> 192.168.88.55:6379 192.168.88.56:6379
M: 9810c17f9ef4d72a328d0c7b47a2bbc6820429b0 192.168.88.51:6379
slots:0-5460 (5461 slots) master
M: 201aaada0d93afe394e250ebedd553bf7ba93b27 192.168.88.52:6379
slots:5461-10922 (5462 slots) master
M: 105eb890cff5217ec0d371620746cec1f5cedda5 192.168.88.53:6379
slots:10923-16383 (5461 slots) master
S: fd6af774c00bed6288ea5acdcc5ec1b37f1b056d 192.168.88.54:6379
replicates 105eb890cff5217ec0d371620746cec1f5cedda5
S: 99fafdfb598ecc9c34adf328570afaf8e480723d 192.168.88.55:6379
replicates 9810c17f9ef4d72a328d0c7b47a2bbc6820429b0
S: 2003f8ff96ab99d75bfd2b04c6709c29b8d0874a 192.168.88.56:6379
replicates 201aaada0d93afe394e250ebedd553bf7ba93b27
Can I set the above configuration? (type 'yes' to accept): yes
...
[OK] All 16384 slots covered.
# 获取集群详细信息
[root@server50 ~]# redis-trib.rb check 192.168.88.51:6379
# 确认 3M3S 则 yes 即可>>> Performing Cluster Check (using node 192.168.88.51:6379)
M: 9810c17f9ef4d72a328d0c7b47a2bbc6820429b0(UUID 唯一标识) 192.168.88.51:6379
slots:0-5460 (5461 slots) master
1 additional replica(s)
...
[OK] All 16384 slots covered.
# 获取集群简易信息
[root@server50 ~]# redis-trib.rb info 192.168.88.51:6379
192.168.88.51:6379 (9810c17f...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.53:6379 (105eb890...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (201aaada...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
如果出错了,删除/var/lib/local/
Redis 集群测试
测试服务高可用
master 宕机后对应的 slave 自动被选举为 master
原 master 启动后,会自动配置为当前 master 的 slave
测试数据自动备份
连接从服务查看数据
从服务器只读
# 数据存储测试
# 拷贝客户端命令
[root@server50 ~]# scp 192.168.88.51:/usr/local/bin/redis-cli
/usr/local/bin/
# 数据测试
[root@server50 ~]# redis-cli -c -h 192.168.88.55 -p 6379# 以集群模式操作 Redis,-c 代表操作集群
192.168.88.55:6379> set name zhangsan
-> Redirected to slot [5798] located at 192.168.88.52:6379
OK
-> Redirected to slot [741] located at 192.168.88.51:6379
OK
192.168.88.51:6379> set school tarena
-> Redirected to slot [8455] located at 192.168.88.52:6379
OK
192.168.88.52:6379> keys *
# 显示当前节点数据
1) "school"
2) "name"
192.168.88.52:6379> get age
# 可以获取到其他节点数据
-> Redirected to slot [741] located at 192.168.88.51:6379
"19"[root@server50 ~]# redis-trib.rb call 192.168.88.51:6379 keys \* # 所有集群内所有数据
>>> Calling KEYS *
192.168.88.51:6379: ["age"]
192.168.88.53:6379: []
192.168.88.52:6379: ["school", "name"]
192.168.88.54:6379: []
192.168.88.56:6379: ["school", "name"]
192.168.88.55:6379: ["age"]
# 节点高可用测试
[root@server50 ~]# redis-trib.rb info 192.168.88.51:6379
192.168.88.51:6379 (9810c17f...) -> 1 keys | 5461 slots | 1 slaves.
192.168.88.53:6379 (105eb890...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (201aaada...) -> 2 keys | 5462 slots | 1 slaves.
# 52 节点为主节点
[OK] 3 keys in 3 masters.
0.00 keys per slot on average.
[root@server50 ~]# ssh 192.168.88.52 "/etc/init.d/redis_6379 stop"
# 停止 52 的 Redis 服务
Stopping ...
Redis stopped
[root@server50 ~]# redis-trib.rb info 192.168.88.51:6379
192.168.88.51:6379 (9810c17f...) -> 1 keys | 5461 slots | 1 slaves.
192.168.88.53:6379 (105eb890...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.56:6379 (2003f8ff...) -> 2 keys | 5462 slots | 0 slaves.
# 56 升级为主节点
[OK] 3 keys in 3 masters.
[root@server50 ~]# ssh 192.168.88.52 "/etc/init.d/redis_6379 start"
# 启动 52 的 Redis 服务
root@192.168.88.52's password:
Starting Redis server...
[root@server50 ~]# redis-trib.rb info 192.168.88.51:6379
# 52 以从角色自动加入
192.168.88.51:6379 (9810c17f...) -> 1 keys | 5461 slots | 1 slaves.
192.168.88.53:6379 (105eb890...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.56:6379 (2003f8ff...) -> 2 keys | 5462 slots | 1 slaves.
[OK] 3 keys in 3 masters.
0.00 keys per slot on average.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值