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:/ ...
随机推荐
- 【DevCloud · 敏捷智库】暴走在发布前夜的开发,你怕不怕?
摘要:每个月都有2天开发团队要通宵熬夜,大家苦不堪言.有个别的开发同学,骂完公司骂同事,骂完同事骂客户的,甚至连自己都不放过-- 来自一个CEO的叙述 在一次企业交流会上,一个公司的CEO提道,&qu ...
- LiteOS基于Sensorhub的超声波模组移植
摘要:本文为你带来LiteOS基于Sensorhub的超声波模组移植的应用. 1.Sensor Hub LiteOS传感框架即Sensor Hub,是一个基于Huawei LiteOS物联网操作系统的 ...
- 云图说|云上应用监控神器——应用性能监控APM2.0
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 应用性能管理服务 ...
- 不会使用Spring的配置文件,赶紧把这个甩给他
摘要:文章从Spring程序的快速使用.Bean标签的使用和其属性的具体使用,每个属性都用代码来解释,运行结果和案例也写的都很明白. 本文分享自华为云社区<怎样使用Spring的配置文件?带大家 ...
- 如何给网页和代码做HTML加密?
如何给网页和代码做HTML加密? 本篇文章给大家谈谈html混淆加密在线,以及HTML在线加密对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔. 如何给代码加密? 1.源代码加密软件推荐使 ...
- Python上下文管理器的高级使用
在文件处理和网络编程时,对于打开的文件不管最后内容处理是否符合预期都要在结束时关闭文件.这时常见的处理方法是try catch finally 的方法 f = open("demo.txt& ...
- vim-修改键盘Tab键为四个空格
在 /etc/vimrc 文件后添加一行 set ts=4
- Python | 解放双手,用Python实现自动发送邮件
解放双手,用Python实现自动发送邮件 使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间. Python有两个内置库:smtplib和email,能够实现邮件功能, ...
- vue学习笔记 十九、实例完整代码
系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...
- treeselect 表单验证解决方法
https://www.cnblogs.com/wxqworld/p/11203603.html