首页 >>  正文

redis8.5.0集群搭建

来源:baiyundou.net   日期:2024-09-21

华为云云耀云服务器L实例评测|在云耀云服务器L实例使用Docker搭建redis集群——三主三从集群

购买云耀云服务器 L 实例

华为云耀云服务器 L 实例是一款轻量级云服务器,开通选择实例即可立刻使用,不需要用户再对服务器进行基础配置。新用户还有专享优惠,2 核心 2G 内存 3M 带宽的服务器只要 89 元/年,可以点击华为云云耀云服务器 L 实例购买地址去购买云服务器。

购买指导可以查看上一篇文章华为云云耀云服务器 L 实例评测 |云服务器选购

云耀云服务器 L 实例安装 docker

这一部分在上一篇文章中已经详细说明,详见华为云云耀云服务器 L 实例评测|在云耀云服务器 L 实例上安装 Docker,本文不再赘述。

测试 Docker 是否正常运行

# 查看docker版本

docker version

# 测试运行容器

docker run hello-world

看到输出 docker 版本则表示 docker 已经成功安装,此时我们可以继续运行 hello world 的容器,测试容器是否可以正常运行。

如果 Docker 正常运行,就可以看到 docker 在成功创建容器并运行容器后,输出 hello from Docker!

创建 redis 的 docker 网段

这里将 redis 集群的网段设置为 172.16.0.0/24。

docker network create --driver bridge --subnet 172.16.0.0/24 --gateway 172.16.0.1 redis-net

查看刚刚创建的 redis 网段

docker network ls

创建 redis 的配置文件

先创建 shell 脚本来生成 redis 配置文件

sudo vim redis-node-config.sh

在 redis-node-config.sh 文件中输入以下内容:

#!/bin/bash

# 配置文件存放路径

BASE_PATH=/test/redis

# 创建个数

REDIS_COUNT=6

# ip前缀

REDIS_IP=172.16.0.1

for port in $(seq 1 $REDIS_COUNT);

do

mkdir -p $BASE_PATH/node-$port/conf

mkdir -p $BASE_PATH/node-$port/data

touch $BASE_PATH/node-$port/conf/redis.conf

cat < $BASE_PATH/node-$port/conf/redis.conf

port 6379

# 生产环境中为了安全性请绑定当前机器的ip

bind 0.0.0.0

# 启动集群模式

cluster-enabled yes

cluster-config-file nodes.conf

# redis节点宕机被发现的时间

cluster-node-timeout 5000

cluster-announce-ip $REDIS_IP$port

cluster-announce-port 6379

cluster-announce-bus-port 16379

appendonly yes

EOF

done

赋予脚本可执行权限

sudo chmod +x redis-node-config.sh

运行脚本创建配置文件

./redis-node-config.sh

查看脚本是否成功生成文件

cd /test/redis

ll

脚本启动 redis 容器

创建启动脚本

sudo vim redis-run.sh

在 redis-run.sh 中输入以下内容:

#!/bin/bash

# 配置文件存放路径

BASE_PATH=/test/redis

# 创建个数

REDIS_COUNT=6

# ip前缀

REDIS_IP=172.16.0.1

for port in $(seq 1 $REDIS_COUNT);

do

docker run -d -p 637$port:6379 -p 1667$port:16379 \\

--name redis-$port \\

-v $BASE_PATH/node-$port/data:/data \\

-v $BASE_PATH/node-$port/conf/redis.conf:/etc/redis/redis.conf \\

--net redis-net \\

--ip $REDIS_IP$port \\

redis redis-server /etc/redis/redis.conf

done

赋予脚本可执行权限

sudo chmod +x redis-run.sh

运行脚本启动多个 redis 容器

./redis-run.sh

脚本会创建六个 redis 容器并将它们启动起来。

开始搭建 redis 集群

# 进入其中一个容器

docker exec -it redis-1 /bin/bash

# 说明:--cluster :使用cluster的方式搭建集群 --cluster-replicas 1 :一个主机有一个从机

redis-cli --cluster create 172.16.0.11:6379 172.16.0.12:6379 172.16.0.13:6379 172.16.0.14:6379 172.16.0.15:6379 172.16.0.16:6379 --cluster-replicas 1

执行过程中需要输入一次 yes

测试 redis 集群

# 进入redis-1容器

docker exec -it redis-1 /bin/bash

# -c:以集群方式启动

redis-cli -c

# 设置一个键值对

set name berbai01

这里显示是 172.16.0.12 上的 redis 处理了 set 操作。

查看集群节点

cluster nodes

到此已经成功搭建了 redis 的 3 主 3 从集群,上图中 master 为主 redis,slave 则是从 redis。-----已授权转载

