草庐IT

redis集群环境搭建(三)

Hello.Reader 2024-01-26 原文

1.概述

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。Redis 集群的优势:

  • 自动分割数据到不同的节点上。
  • 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

2.获取资源及上传

首先通过命令获取redis安装包:

wget https://download.redis.io/releases/redis-6.2.6.tar.gz

如果内网服务器则需要通过其他外网的服务器进行下载好,通过以下命令进行上传:

scp -r ./redis-6.2.6.tar.gz  root@172.168.74.249:/home #./表示当前目录,/home表示目标服务器目录

如果需要从有外网服务器连接内网服务器,则通过以下命令进行连接:

ssh root@172.16.47.xxx #172.16.47.xxx目标服务器

3.安装集群

创建redis-cluster文件夹,使用下列命令进行创建

 mkdir /data/redis-cluster && cd /data/ && ll -h

如下图所示图解
在redis-cluster文件夹下创建6379-6382共4个文件夹,使用如下命令

mkdir 6379
mkdir 638{0,1,2}


复制到6379文件夹,命令如下所示:

cp -r redis/bin/. /data/redis-cluster/6379
cd /data/redis-cluster/6379
ls

此处的redis文件,是在其他服务器编译好的,编译和单机安装一样,使用make命令,没有此命令则需要进行安装。如下图所示图解:

复制原有的redis.conf文件进行修改,此处的redis.conf文件为本人在其他服务器传输上来的,这里的文件就redis压缩包压缩后的配置文件,由于本人的服务无法连接外网,编译比较费劲

cp redis.conf /data/redis-cluster/6379/ 

如下图所示图解

修改端口号,命令如下

vim redis.conf #port 6379

如下图所示图解

开启集群,将cluster-enabled yes前的#删除,如下图所示

将6379文件夹下的内存复制到6380~6382中,命令如下:

cp -r 6379/. 6380/
cp -r 6379/. 6381/
cp -r 6379/. 6382/

如下图所示图解

修改6379~6382文件夹中redis.conf的端口号,命令如下图所示

vi /data/redis-cluster/6379/redis.conf
vi /data/redis-cluster/6380/redis.conf
vi /data/redis-cluster/6381/redis.conf
vi /data/redis-cluster/6382/redis.conf

端口号修改为对应的文件夹的名称就行啦
使用命令上传至其他一台服务器,作为4个存节点

scp -r redis-cluster/  root@172.16.47.251:/data

如下图命令图解
服务器1

服务器2

修改对应的文件名和端口,命令如下:

mv 6379 6383 #修改文件名
mv 6380 6384
mv 6381 6385
mv 6382 6386
vi 6383/redis.conf #修改端口
vi 6384/redis.conf
vi 6385/redis.conf
vi 6386/redis.conf

图解如下图所示:

引入模块
本此只引入redisjson和redisearch两个模块,这些在我在之前博客中有写过具体的编译方案(redisjson和redisearch),这就不做过多的叙述。其他模块我后面会继续写相关的编译博客。
注意:redisjson依赖于glibc2.29及以上版本,如果遇到少GLIBC2.29依赖情况。请升级glibc2.29。
引入依赖模块其实很简单只需要在redis.conf文件进行配置对应编译好的模块即可。本次使用ubuntu20进行搭建。操作如下:
注意: 文件此处文件是放在了redis各,节点的根目录;根据不同目录调整不同自己的路径,当前目录则为./;模块文件目录需要自己创建。

启动8台节点的redis服务

此步有很多种方法,自己可以编写一个shell脚本进行启动,也可以进入每个节使用如下命令进行启动:

./redis-server redis.conf

编写shell脚本

操作命令如下:

vim start-cluster.sh

脚本内容如下(服务器1):

cd 6379
./redis-server redis.conf
cd ..
cd 6380
./redis-server redis.conf
cd ..
cd 6381
./redis-server redis.conf
cd ..
cd 6382
./redis-server redis.conf
cd ..

服务器2的同样道理,笔者在这里不做过多的叙述了

创建好启动脚本文件之后,需要修改该脚本的权限,使之能够执行,使用如下命令:

chmod +x start-cluster.sh

