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:/ ...
随机推荐
- 手把手带你玩转HetuEngine:资源规划与数据源对接
本文分享自华为云社区<[手把手带你玩转HetuEngine](三)HetuEngine资源规划>,作者: HetuEngine九级代言 . HetuEngine支持在服务层角色实例和计算实 ...
- MindSpore实践:对篮球运动员目标的检测
摘要:本文讲述的是MindSpore对篮球运动员目标的检测应用,通过AI技术辅助对篮球赛场进行分析. 本文分享自华为云社区<MindSpore大V博文系列:AI对篮球运动员目标的检测>,原 ...
- 谁说Redis不能存大key
摘要:推荐使用GaussDB(for Redis)搞定"大key"存储,从根本上解决社区版Redis使用风险. 本文分享自华为云社区<华为云GaussDB(for Redis ...
- 华为云GaussDB:发挥生态优势,培养应用型DBA
摘要:GaussDB首要的任务是解决华为的业务连续性的需求,同时也是要确保使用GaussDB的客户的业务能够连续,所以我们坚持战略投入,坚持从每一行代码,坚持从生态开始来构建整个数据库体系. 本文分享 ...
- 火山引擎 DataTester 升级:降低产品上线风险,助力产品敏捷迭代
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 在企业竞争加剧的今天,精益开发和敏捷迭代已成为产品重要的竞争力.如何保障每一次 Feature 高效迭代与安全,如何快速实 ...
- 【python爬虫】requests高级用法 代理池搭建 爬虫实战
目录 昨日回顾 面试题 爬虫总结 今日内容 1 requests高级用法 1.0 解析json 1.1 ssl认证(了解) 1.2 使用代理(重要) 1.3 超时设置 1.4 异常处理 1.5 上传文 ...
- Linux day4:查看文件属性信息 inode和block 硬链接和软链接 inux系统时间 虚拟机克隆 linux定时任务 paramiko模块 公钥私钥
目录 文件属性信息 存储数据相关 inode block 访问文件原理 链接信息 硬链接 软链接 linux系统时间 虚拟机克隆 链接克隆和完整克隆 克隆之后的配置 linux定时任务 定时任务软件 ...
- 解决延迟有 Wi-Fi 6 就够了!
最近二狗子家里的路由器坏了,而家里的数据网络信号又非常差,失去了路由器基本上就等于和世界隔离,所以二狗子打算去附近商城随便买一个新的路由器,结果售货员张口就问:"买 Wi-Fi 6 的路由器 ...
- linux下jdk1.7、1.8版本的安装
-----1.7------ (1)解压安装包 tar -zxvf jdk-7u80-linux-x64.tar.gz (2)移动到安装目录 ...
- vue学习笔记 十三、路由介绍
系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...