Redis 集群练习之踩坑篇

环境:
主机
192.168.91.131:6379/6380
192.168.91.132:6379/6380
192.168.91.133:6397/6380
192.168.91.134:6379/6380

软件:redis-4.0.14.tar.gz

创建redis cluster集群的前提:

1.每个redis node节点采用相同的硬件配置、相同的密码
2.每个节点必须开启的参数 cluster-enabled yes #必须开启集群状态,开启后redis 进程会有cluster显示 cluster-config-file nodes-6380.conf #此文件有redis cluster集群自动创建和维护,不需要任何手动操作
3.所有redis服务器必须没有任何数据
4.先启动为单机redis且没有任何key value

实验过程:

1.源码编译redis-4.0.12.tar.gz

1.1下载地址:http://download.redis.io/releases/
在这里插入图片描述

[root@nginx data]# tar -xvf redis-4.0.12.tar.gz
[root@nginx redis-4.0.12]# cd redis-4.0.12/
[root@nginx redis-4.0.12]# yum install -y gcc gcc-c++ jemalloc
[root@nginx redis-4.0.12]#  make PREFIX=/usr/local/redis install

在这里插入图片描述
1.2 、创建配置文件目录与其它相关目录,并将源码包中的配置文件复制到配置文件目录中

[root@nginx redis-4.0.12]# mkdir -v /usr/local/redis/{etc,log,data,run}

在这里插入图片描述

[root@nginx redis-4.0.12]# cp redis.conf /usr/local/redis/etc/

在这里插入图片描述
1.3、解决redis启动时的告警信息

[root@nginx etc]# vim /etc/sysctl.conf

net.core.somaxconn = 512     #解决第一个WARNING提示    
vm.overcommit_memory = 1	   #解决第二个WARNING提示
[root@nginx etc]# sysctl -p

在这里插入图片描述

#解决第三个WARNING提示

[root@nginx etc]# vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@nginx etc]# chmod +x /etc/rc.local

1.4 创建软链接

[root@nginx etc]#  ln -sv /usr/local/redis/bin/redis-* /usr/bin/

在这里插入图片描述

[root@nginx etc]# vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
#ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=root    
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

#上述配置中,建议新建普通用户运行,将User和Group修改一下

[root@nginx etc]# useradd -r -s /sbin/nologin redis
[root@nginx etc]# chown -R redis:redis /usr/local/redis/

1.5验证redis启动:

[root@nginx etc]# systemctl start redis.service

在这里插入图片描述
1.6 开启集群配置

[root@nginx etc]# vim redis.conf 

bind 0.0.0.0
pidfile /usr/local/redis/run/redis_6379.pid # 指定新的PID文件路径
logfile "/usr/local/redis/log/redis_6379.log" # 指定新的日志文件路径
dbfilename dump_6379.rdb   # 指定新的转储文件路径
#开启以下两个配置
cluster-enabled yes
cluster-config-file nodes-6379.conf

[root@nginx etc]# systemctl restart redis

在这里插入图片描述
1.7 根据原redis配置文件,创建新的配置文件

[root@nginx etc]# cp redis.conf redis6380.conf 
[root@nginx etc]# vim redis6380.conf

# 配置新redis文件,为避免和原redis冲突,在配置文件找到以下几项,进行修改:
port 6380    # 指定新的端口号
pidfile /usr/local/redis/run/redis_6380.pid # 指定新的PID文件路径
logfile "/usr/local/redis/log/redis_6380.log" # 指定新的日志文件路径
dbfilename dump_6380.rdb   # 指定新的转储文件路径

#开启以下两个配置
cluster-enabled yes
cluster-config-file nodes-6380.conf

复制一份新的服务文件
[root@nginx system]# cd /usr/lib/systemd/system/
[root@nginx system]# cp redis.service redis6380.service
[root@nginx system]# vim redis6380.service

对新服务文件进行修改(将 6380 加入文件中所示的位置)

[Unit]
Description=Redis 6380 persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
#ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis6380.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=root    
Group=root
RuntimeDirectory=redis6380
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

启动redis6380.service 服务 和 6379 服务

[root@nginx data]# systemctl start redis.service
[root@nginx data]# systemctl start redis6380.service

在这里插入图片描述
在这里插入图片描述
备注:以上三台主机都需要装一遍

2.创建集群

