Redis集群部署——去中心化

Redis集群部署——去中心化

一、redis安装环境和版本

redis版本:redis-3.2.9
虚拟机:192.168.80.11(redis1)、192.168.80.12(redis2)、192.168.80.13(redis3)模拟6个节点,一台机器2个节点,创建3个master,3个slave环境。
master对应的slave不要在一台服务器上

二、安装过程(三台机器)

1、去官方网站 https://redis.io

历史版本http://download.redis.io/releases/
下载解压redis-3.2.9.tar.gz

[root@redis1 ~]# wget http://download.redis.io/releases/redis-3.2.9.tar.gz   #下载
[root@redis1 ~]# mkdir -p /data/application/      
[root@redis1 ~]# tar -xvzf redis-3.2.9.tar.gz -C /data/application/      #解压缩

2、编译安装redis

redis编译安装需要先安装gcc环境
(编译Redis6.0.0,make && make install 失败)>[往下翻]
gcc –v 检查客户环境是否已经预装gcc,如果没有需要,需要先安装

[root@redis1 ~]# yum  -y  install gcc gcc-c++ autoconf automake      #下载编译工具
离线环境部署gcc环境
在能上网的对应系统版本服务器中执行下面语句,将依赖包下载下来
[root@redis1 ~]# cd /data/application/
[root@redis1 ~]# gcc -v   #验证gcc编译工具安装成功,下图回显为成功
image.png
[root@redis1 ~]# cd /data/application/redis-3.2.9
[root@redis1 redis-3.2.9]# make && make install    #编译安装Redis
[root@redis1 ~]# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/data/application/redis-3.2.9/src
export PATH
[root@redis1 ~]# source ~/.bash_profile
[root@redis1 ~]# mkdir /data/application/redis-3.2.9/redis_cluster
[root@redis1 ~]# cd  /data/application/redis-3.2.9/redis_cluster
[root@redis1 ~]# mkdir 7001 7002   #在 redis_cluster 目录下,创建名为7001、7002的目录
[root@redis1 ~]# cp /data/application/redis-3.2.9/redis.conf    /data/application/redis-3.2.9/redis_cluster/7001  
[root@redis1 ~]# cp /data/application/redis-3.2.9/redis.conf    /data/application/redis-3.2.9/redis_cluster/7002  将/data/application/redis-3.2.9/redis_cluster拷贝到这两个目录中
[root@redis1 ~]# vim  /data/application/redis-3.2.9/redis_cluster/7001/redis.conf        #分别修改7001和7002这两个配置文件redis.conf
port  7001                   //每个配置文件都需要修改成对应的端口
bind 192.168.80.11          //需要改为其他节点机器可访问的ip为192.168.80.12,192.168.80.13
daemonize    yes                     //redis后台运行
pidfile  /var/run/redis_7001.pid     //pidfile文件对应端口
maxmemory-policy volatile-lru
cluster-enabled  yes                 //必须开启集群,把注释#去掉
cluster-config-file  nodes_7001.conf   //集群的配置,对应端口
cluster-node-timeout  15000          //请求超时,默认15秒,可自行设置
appendonly  no    //aof日志开启,有需要就开启,它会每次写操作都记录一条日志
save “”


#此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端
速度缓慢的时候,可以将这二个参数一起参考设定。该内核参数默认值一般是128,对于负载很大的服务程序来说
大大的不够。一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,
然后在终端中执行sysctl -p
tcp-backlog 511

net.core.somaxconn = 2048

在Redis1、Redis2和Redis3,重复以上步骤,把目录改为7001,7002,对应的配置文件也按照这个规则修改即可。

启动Redis1、Redis2和Redis3各个节点

[root@redis1 ~]# cd /data/application/redis-3.2.9/redis_cluster/7001
[root@redis1 ~]# redis-server redis.conf
[root@redis1 ~]# cd /data/application/redis-3.2.9/redis_cluster/7002
[root@redis1 ~]# redis-server redis.conf
[root@redis1 ~]# ps -ef | grep redis                     检查Redis各个节点启动情况
root       6813      1  0 04:46 ?        00:00:05 redis-server 192.168.80.11:7001 [cluster]
root       6820      1  0 04:47 ?        00:00:05 redis-server 192.168.80.11:7002 [cluster]
root      40472  39796  0 08:03 pts/0    00:00:00 grep --color=auto redis

创建集群

[root@redis1 ~]# yum -y install ruby ruby-devel rubygems rpm-build               
集群方式是通过Redis安装目录下的redis-trib.rb脚本搭建。这个脚本是用Ruby编写的,所以要先安装Ruby环境
[root@redis1 ~]# gem install redis    #使用gem这个命令来安装redis接口
Successfully installed redis-4.2.1
Parsing documentation for redis-4.2.1
Done installing documentation for redis after 0 seconds
1 gem installed

以上回显为成功,如果ERROE报错,请看文档最后

[root@redis1 ~]# cd /data/application/redis-3.2.9/src/
#在一台机器上运行下面命令
[root@redis1 src ]# ./redis-trib.rb create --replicas 1 192.168.80.11:7001 192.168.80.12:7001 192.168.80.13:7001 192.168.80.11:7002 192.168.80.12:7002 192.168.80.13:7002
然后会出现一个提示 Can I set the above configuration? (type 'yes' to accept):yes
输入yes回车
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

在Redis1、Redis2和Redis3进行登录测试

[root@redis1 src]# redis-cli  -c -h 192.168.80.13 -p 7001
192.168.80.13:7001> set zh     zhang
-> Redirected to slot [11826] located at 192.168.80.13:7001
OK
192.168.80.13:7001> get zh
 "zhang"

