第三阶段基础
时 间:2023年7月3日
参加人:全班人员
内 容:
6.2.12版本redis集群部署
目录
一、环境配置:【两台服务器】
二、redis多实例配置:
三、构建redis cluster集群
四、创建主从
五、故障转移实验
六、拓 展
安装部署:(一台主机,三主三从,redis版本为6.2.12)
实验基本条件:
服务器huyang2 | 主 库 | Node1 | Node2 | Node3 |
8001 | 8002 | 8003 | ||
192.168.59.138 | 从 库 | Node4 | Node5 | Node6 |
8004 | 8005 | 8006 |
一、环境配置:【两台服务器】
1、关闭防火墙
systemctl stop firewalld
iptables -F
setenforce 0
2.安装相关基础环境
yum -y install wget gcc gcc-c++ make tar openssl
openssl-devel cmake
3.上传相关软件安装包
rz redis-6.2.12.tar.gz
4.解压安装包并调整位置
mkdir /usr/local/redis
tar xf redis-6.2.12.tar.gz -C /usr/local/redis
5、编译、配置、安装
cd /usr/local/redis
make && make install
6、验证redis的安装
./src/redis-server redis.conf
7、优化redis程序命令
mkdir -p /usr/local/redis_cluster
cd /usr/local/redis_cluster
mkdir -p 8001/data 8002/data 8003/data
8004/data 8005/data 8006/data
mkdir bin
cd /usr/local/redis/redis-6.2.12/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof
redis-cli redis-server redis-trib.rb /usr/local/redis_cluster/bin
ln -s /usr/local/redis_cluster/bin*
/usr/local/bin/
8.系统调优配置
echo never >
/sys/kernel/mm/transparent_hugepage/enabled
echo never >
/sys/kernel/mm/transparent_hugepage/defrag
echo 'echo never >
/sys/kernel/mm/transparent_hugepage/enabled' >>
/etc/rc.local
echo 'echo never >
/sys/kernel/mm/transparent_hugepage/defrag' >>
/etc/rc.local
echo "* - nofile 10240" >> /etc/security/limits.conf --文件并发数
echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf --监听队列
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf -- 0内存不够,就会拒绝申请
1物理内存都允许分配给你,只要有内存就给你用,这样可以避免申请内存失败的问题。
sysctl -p
二、redis多实例配置:
主库配置
步骤一:复制配置文件并修改
cp /usr/local/redis/redis-6.2.12/redis.conf
/usr/local/redis_cluster/8001
cp redis.conf{,.bak}
egrep -v "^$|^#" redis.conf.bak > conf/redis.conf
步骤二:修改配置文件
vim 8001/redis.conf
修改配置如下:
cluster-enabled yes
bind 0.0.0.0
port 8001
pidfile /data/redis-cluster/8001/redis.pid
logfile "/data/redis-cluster/8001/redis.log"
dir /data/redis-cluster/8001/
tcp-backlog 1024
daemonize yes
同理,将8002和8003配置文件修改,与上述端口不一,其他一致
步骤三:启动服务
redis-server 8001/redis.conf
redis-server 8002/redis.conf
redis-server 8003/redis.conf
netstat -antup | grep redis-server
从库配置:
步骤一:复制配置文件并修改
cp /usr/local/redis/redis-6.2.12/redis.conf
/usr/local/redis_cluster/8004
cp redis.conf{,.bak}
egrep -v "^$|^#" redis.conf.bak > conf/redis.conf
步骤二:修改配置文件
vim 8004/redis.conf
修改配置如下:
cluster-enabled yes
bind 0.0.0.0
port 8004
pidfile /data/redis-cluster/8004/redis.pid
logfile "/data/redis-cluster/8004/redis.log"
dir /data/redis-cluster/8004/
tcp-backlog 1024
daemonize yes
同理,将8005和8006配置文件修改,与上述端口不一,其他一致
步骤三:启动服务
redis-server 8004/redis.conf
redis-server 8005/redis.conf
redis-server 8006/redis.conf
netstat -antup | grep redis-server
三、构建redis cluster集群
步骤一:创建集群节点
redis-cli -p 8001 -c (以集群模式登录任意节点)
cluster meet ip+端口
(把其他实例全部添加到集群中,登录进集群内操作)
cluster nodes 查看集群节点信息
步骤二:分配槽(退出集群操作)
redis-cli -p 8001 cluster addslots {0..5000}
redis-cli -p 8002 cluster addslots {5001..10000}
redis-cli -p 8003 cluster addslots {10001..16383}
cluster nodes 查看集群节点信息,都有了槽
步骤三:验证加入集群和未加入集群的区别
创建数据:
redis-cli -p 8001 -c 登录集群
set name huyang1
查看数据:
可以发现,加入到集群之中的节点和创建数据本省的节点可以查看数据之外,其余未加入集群的节点不可以查看数据,由此可见集群的特性。
四、创建主从
步骤一:添加从库节点进入集群
redis-cli -p 8001 -c
cluster meet 192.168.59.138 8004
cluster meet 192.168.59.138 8005
cluster meet 192.168.59.138 8006
都为主库
步骤二:退出集群,命令行操作
redis-cli -p 端口 cluster replicate id号
例:redis-cli -p 8004 cluster replicate
cbcc0afc179ffe4b1626b26b2ceb9ecab9c29e96
登录集群,查看信息
redis-cli -p 8004 -c
cluster nodes
同理,将8005,8006添加为8002,8003的从库
五、故障转移实验
实验一:模拟主库8001宕机,查看变化
登录集群,查看信息
故障转移,如下:
实验二:使用不同ip地址的不同端口接入集群
观察变化
变化:
实验三:使用集群中的两条主库,进入新的集群
特性,
两个主库居然合在一起共用一个数据库!!!!
六、拓 展
(一)添加节点
集群伸缩-添加节点
redis-cli --cluster add-node 加新节点IP:端口
原任意节点IP/:端口
例:
redis-cli --cluster add-node 192.168.59.137:7005 192.168.59.137:7002
可以发现,以上述方法添加的节点都为主库
(二)删除节点
redis-cli --cluster del-node IP:端口号 id号
例:
redis-cli --cluster del-node 192.1 68.59.137:7005 9c73cbfbbc09b214f6136d6a337d052911290914