准备:安装所需依赖包

[root@nginx ruby-2.5.5]# yum install -y gcc gcc-c++ openssl openssl-devel zlib zlib-devel

2.1 下载ruby-2.5.5.tar.gz

[root@nginx data]# wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.5.tar.gz

2.2 解压ruby-2.5.5.tar.gz

[root@nginx ruby-2.5.5]# tar -xvf ruby-2.5.5.tar.gz
[root@nginx data]# cd ruby-2.5.5/
[root@nginx ruby-2.5.5]# ./configure
[root@nginx ruby-2.5.5]#make && make install

2.3 创建软链接

[root@nginx bin]# ln -sv /data/ruby-2.5.5/bin/gem /usr/bin/
[root@nginx ruby-2.5.5]# ln -sv /data/ruby-2.5.5/ruby /usr/bin/
[root@nginx ruby-2.5.5]# yum install rubygems
[root@node1 ruby-2.5.5]# gem install redis

如出错以与报错,请参考以下链接
https://blog.csdn.net/linkvivi/article/details/79814458
https://blog.csdn.net/ck3207/article/details/90404952
在这里插入图片描述
成功界面
在这里插入图片描述
2.4 启动redis-trib.rb
创建启动软链接

[root@nginx bin]# ln -sv /usr/local/redis/bin/redis-trib.rb /usr/bin/

验证redis-trib.rb 命令是否可执行:

[root@nginx bin]# redis-trib.rb

在这里插入图片描述
修改密码为redis 登录密码

[root@nginx redis]# vim /usr/local/lib/ruby/gems/2.5.0/gems/redis-4.2.5/lib/redis/client.rb 

#找到
      :password => nil,
#改为redis的登录密码
      :password => "123456",  

#修改所有redis 主机得登录密码:
[root@nginx redis]# vim /usr/local/redis/etc/redis.conf
requirepass 123456 #请求密码

2.5 创建集群
#注:集群主机至少要三台以上主机才能具备创建集群条件

[root@nginx etc]# redis-trib.rb create --replicas 1 192.168.91.131:6379 192.168.91.132:6379 192.168.91.133:6379 192.168.91.131:6380 192.168.91.132:6380 192.168.91.133:6380

在这里插入图片描述
2.6 检查状态:

由于未设置masterauth认证密码,所以主从未建立起来,但是集群已经运行,所以需要在每个slave控制台使用config set设置masterauth密码,或者写在每个redis配置文件中,最好是在控制点设置密码之后再写入配置文件当中。

在这里插入图片描述
2.7 分别设置masterauth密码:
#给从节点设置

[root@nginx ~]# redis-cli -h 192.168.91.131 -p 6380 -a 123456
Warning: Using a password with '-a' option on the command line interface may not be safe.
192.168.91.131:6380> CONFIG SET masterauth 123456
OK

在这里插入图片描述

[root@nginx ~]# redis-cli -h 192.168.91.132 -p 6380 -a 123456
Warning: Using a password with '-a' option on the command line interface may not be safe.
192.168.91.132:6380> CONFIG SET masterauth 123456
OK

在这里插入图片描述

[root@nginx ~]# redis-cli -h 192.168.91.133 -p 6380 -a 123456
Warning: Using a password with '-a' option on the command line interface may not be safe.
192.168.91.133:6380> CONFIG SET masterauth 123456
OK

在这里插入图片描述
2.8 确认salve 是否为开着的状态
在这里插入图片描述
2.9 确认master状态

[root@nginx ~]# redis-cli -h 192.168.91.131 -p 6379 -a 123456
Warning: Using a password with '-a' option on the command line interface may not be safe.
192.168.91.131:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.91.132,port=6380,state=online,offset=2058,lag=0
master_replid:6d646b979f5d8058e45ecdf29fb6428fcbe8df4b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2058
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2058

在这里插入图片描述
3.0 验证集群状态
在这里插入图片描述
3.1 查看集群node 对应关系
在这里插入图片描述
3.2 验证集群写入key

192.168.91.131:6379> set key1 value1
(error) MOVED 9189 192.168.91.132:6379   # 当前槽位不在131 ,所以写入不成功,需要在指定IP上写入才行

在这里插入图片描述
3.3 集群状态监控
在这里插入图片描述
查看对应节点所存值以及节点数
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Harry_z666/article/details/116759903