","gnid":"9d8337d18a0ab405b","img_data":[{"flag":2,"img":[{"desc":"","height":"529","title":"","url":"https://p0.ssl.img.360kuai.com/t01d0d243467d03dee4.jpg","width":"1283"},{"desc":"","height":"564","title":"","url":"https://p0.ssl.img.360kuai.com/t0171e943abd7d0571e.jpg","width":"468"},{"desc":"","height":"558","title":"","url":"https://p0.ssl.img.360kuai.com/t01c424501fd2940eb7.jpg","width":"533"},{"desc":"","height":"112","title":"","url":"https://p0.ssl.img.360kuai.com/t018fe7e95df3358a2e.jpg","width":"1283"},{"desc":"","height":"282","title":"","url":"https://p0.ssl.img.360kuai.com/t01df0b31317d250dce.jpg","width":"1002"},{"desc":"","height":"394","title":"","url":"https://p0.ssl.img.360kuai.com/t013eeb453308713b8e.jpg","width":"748"},{"desc":"","height":696,"title":"","url":"https://p0.ssl.img.360kuai.com/t014e96258992d33dcb.jpg","width":1172},{"desc":"","height":858,"title":"","url":"https://p0.ssl.img.360kuai.com/t01e0e74f2a31c8e0f8.jpg","width":1280},{"desc":"","height":"272","title":"","url":"https://p0.ssl.img.360kuai.com/t014a1024a79d73c4f4.jpg","width":"908"},{"desc":"","height":"206","title":"","url":"https://p0.ssl.img.360kuai.com/t013870d4441bd2f349.jpg","width":"1283"}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"cache","pub_time":1699873441000,"pure":"","rawurl":"http://zm.news.so.com/bafbf4c84e13aa1f3ea5e2ebd475a541","redirect":0,"rptid":"92df448fe235fe02","rss_ext":[],"s":"t","src":"杨老师技术评论","tag":[],"title":"在云耀云服务器L实例使用Docker搭建redis集群——三主三从集群

却闹琰1472redis怎么设置节点为集群节点 -
荀桂颜15774217566 ______ 将src下的可执行命令全部移动到/usr/local/redis/bin/目录下,执行该命令:mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server /usr/local/redis/bin,然后将配置文件移动到/usr/local/redis/etc/目录下,执行该命令:mv redis.conf /usr/local/redis/etc/.

却闹琰1472搭建redis集群为什么要安装ruby环境 -
荀桂颜15774217566 ______ 安装redis集群需要版本号在3.0以上 redis-cluster安装前需要安装ruby环境 搭建集群需要使用到官方提供的ruby脚本.需要安装ruby的环境.yum -y install ruby yum -y install rubygems redis集群管理工具redis-trib.rb [root@bogon ~]# cd redis-3.0.0 ...

却闹琰1472redis配置集群的时候,将配置好的集群文件放置在哪里 -
荀桂颜15774217566 ______ 当从Redis中读取数据的时候,如果读取的key对应的value不在内存中,那么Redis就需要从swap文件中加载相应数据,然后再返回给请求方.这里就存在一个I/O线程池的问题.在默认的情况下,Redis会出现阻塞,即完成所有的swap文件加载后才会相应.

却闹琰1472redis cluster集群 怎么选举的 -
荀桂颜15774217566 ______ 1)Redis集群是一个可以在多个Redis节点之间进行数据共享的设施(installation).2)Redis集群不支持那些需要同时处理多个键的Redis命令,因为执行这些命令需要在多个Redis节点之间移动数据,并且在高负载的情况下,这些命令将降低Redis集群的性能,并导致不可预测的行为.3)Redis集群通过分区(partition)来提供一定程度的可用性(availability):即使集群中有一部份分节点失效或者无法进行通讯,集群也可以继续处理命令请求.

却闹琰1472如何开启redis - cluster服务 -
荀桂颜15774217566 ______ redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢. 一,redis cluster命令行 查看复制打印? //集群(cluster) CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),...

却闹琰1472如何使用 redis 集群来实现分布式储存 -
荀桂颜15774217566 ______ 一 : redis cluster 介绍篇 1:redis cluster 的现状 目前 redis 支持的 cluster 特性 ( 已亲测 ): 1): 节点自动发现 2):slave->master 选举 , 集群容错 3):Hot resharding: 在线分片 4): 进群管理 :cluster xxx 5): 基于配置 (nodes-port.conf...

却闹琰1472利用sentinel和cluster创建Redis集群的区别 -
荀桂颜15774217566 ______ sentinel是解决HA问题的,cluster是解决sharding问题的,经常一起用 再说一下两者的原理:1. 功能 Sentinel实现如下功能:(1)monitoring——Redis实例是否正常运行.(2)notification——通知application错误信息.(3)failover——某个master...

却闹琰1472如何解决redis高并发客户端频繁time out -
荀桂颜15774217566 ______ ‍检查思路一下几点:1、查看是否有网络波动引起,这种情况有可能是redis集群和调用方属于外网方式.2、查看redis链接数,是否达到设置的连接数或者默认设置的连接数.‍3、如过是程序链接timeout的话,看客服端代码链接池方式是否问题.基于你提问题提的含糊不清,只能回答这么多了,有疑问可以追问!

却闹琰1472memcached和redis的区别 -
荀桂颜15774217566 ______ 1、Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片、视频等等;2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;3、虚拟内存--Redis当物...

却闹琰1472redis为什么要集群 -
荀桂颜15774217566 ______ Redis不是比较成熟的Memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充.现在有越来越多的应用也在纷纷基于Redis做架构的改造.

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024