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

openeuler2203,基于,容器,本地,文件,部署,redis,cluster,过程,以及,简单,性能,测试 · 浏览次数 : 341

小编点评

1.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 --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 \\--cluster-replicas 1简单性能测试脚本redis-benchmark -h 127.0.0.1 -p 8001 -a Testxxxxxxxxredis-benchmark -h 127.0.0.1 -c 100 -p 8001 -a Testxxxxxxxx -d 1024简单的测试结果为: 测试模式部署模式pinggetsetincrmset测试用例1File130208132450131752129701101729测试用例1Docker12658212853412406913245089047测试用例2File12642213106112903213368998522测试用例2Docker11918912578612406913404894876测试用例3File13245013003913297813586987108测试用例3Docker12562812562813698612091881366

正文

背景

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

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

背景 其实文件搭建和集群搭建没有任何区别 这次用先用容器搭建出来,然后测试一下性能 想着再使用本地部署的方式搭建一下. 两项验证容器和基于文件的搭建的性能差异 部分资料来源: https://blog.csdn.net/weixin_54441446/article/details/12477254

OpenEuler2203使用rpm方式安装Oracle19c的过程

OpenEuler2203使用rpm方式安装Oracle19c的过程 安装介质 oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm oracle-database-ee-19c-1.0-1.x86_64.rpm compat-libstdc++-3

OpenGauss3.1.0 单机版安装部署过程

背景 由易到难 先进行单节点的设置 先说坑 openEuler2203 默认安装了python3.9 但是openGauss里面指代了3.6和3.7 /openGauss/install/om 注意在clusterconfig 里面的这个目录 必须包含很多文件. 为了好处理 我讲所有的文件又放进去了

RPM安装的Oracle19c 修改init.ora进行修复以及最简单开机启动Oracle的方法

# RPM安装的Oracle19c 修改init.ora进行修复以及最简单开机启动Oracle的方法 ## 背景 ``` 今天开始使用自己心的ThinkBook14 的笔记本 因为已经没有了 Linux测试环境供我使用. 所以我就自己准备导入一个最开始的 OpenEuler2203 + Oracle

不同linux发行版 FIO测试结果总结

# 不同linux发行版 FIO测试结果总结 ## 背景 ``` 机器来源 配置: 2路28核心Golden 6330 2.0Ghz 512G内存 硬盘 24块 960G SSD (22块 Raid5 + 2块 hotspare ) 测试工具 FIO 测试环境信息 OpenEuler2203 Kyl

[转帖]openeuler22.03实时系统安装及部署

openEuler预言 openEuler特性 融进了中科院软件所贡献的 RISC-V 新指令集架构支持内核的多核扩展性能力大大增强,提升了 CPU 多核的并行度,性能提升 20%采用轻量级虚拟化引擎 StratoVirt,一套架构支持虚机、安全容器、Serverless 三种场景,单虚机启动时间小

[转帖]国产操作系统openEuler22.03配置yum源

https://www.modb.pro/db/600208 本文选用的操作系统版本是openEuler22.03-LTS。openEuler是指操作系统的品牌英文名,中文名“欧拉”;22.03是指版本号(openEuler以年月为版本号,22.03表示2022年03月发布的版本),LTS(Long

记录一次在欧拉(openEuler22.03LTS-SP4)系统下安装(踩坑)Freeswitch1.10.11的全过程

目录前言安装环境1. 下载Freeswitch1.1 git clone 下载freeswitch库1.2 官网下载2. 开始安装前的工作2.1 安装编译时需要的环境【先安装这个!】2.2 configure前需要安装的库2.2.1. spandsp2.2.2. sofia-sip2.2.3. li

[转帖]TiDB 6.1 单机环境 On openEular 2003 SP3

https://tidb.net/book/book-rush/best-practice/other-practice/tidb61-on-openEular2003 背景​ 最近对国产操作系统很感兴趣,也有一些场景需要验证落地,官方支持银河麒麟 V10(X86,ARM),统信 UOS 等国产操作