OpenEuler2203 基于容器和本地文件部署Redis Cluster的过程以及简单性能测试
背景
其实文件搭建和集群搭建没有任何区别
这次用先用容器搭建出来,然后测试一下性能
想着再使用本地部署的方式搭建一下.
两项验证容器和基于文件的搭建的性能差异
部分资料来源:
https://blog.csdn.net/weixin_54441446/article/details/124772542
感谢原作者.
我这边进行了简单的修改.
介质准备
拉取镜像.
我这边从阿里云上面拉取完 push到了私有的镜像库
OpenEuler上面的安装过程为:
yum install docker -y
systemctl enable docker
systemctl restart docker
拉取镜像
docker pull harbor.gscloud.online/gscloud/redis:7.0.5
配置文件准备
Edit From csdn
在每台机器上面创建目录
mkdir -p /redis_cluster_docker
cat >/redis_cluster_docker/redis_cluster.template <<EOF
port \${PORT}
requirepass Testxxxxxxxx
masterauth Testxxxxxxxx
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip `ip addr |grep inet |grep ens192 |awk '{print $2}' |awk -F "/" '{print $1}'`
cluster-announce-port \${PORT}
cluster-announce-bus-port 1\${PORT}
EOF
配置文件说明
EOF 指定文件开始结尾
> 指定全新创建文件
`` 中间进行命令替换, 其中获取ens192 网卡的地址.
\$ 进行转义, 避免变量丢失.
配置文件说明
Study From csdn
port:节点端口;
reqirepass:添加访问认证;
masterauth:如果主节点开启了访问认证,从节点访问主节点需要认证;
protected-mode:保护模式,默认值yes,即开启。
开启保护模式以后 ,需配置 bind ip 或者设置访问密码;关闭保护模式,外部网络可以直接访问;
daemonize:是否以守护线程的方式启动(后台启动),默认no;
appendonly:是否开启AOF持久化模式,默认no;
cluster-enabled:是否开启集群模式,默认no;
cluster-config-file:集群节点信息文件;
cluster-node-timeout:集群节点连接超时时间;
cluster-announce-ip:集群节点IP,填写宿主机的IP;
cluster-announce-port:集群节点映射端口;
cluster-announce-bus-port:集群节点总线端口。
配置文件说明
Study From csdn
每个Redis集群节点需要打开两个TCP连接。
端口6379提供给客户端连接,外加上一个端口16379,
记起来也比较容易,在6379的基础上加10000
端口16379提供给集群总线使用,总线用来集群节点间通信,
使用的是二进制协议。集群总线的作用:失败检测、配置升级、故障转移授权等。
客户端只能连接6379端口,不能连接端口16379。
防火墙需要确保打开这两个端口,否则集群节点之间不能通信。
命令端口和总线端口之间总是相差10000 。
修改配置文件
- 注意我的想法是在两台服务器上面创建六主六从的测试集群.
- 与原作者的文档不太一样.
- 两台服务器上面可以一模一样的处理.
cd /redis_cluster_docker
for port in `seq 7001 7006`; do \
mkdir -p ${port}/conf \
&& PORT=${port} envsubst < redis_cluster.template > ${port}/conf/redis.conf \
&& mkdir -p ${port}/data; \
done
创建容器
- 注意创建完成之后可以使用 docker ps 进行检查
for port in $(seq 7001 7006); do \
docker run -di --restart always --name redis-${port} --net host \
-v /redis_cluster_docker/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /redis_cluster_docker/${port}/data:/data \
harbor.gscloud.online/gscloud/redis:7.0.5 redis-server /usr/local/etc/redis/redis.conf; \
done
创建集群
- 需要在任一节点执行如下命令
- 注意测试最好是关闭防火墙.
docker exec -it redis-7001 /bin/bash
执行命令
redis-cli -a Testxxxxxxxx --cluster create \
10.110.139.189:7001 10.110.139.189:7002 10.110.139.189:7003 \
10.110.139.189:7004 10.110.139.189:7005 10.110.139.189:7006 \
10.110.139.190:7001 10.110.139.190:7002 10.110.139.190:7003 \
10.110.139.190:7004 10.110.139.190:7005 10.110.139.190:7006 \
--cluster-replicas 1
验证是否可以登录成功
redis-cli -a Testxxxxxxxx -c -p 7001
文件系统创建配置文件
- 注意文件系统必须使用 daemonize yes的参数不然比较麻烦.
- 容器运行时必须daemonize off 才可以.
mkdir -p /redis_cluster_file
cat >/redis_cluster_file/redis_cluster.template <<EOF
port \${PORT}
requirepass Testxxxxxxxx
masterauth Testxxxxxxxx
protected-mode no
daemonize yes
appendonly yes
dir /redis_cluster_file/\${PORT}/data/
cluster-enabled yes
cluster-config-file /redis_cluster_file/\${PORT}/conf/nodes.conf
cluster-node-timeout 15000
cluster-announce-ip `ip addr |grep inet |grep ens192 |awk '{print $2}' |awk -F "/" '{print $1}'`
cluster-announce-port \${PORT}
cluster-announce-bus-port 1\${PORT}
EOF
文件系统处理
- 注意为了同时可以使用, 建议端口号进行区分.
- 文件系统使用 8001 到 8006
cd /redis_cluster_file
for port in `seq 8001 8006`; do \
mkdir -p ${port}/conf \
&& PORT=${port} envsubst < redis_cluster.template > ${port}/conf/redis.conf \
&& mkdir -p ${port}/data; \
done
分发二进制的redis文件
将redis7.0.5 的 cli server 和benchmar
文件分发到操作系统的 /usr/bin 目录下面
chmod 777 /usr/bin/redis-*
编写启动脚本
for port in $(seq 8001 8006); do \
redis-server /redis_cluster_file/$port/conf/redis.conf; \
done
创建文件集群
redis-cli -a Testxxxxxxxx --cluster create \
10.110.139.189:8001 10.110.139.189:8002 10.110.139.189:8003 \
10.110.139.189:8004 10.110.139.189:8005 10.110.139.189:8006 \
10.110.139.190:8001 10.110.139.190:8002 10.110.139.190:8003 \
10.110.139.190:8004 10.110.139.190:8005 10.110.139.190:8006 \
--cluster-replicas 1
简单性能测试脚本
redis-benchmark -h 127.0.0.1 -p 8001 -a Testxxxxxxxx
redis-benchmark -h 127.0.0.1 -c 100 -p 8001 -a Testxxxxxxxx
redis-benchmark -h 127.0.0.1 -c 100 -p 8001 -a Testxxxxxxxx -d 1024
简单的测试结果为:
| 测试模式 | 部署模式 | ping | get | set | incr | mset |
|---|---|---|---|---|---|---|
| 测试用例1 | File | 130208 | 132450 | 131752 | 129701 | 101729 |
| 测试用例1 | Docker | 126582 | 128534 | 124069 | 132450 | 89047 |
| 测试用例2 | File | 126422 | 131061 | 129032 | 133689 | 98522 |
| 测试用例2 | Docker | 119189 | 125786 | 124069 | 134048 | 94876 |
| 测试用例3 | File | 132450 | 130039 | 132978 | 135869 | 87108 |
| 测试用例3 | Docker | 125628 | 125628 | 136986 | 120918 | 81366 |
OpenEuler2203 基于容器和本地文件部署Redis Cluster的过程以及简单性能测试的更多相关文章
- 基于人人框架--本地项目部署流程(前后端+IIS上传功能)
基于人人框架--本地项目部署流程(前后端+IIS上传功能) 一.环境要求 JAVA环境 JDK:1.8 IIS 本地电脑必须要有IIS服务 MySQL 数据库采用MySQL数据库,安装版本为 5.7. ...
- 部署Redis Cluster 6.0 集群并开启密码认证 和 Redis-cluster-proxy负载
部署Redis Cluster集群并开启密码认证 如果只想简单的搭建Redis Cluster,不需要设置密码和公网访问,可以参考官方文档. 节点介绍 Cluster模式推荐最少有6个节点,本次实验搭 ...
- K8S部署Redis Cluster集群
kubernetes部署单节点redis: https://www.cnblogs.com/zisefeizhu/p/14282299.html Redis 介绍 • Redis代表REmote DI ...
- K8S部署Redis Cluster集群(三主三从模式) - 部署笔记
一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...
- 在 K8S 中快速部署 Redis Cluster & Redisinsight
Redis Cluster 部署 使用 Bitnami helm chart 在 K8S redis 命名空间中一键部署 Redis cluster . helm repo add bitnami h ...
- Android Studio上手,基于VideoView的本地文件及流媒体播放器
既然是第一个Android程序.少不了要Hello World. 1. 新建安卓project watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm0wNTE ...
- 如何用docker部署redis cluster
前言 由于本人是个docker控,不喜欢安装各种环境,而且安装redis-trib也有点繁琐,索性用docker来做redis cluster. 本文用的是伪集群,真正的集群放到不同的机器即可.端口是 ...
- 手把手教你部署 Redis Cluster
环境准备 阿里云申请3台ECS,如下: 序号 内网IP OS A 172.16.190.78 CentOS 7.6 B 172.16.242.36 CentOS 7.6 C 172.16.190.77 ...
- 最适合新手的Redis Cluster搭建过程
好记性不如烂笔头,记录分片高可用Redis Cluster的搭建过程 Redis集群演进过程 Redis单节点 主从复制: 复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 故 ...
- 基于Windows下使用Docker 部署Redis
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 1 去官网下载指定的版本 https:/ ...
随机推荐
- CodeArts TestPlan:一站式测试管理平台
摘要:华为云正式发布CodeArts TestPlan,这是一款自主研发的一站式测试管理平台,沉淀了华为30多年高质量的软件测试工程方法与实践,覆盖测试计划.测试设计.测试执行和测试评估等全流程. 本 ...
- 全文手敲代码,教你用Java实现扫雷小游戏
摘要:本程序共封装了五个类,分别是主类GameWin类,绘制底层地图和绘制顶层地图的类MapBottom类和MapTop类,绘制底层数字的类BottomNum类,以及初始化地雷的BottomRay类和 ...
- Log4Shell 漏洞披露已近一年,它对我们还有影响吗?
在 Log4Shell 高危漏洞事件披露几乎整整一年之后,新的数据显示,对全球大多数组织来说,补救工作是一个漫长.缓慢.痛苦的过程. 根据漏洞扫描领先者 Tenable 公司的遥测数据来看,截至今年1 ...
- PPT 没有电脑如何制作PPT
没有电脑如何制作PPT
- Could not autowire. No beans of 'RestTemplate' type found.
解决方案 @Resourceprivate RestTemplate restTemplate;
- SpringBoot Kafka SSL接入点PLAIN机制收发消息
applycation.yml spring: # https://developer.aliyun.com/article/784990 kafka: bootstrap-servers: XXXX ...
- VS IIS Express 启动项目后,绑IP让别人可以访问你的网站
如何VS IIS Express 启动项目后,绑本机IP,让别人可以访问你的网站,方便Debug 一.修改iis配置 1.在web服务器执行后,会运行IIS Express,右击它选择显示所有应用程序 ...
- C# Task 多任务:C# 扩展TaskScheduler实现独立线程池,支持多任务批量处理,互不干扰,无缝兼容Task
先上源码: https://gitee.com/s0611163/TaskSchedulerEx 为什么编写TaskSchedulerEx类? 因为.NET默认线程池只有一个线程池,如果某个批 ...
- 一次惨痛教训让我写了个Windows定期备份文件脚本
前言 说实话在写这篇文章的时候,咸鱼不禁又想起了那件男默女泪的往事 我喜欢做笔记,我觉得好记性不如烂笔头,所以在我的学生以及职业生涯阶段,我用过四款笔记应用--Onenote.语雀.印象笔记.Ty ...
- 【每日一题】10.树(DFS 序)
补题链接:Here DFS序列 (非树形DP),这道题成功被骗... 贴一下学姐讲解: 这个题表面上看起来像是个 树上dp,但是你会发现,当xy同色的时候要求x到y的路径上所有点颜色一样这个事情非常难 ...