查看Redis去中心化状态

[root@redis1 src]# redis-cli  -c -h 192.168.80.13 -p 7001
192.168.80.13:7001> cluster nodes         #查看去中心化状态
951fb3b6163e9690c9f1bfa7282ac73c3ee2afe5 192.168.1.106:7002 slave 67b182c52303eca62b98180f82908ea20ee6abe4 0 1599731203885 6 connected
bb1480f19725632f380903607601532bd425945a 192.168.1.125:7002 slave 2b7c7ebdfed022bb3891cfc6ff2a5e027f3bc907 0 1599731206944 4 connected
87433f617da8cf42871783370f79bd3bdefc2be0 192.168.1.125:7001 myself,slave b3ff025c85645d4ed67aa54d7f4ce7f0f47b77d2 0 0 1 connected
b3ff025c85645d4ed67aa54d7f4ce7f0f47b77d2 192.168.1.126:7002 master - 0 1599731207970 7 connected 0-5460
2b7c7ebdfed022bb3891cfc6ff2a5e027f3bc907 192.168.1.126:7001 master - 0 1599731204902 2 connected 5461-10922
67b182c52303eca62b98180f82908ea20ee6abe4 192.168.1.106:7001 master - 0 1599731205924 3 connected 10923-16383

Redis去中心化不重启添加密码

执行以下命令

redis-cli    -c -h 192.168.80.13 -p 7001
192.168.80.13:7001>  config set masterauth 123456        #
192.168.80.13:7001>  config set requirepass 123456            #临时修改密码
192.168.80.13:7001>  auth  123456        #登陆输入密码
192.168.80.13:7001>  config rewrite     #把修改写到配置文件中
192.168.80.13:7001>  exit
192.168.80.13:7001>  config get requirepass    #查看密码

执行成功后配置文件会增加两行


image.png

*此时再登陆时(未授权)会报错误
需要授权登陆 -a 密码或者登陆后 auth输入密码

redis-cli  -c -h 192.168.80.13 -p 7001 -a '123456'   #方法一登陆
192.168.80.13:7001> 
redis-cli  -c -h 192.168.80.13 -p 7001      #方法二登陆
192.168.80.13:7001> auth 123456

redisset.txt 文件内容

config set masterauth 123456
config set requirepass 123456
auth 123456
config rewrite

setauth.sh 文件内容

#/bin/bash
cat redisset.txt | redis-cli -c -h 192.168.80.11 -p 7301
cat redisset.txt | redis-cli -c -h 192.168.80.12 -p 7301
cat redisset.txt | redis-cli -c -h 192.168.80.13-p 7301
cat redisset.txt | redis-cli -c -h 192.168.80.11 -p 7302
cat redisset.txt | redis-cli -c -h 192.168.80.12 -p 7302
cat redisset.txt | redis-cli -c -h 192.168.80.13 -p 7302

报错为以下信息,是因为ruby过低

[root@localhost 7002]# gem install redis
Fetching: redis-4.2.1.gem (100%)
ERROR:  Error installing redis:
    redis requires Ruby version >= 2.3.0.

报错

报错

↓ ↓ ↓ ↓ ↓ ↓

gem install redis,ERROE报错,一般为Ruby版本过低导致的

方法一:

#查看版本信息
[root@redis1  ~]# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]       
RVM是一个命令行工具,可以提供一个便捷的多#版本Ruby环境的管理和切换。下载RVM需要先下载CRIL(linux下的文件传输工具)
[root@redis1  ~]#  yum -y install curl
[root@redis1  ~]#  curl -sSL https://get.rvm.io | bash -s stable
[root@redis1  ~]#  vim   /etc/hosts         #上一步失败,在本机上做一个解析
151.101.76.133 raw.githubusercontent.com
151.101.228.133 raw.githubusercontent.com
151.101.108.133 raw.githubusercontent.com
以上解析写一个就可以
[root@redis1  ~]#  gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    #运行下图回显
image.png

显示成功

image.png
[root@redis1  ~]#  curl -sSL https://get.rvm.io | bash -s stable       #再次运行下载命令
[root@redis1 ~]# source /usr/local/rvm/scripts/rvm
[root@redis1 ~]#  rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.9]
[ruby-]2.5[.7]
[ruby-]2.6[.5]
[ruby-]2.7[.0]
ruby-head
.....    
#选择自己要下载的版本
[root@redis1 ~]#  rvm install 2.4.9
修改 RVM 的 Ruby 安装源到 Ruby China 的 Ruby 镜像服务器,这样能提高安装速度
[root@redis1 ~]# echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > /usr/local/rvm/user/db
[root@redis1 ~]#  rvm use 2.4.9  && rvm remove 2.0.0     #运行新版本,移除旧版本

编译Redis6.0.0,make && make install 失败

查看gcc版本是否在5.3以上,centos7.6默认安装4.8.5

gcc -v

升级gcc到5.3及以上,如下:

升级到gcc 9.3:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 9.3的话:

echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
这样退出shell重新打开就是新版的gcc了
以下其他版本同理,修改devtoolset版本号即可。

方法二:通过下载tar包,源码安装
需要下载ruby、
ruby官方网站

[root@redis1 ~]# wget  https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.8.tar.gz
[root@redis1 ~]# ruby -v       #查看ruby版本号
ruby 2.0.0p648 (2015-12-16 revision 67824) [x86_64-linux]

你可能感兴趣的:(Redis集群部署——去中心化)