首页 > 数据库 >OpenEuler2203 基于容器和本地文件部署Redis Cluster的过程以及简单性能测试

OpenEuler2203 基于容器和本地文件部署Redis Cluster的过程以及简单性能测试

时间:2022-11-06 20:14:42浏览次数:49  
标签:10.110 OpenEuler2203 Cluster Redis redis cluster conf 139.189 port

背景

其实文件搭建和集群搭建没有任何区别
这次用先用容器搭建出来,然后测试一下性能
想着再使用本地部署的方式搭建一下.
两项验证容器和基于文件的搭建的性能差异
部分资料来源:
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

标签:10.110,OpenEuler2203,Cluster,Redis,redis,cluster,conf,139.189,port
From: https://www.cnblogs.com/jinanxiaolaohu/p/16863606.html

相关文章

  • docker实战教程(十五):docker上安装redis
    简单版从dockerhub上拉取redis镜像到本地(指定版本为6.0.8)运行redis容器进入redis环境这样安装同样存在数据和配置文件的问题复杂版在Centos宿主机下新建目录/app......
  • CentOS 8.3 XXX Cluster Initialization Configuration
    一、CentOS8.3XXXClusterInitializationConfiguration1节点规划官方建议节点数量为奇数个hostnameIP节点规划角色maset01192.168.80.31Master01(主节......
  • pycharm操作redis
    安装在终端环境下输入:pipinstallredispycharm操作redis之普通连接#1.导入模块fromredisimportRedis#2.实例化产生链接对象conn=Redis()#连接本地的redi......
  • redis介绍和安装
    redis介绍redis是一种在内存进行存储数据的数据库,当然,它也支持将数据存储到硬盘上redis的存储方式是通过key-value的形式,value可以是很多数据类型,分别是:string(字符串)、li......
  • redis rdb与snapshot的关系
    关系RDB是Redis用来进行持久化的一种方式,在指定的时间间隔内将当前内存中的数据集快照写入磁盘,也就是Snapshot快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到......
  • 使用jwt,redis,实现登录
    jwt是无状态的,不需要服务端存储登录用户信息,一次性生成token后,除非过期,不然是都可以用的。但是这样就产生了token续期、用户注销等问题。token续期怎么解决呢?1、使用......
  • Springboot2.x 结合 redis 实现ip请求次数限制
    参考https://cloud.tencent.com/developer/article/1607647SpringBoot整合Redis代码详解,四步搞定!https://blog.csdn.net/jinyangbest/article/details/98205802sprin......
  • Windows版的Redis安装
    到官网下载:​​​https://github.com/MicrosoftArchive/redis/releases​​​如果没有到如下网盘下载:​更改配置文件​Windows版的Redis有2个配置文件,一个是:redis.windows.c......
  • 微服务Spring Boot 整合Redis 基于Redis的Stream 消息队列 实现异步秒杀下单
    文章目录​​一、什么是Redis消息队列?​​​​二、Redis消息队列--基于RedisList实现消息队列​​​​三、Redis消息队列--基于Pubsub的消息队列​​​​四、......
  • 仿黑马点评-redis整合【二——商户查询缓存】——缓存穿透、缓存击穿的解决
    前言:......