脚本放在redis-cluster文件目录下

./start-cluster.sh

查看是否启动成功

ps -ef |grep redis

操作如下图所示:

创建集群

使用如下命令进行集群创建(没设置密码):

./redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1

使用如下命令进行集群创建(设置密码):
提示错误:Node xx.xx.xx.xx:6379 noauth authentication required

./redis-cli -a你的redis集群密码 --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1

出现是否确认以上配置:

输入 yes

执行后如下图所示:

由于此处服务器密码使用公司内部服务器ip,这里用127.0.0.1进行代替,正式大家不同服务器建议大家使用内网ip进行创建redis集群。

连接主集群节点

./redis-cli -h localhost -p 6379 -a auto688bs@kn.qts.redis -c

查看当前集群信息

CLUSTER INFO

查询集群节点信息

CLUSTER nodes

有关redis集群环境搭建(三)的更多相关文章

  1. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  2. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  3. ruby-on-rails - ruby gem如何在rails环境下工作 - 2

    我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge

  4. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

  5. ruby-on-rails - 如果特定语言环境中缺少翻译,如何配置 i18n 以使用 en 语言环境? - 2

    如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback

  6. ruby-on-rails - 可移植 Ruby on Rails 环境 - 2

    我给自己买了一个新的8gigUSBkey,我正在寻找一个合适的解决方案来拥有一个可移植RoR环境来学习。我在谷歌上搜索了一下,发现了一些可能性,但我很想听听一些现实生活中的经历和意见。谢谢! 最佳答案 我喜欢InstantRails,非常容易使用,无需安装程序,也不会修改您的系统环境。 关于ruby-on-rails-可移植RubyonRails环境,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

  7. ruby-on-rails - 如何通过 URL 更改语言环境? - 2

    在我的双语Rails4应用程序中,我有一个像这样的LocalesController:classLocalesController用户可以通过此表单更改其语言环境:deflocale_switcherform_tagurl_for(:controller=>'locales',:action=>'change_locale'),:method=>'get',:id=>'locale_switcher'doselect_tag'set_locale',options_for_select(LANGUAGES,I18n.locale.to_s)end这有效。但是,目前用户无法通过URL更改

  8. ruby - 从 FaSTLane 将环境变量传递给 shell 脚本 - 2

    我在跑Fastlane(适用于iOS的持续构建工具)以执行用于解密文件的自定义shell脚本。这是命令。sh"./decrypt.shENV['ENCRYPTION_P12']"我想不出将环境变量传递给该脚本的方法。显然,如果我将密码硬编码到脚本中,它就可以正常工作。sh"./decrypt.shmypwd"有什么建议吗? 最佳答案 从直接Shell中扩展假设这里的sh是一个faSTLane命令,它以给定的参数作为脚本文本调用shell命令:#asafastlanedirectivesh'./decrypt.sh"$ENCRYPTI

  9. 【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测 - 2

    文章目录1.自动驾驶实战:基于Paddle3D的点云障碍物检测1.1环境信息1.2准备点云数据1.3安装Paddle3D1.4模型训练1.5模型评估1.6模型导出1.7模型部署效果附录show_lidar_pred_on_image.py1.自动驾驶实战:基于Paddle3D的点云障碍物检测项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测课程地址——自动驾驶感知系统揭秘1.1环境信息硬件信息CPU:2核AI加速卡:v100总显存:16GB总内存:16GB总硬盘:100GB环境配置Python:3.7.4框架信息框架版本:PaddlePaddle2.4.0(项目默认框架版本为2.3

  10. ruby-on-rails - 如何在多个环境中处理 OmniAuth 回调? - 2

    我有一个应用程序专门使用Facebook作为身份验证提供程序,并正确设置了生产模式的回调。为了让它工作,您需要为您的Facebook应用程序提供一个站点URL和一个用于回调的站点域,在我的例子中是http://appname.heroku.com和appname。heroku.com分别。问题是我的Controller设置为只允许经过身份验证的session,所以我无法在开发模式下查看我的应用程序,因为Facebook应用程序的域显然没有设置为本地主机。如何在不更改Facebook设置的情况下解决这个问题? 最佳答案 创建另一个域l

随机推荐