TongRDS 2214 docker版指引(by lqw )

文章目录

    • 前言
    • 准备工作
    • 中心节点
    • 服务节点
    • 哨兵节点

前言

部署docker版本,建议先参考TongRDS2214手动部署版指引(by lqw+sy)
在本地手动部署了一套适合业务场景的rds 服务后,再通过dockerfile 打镜像。

准备工作

1.准备对应的安装包(其中mc的是中心节点的安装包,node是服务节点和哨兵节点安装包)。
在这里插入图片描述

2.已手动部署好对应的rds服务并测试过没有问题。
3.确认一下不同服务需要用到的中心节点和服务节点还有哨兵节点的个数。
例如单机版只需要一个中心节点,一个服务节点。
集群版需要一个中心节点,六个服务节点。
哨兵版需要一个中心节点,六个服务节点,其中有三个是作为服务节点,另外三个作为哨兵节点。
以此类推,然后根据本帖子里写的中心节点,服务节点,哨兵节点的指引打docker镜像。
4.安装前请确保当前磁盘的使用情况,避免因为磁盘空间不足导致安装失败。
在这里插入图片描述

df -h /opt

在这里插入图片描述
5.确认一下docker 的磁盘使用情况,如果用满了,自己百度搜一下怎么清理,清理前记得做好备份:

 docker system df

在这里插入图片描述
如果想要彻底清理出空间,包括清理掉镜像和容器,可以使用这个指令

docker system prune -a

中心节点

本次示范用的目录为/opt/rds/pcenter ,跟TongRDS2214手动部署版指引(by lqw+sy) 有点不一样,请注意区别。

停掉服务器本地的中心节点服务。
在这里插入图片描述

记得检查配置文件(etc下的cluster.properties)
在这里插入图片描述
授权文件也检查一下
在这里插入图片描述

下面是本次使用到的dockerfile,请命名为Dockerfile-tongcenter :

#根据自己想要用的系统来配,例如ubuntu或者centos,但是得用docker先pull
FROM centos
MAINTAINER TongRDS
#根据自己本地的jdk来配(jdk1.8.0_391需要放在跟dockerfile同一级目录)
COPY ./jdk1.8.0_391/ /opt/jdk1.8.0_391
#根据自己本地的jdk来配
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV PATH=${JAVA_HOME}/bin:$PATH
ENV TZ=Asia/Shanghai
#中心节点解压目录pcenter需要放在/opt/rds/pcenter,这个根据自己的情况来修改,最好授权也放在/opt/rds/pecenter(安装中心节点) 下
COPY ./pcenter/ /opt/pcenter
WORKDIR /opt/pcenter/bin
#6300是在中心节点的配置文件sync.properties里配的
EXPOSE 6300 8086 26379
ENTRYPOINT "./StartCenter.sh"

dockerfile,pcenter,jdk路径如下:
在这里插入图片描述

之后,cd到dockerfile所在的目录(这里是/opt/rds),执行以下指令:

docker build -f Dockerfile-tongcenter -t tongrds-center:2.2.C.1 .

在这里插入图片描述
接下来轮到生成容器和挂载相关文件(pot/rds/pcenter是宿主机挂载目录,也是手动部署的rds的中心节点的安装目录):

# 有需要可以在-d 后加--name 容器名
docker run -d -e CENTER_PLATFORM=native \
    -p 8086:8086 \
    -p 6300:6300 \
    -p 26379:26379 \
    -v /opt/rds/pcenter/etc/cluster.properties:/opt/pcenter/etc/cluster.properties \
    -v /opt/rds/pcenter/etc/active.properties:/opt/pcenter/etc/active.properties \
    -v /opt/rds/pcenter/etc/acl.properties:/opt/pcenter/etc/acl.properties \
    -v /opt/rds/pcenter/etc/config.properties:/opt/pcenter/etc/config.properties \
    -v /opt/rds/pcenter/etc/sync.properties:/opt/pcenter/etc/sync.properties \
    -v /opt/rds/pcenter/center.lic:/opt/pcenter/center.lic \
    tongrds-center:2.2.C.1

使用 docker ps -a 看看有没有对应容器,顺带看看CONTAINER ID
在这里插入图片描述
使用docker logs CONTAINER ID 看看日志:
在这里插入图片描述

使用以下指令進入容器内部,檢查是否配置文件已生效:

docker exec -it CONTAINER ID  /bin/bash 

# 退出的话则使用这个指令
exit

在这里插入图片描述

服务节点

本次示范用的目录为/opt/rds/pmemdb ,跟TongRDS2214手动部署版指引(by lqw+sy) 有点不一样,请注意区别。

关掉服务节点:
在这里插入图片描述
dockerfile和jdk还有pmemdb的目录如下图所示:
在这里插入图片描述

dockerfile 參考(其中6200和6379是在etc/cfg.xml里配置的,注意一下,如果同一个docker需要装多个服务节点,这个端口不要重复,不然会有端口冲突的):

#根据自己想要用的系统来配,例如ubuntu或者centos,但是得用docker先pull
FROM centos
MAINTAINER TongRDS
#根据自己本地的jdk来配(jdk1.8.0_391需要放在跟dockerfile同一级目录)
COPY ./jdk1.8.0_391/ /opt/jdk1.8.0_391
#根据自己本地的jdk来配
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV PATH=${JAVA_HOME}/bin:$PATH
ENV TZ=Asia/Shanghai
COPY ./pmemdb/ /opt/pmemdb/
#这里的端口在配置文件里配置,需要保持一致
EXPOSE 6200 6379
WORKDIR /opt/pmemdb/bin
ENTRYPOINT "./StartServer.sh"

例如你在本地弄了两个pmemdb,其中一个是pmemdb2,pmemdb2可以参考这个dockerfile(前提是cfg.xml里配置了6201和6380,6380是redis连接端口)

#根据自己想要用的系统来配,例如ubuntu或者centos,但是得用docker先pull
FROM centos
MAINTAINER TongRDS
#根据自己本地的jdk来配(jdk1.8.0_391需要放在跟dockerfile同一级目录)
COPY ./jdk1.8.0_391/ /opt/jdk1.8.0_391
#根据自己本地的jdk来配
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV PATH=${JAVA_HOME}/bin:$PATH
ENV TZ=Asia/Shanghai
COPY ./pmemdb2/ /opt/pmemdb/
#这里的端口在配置文件里配置,需要保持一致
EXPOSE 6201 6380
WORKDIR /opt/pmemdb/bin
ENTRYPOINT "./StartServer.sh"

pmemdb的可以执行这个指令来打包镜像(cd到dockerfile所在目录执行)

docker build -f Dockerfile-tongnode -t tongrds-node:2.2.C.1 .

在这里插入图片描述
pmemdb2的可以执行这个指令来打包镜像(cd到dockerfile所在目录执行)

docker build -f Dockerfile-tongnode2 -t tongrds-node2:2.2.C.1 .


在这里插入图片描述

通过dockerfile打完镜像后,pmemdb的可以执行这个指令构建和启动对应容器并挂载相关配置文件:

    # 有需要可以在-d 后加--name 容器名
   docker run -d -p 6200:6200 -p 6379:6379 \
    -v /opt/rds/pmemdb/etc/cfg.xml:/opt/pmemdb/etc/cfg.xml \
    -v /opt/rds/pmemdb/etc/dynamic.xml:/opt/pmemdb/etc/dynamic.xml \
    -v /opt/rds/pmemdb/var:/opt/pmemdb/var \
    tongrds-node:2.2.C.1

通过dockerfile打完镜像后,pmemdb2的可以执行这个指令构建和启动对应容器并挂载相关配置文件:

   # 有需要可以在-d 后加--name 容器名
   docker run -d -p 6201:6201 -p 6380:6380 \
    -v /opt/rds/pmemdb2/etc/cfg.xml:/opt/pmemdb/etc/cfg.xml \
    -v /opt/rds/pmemdb2/etc/dynamic.xml:/opt/pmemdb/etc/dynamic.xml \
    -v /opt/rds/pmemdb2/var:/opt/pmemdb/var \
    tongrds-node2:2.2.C.1

如下图所示,先用docker ps -a 查看一下CONTAINER ID
在这里插入图片描述
使用docker logs CONTAINER ID 看看日志:
在这里插入图片描述

使用以下指令進入容器内部,檢查是否配置文件已生效:

docker exec -it CONTAINER ID  /bin/bash 

# 退出的话则使用这个指令
exit

进入到容器内部的时候,使用./Client.sh -r -p redis连接端口(cfg.xml里配置的,一般是6379),如下图所示:

在这里插入图片描述
输入cluster nodes,查看集群是否生效,另外还可以输入set 111 123456 这样的指令,回车后输入get 111 看是否能获取到信息。
在这里插入图片描述
备注:
如果是集群版或者哨兵版,有时会有这种提示,属于正常现象,这种需要到对应的节点进行操作
在这里插入图片描述

哨兵节点

本次示范用的目录为/opt/rds/pmemdb_shaobing ,跟TongRDS2214手动部署版指引(by lqw+sy) 有点不一样,请注意区别。

停掉哨兵节点的进程。

在这里插入图片描述

dockerfile 参考:

#根据自己想要用的系统来配,例如ubuntu或者centos,但是得用docker先pull
FROM centos
MAINTAINER TongRDS
#根据自己本地的jdk来配(jdk1.8.0_391需要放在跟dockerfile同一级目录)
COPY ./jdk1.8.0_391/ /opt/jdk1.8.0_391
#根据自己本地的jdk来配
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV PATH=${JAVA_HOME}/bin:$PATH
ENV TZ=Asia/Shanghai
COPY ./pmemdb_shaobing/ /opt/pmemdb/
#这里的端口在配置文件里配置,需要保持一致
EXPOSE 26379 26379
WORKDIR /opt/pmemdb/bin
ENTRYPOINT "./StartSentinel.sh"

备注:
哨兵节点本质跟服务节点的不同在于,启动的脚本不同,使用的端口不同:
在这里插入图片描述
目录文件如下所示:
在这里插入图片描述

确认dockerfile和哨兵节点都如上图所示进行方式后,cd到dockerfile所在目录,执行以下指令:

docker build -f Dockerfile-tongnode-sentinel -t tongrds-node-sentinel:2.2.C.1 .

在这里插入图片描述
之后执行以下指令,创建并运行容器:

 # 有需要可以在-d 后加--name 容器名
docker run -d -p 26379:26379 \
    -v /opt/rds/pmemdb_shaobing/etc/cfg.xml:/opt/pmemdb/etc/cfg.xml \
    -v /opt/rds/pmemdb_shaobing/etc/dynamic.xml:/opt/pmemdb/etc/dynamic.xml \
    -v /opt/rds/pmemdb_shaobing/etc/sentinel.xml:/opt/pmemdb/etc/sentinel.xml \
    tongrds-node-sentinel:2.2.C.1

使用docker logs CONTAINER ID 看看日志:
在这里插入图片描述
使用docker exec -it CONTAINER ID /bin/bash 進入到容器内部,輸入./Client.sh -r -p 26379(這個在sentinel.xml里查看) ,再依次输入SENTINEL masters ,SENTINEL slaves WebSession进行查看,跟手动部署版的操作是一样的:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/790084.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开始性能测试之前的准备工作!

性能测试是软件测试中不可或缺的一部分,它可以帮助我们评估软件系统的性能表现,并找出潜在的性能瓶颈。在进行性能测试之前,需要做好充分的准备工作,以确保测试的有效性和准确性。 1. 确定性能测试的目标和范围 * 明确测试目标:性…

网口变压器下方是否要挖空探讨

一. 引言 1. RJ45组成 RJ45模块用于PHY芯片之间的互连,如图1所示,RJ45有两种组合形式,一种是分立式,网络变压器和RJ45连接座是分开的,另一种是网络变压器和RJ45集成在一起。RJ45连接座又分为带屏蔽与不带屏蔽两种。 …

C++基础编程100题-021 OpenJudge-1.4-01 判断数正负

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0104/01/ 描述 给定一个整数N&#xff0c;判断其正负。 输入 一个整数N(-109 < N < 109) 输出 如果N > 0, 输出positive; 如果N 0, 输出zero; 如果N < 0, 输出negative 样例输入 1样例输出…

MySQL空间索引

空间类型是建立在空间类型字段上的。 空间类型 MySQL的空间类型很多&#xff0c;我就不逐一介绍了。重要分四大类&#xff1a; GeometryCurveSurfaceGeometryCollection 前三种&#xff0c;地理、曲线、曲面都是不可实例化的。Geometry有一个子类Point, Curve有一个直接子类L…

新手小白的pytorch学习第一弹-------张量

1 导入pytorch包 import torch2 创建张量&#xff08;tensor&#xff09; scalar标量 scalar torch.tensor(7) scalartensor(7)scalar.ndim查看scalar的维度&#xff0c;因为scalar是标量&#xff0c;所以维度为0 0scalar.shapetorch.Size([])torch.item()7vector&#xf…

coco_eval 使用

参考 coco eval 解析 COCO目标检测比赛中的模型评价指标介绍&#xff01; coco 的评估函数对应的是 pycocotools 中的 cocoeval.py 文件。 从整体上来看&#xff0c;整个 COCOeval 类的框架如图&#xff1a; 基础的用法为 # The usage for CocoEval is as follows: cocoGt…

JUC并发编程-05:线程高级部分-源码解读

线程高级部分-源码解读 多线程高并发底层锁机制与优化最佳实践深入JDK源码理解LongAdder的分段CAS优化机制 公平锁和非公平锁原理解析 多线程高并发底层锁机制与优化最佳实践 深入JDK源码理解LongAdder的分段CAS优化机制 多个线程进入&#xff0c;为了防止空转&#xff0c;所…

一文入门【NestJs】Controllers 控制器

Nest学习系列 ✈️一文带你入门【NestJS】 ✈️前言 流程图 Controllers 控制器主要负责处理传入请求&#xff0c;并向客户端返回响应&#xff0c;控制器可以通过路由机制来控制接收那些请求&#xff0c;通常一个Controllers种会有多个匹配路由&#xff0c;不同的路由可以知…

react 组件通信 —— 父子传值 【 函数式/类式 】

1、函数式组件通信 父子间通信 —— 父传子 父组件 export default function father() {return (<div style{{width:400px,height:200px,background:pink,marginLeft:500px}}>我是父组件<hr /><Son name{"韩小刀"}/></div>) } 子组件 ex…

Spark源码详解

https://www.cnblogs.com/huanghanyu/p/12989067.html#_label3_3

【开源项目】H264码流格式解析

目录 1.概述2.头文件的定义2.1 基础头文件&#xff08;base.h&#xff09;2.2 H264码流读取文件&#xff08;bs.h&#xff09;2.2.1 单比特读取函数&#xff08;bs_read_u1&#xff09;2.2.2 指数哥伦布无符号编码&#xff08;bs_read_ue&#xff09;2.2.3 指数哥伦布有符号编码…

这类工作要被大语言模型取代?

春节前&#xff0c;哈佛的一篇文章带来了思考。 美国哈佛大学网站上有一篇文章探讨了ChatGPT对写作工作的代替可能性。 文章内容是围绕哈佛大学的一位校聘作家和一位有名望的心理学教授之间的对话展开&#xff0c;主要讲了一个基本的观点&#xff1a; 类似ChatGPT这样的人工…

解决Invalid or unsupported by client SCRAM mechanisms(dbeaver)

在用工具&#xff08;dbeaver&#xff09;链接Opengauss数据库的时候&#xff0c;报出标题的错误。原因为驱动不正确。 驱动下载地址&#xff1a;https://opengauss.org/zh/download/ 下载完的包 &#xff0c;解压后&#xff0c;里面应该有两个jar 包,使用postgresql.jar dbe…

HTTP 概况

Web的应用层协议是超文本传输协议(HyperTextTransferProtocol&#xff0c;HTTP)&#xff0c;它是 Web的核心。HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中&#xff0c;通过交换HTTP报文进行会话。HTTP定义了这些报文的结构以及…

C++入门基础篇(下)

目录 6.引用 6.1 引用的特性 6.2 const引用 7.指针和引用的关系 8.内联函数 9.nullptr 6.引用 引⽤不是新定义⼀个变量&#xff0c;⽽是给已存在变量取了⼀个别名&#xff0c;编译器不会为引⽤变量开辟内存空间&#xff0c; 它和它引⽤的变量共⽤同⼀块内存空间。比如&a…

深入了解代理IP常见协议:区别与选择

代理服务器在网络使用中扮演着重要的角色&#xff0c;是您设备和互联网之间的中间层。它不仅可以增强网络访问的安全性和隐私保护&#xff0c;还可以提供许多灵活的应用。使用代理时&#xff0c;不同的协议类型对数据交换具有不同的规则和特征。常见的代理协议包括HTTP代理、HT…

高并发内存池联调问题

断言报错1 在这里插入图片描述 排查原因 实际 actualNum 值并没有大于一 断点报错。 经过排查&#xff0c;此处assert&#xff08;actualNum > 0) 判断条件应该是大于零&#xff0c;否则或许if判断条件无法执行。 跑通结果: 2

Java语言程序设计——篇三(1)

选择结构 概述选择单分支if语句例题讲解 双分支if-else语句例题讲解 条件运算符多分支的if-else语句例题讲解 嵌套的if语句例题讲解 switch语句结构例题讲解代码演示运行结果 概述 Java中的控制结构&#xff0c;包括&#xff1a; 1、选择结构( if、if-else、switch ) 2、循环结…

空间自回归模型及 Stata 具体操作步骤

目录 一、理论原理 二、数据准备 三、程序代码及解释 四、代码运行结果 一、理论原理 空间自回归模型&#xff08;Spatial Autoregressive Model&#xff0c;SAR&#xff09;是一种用于分析具有空间相关性的数据的统计模型。它假设观测值之间的相关性不仅取决于传统的时间或…

深入理解 go map

什么是 map 维基百科里这样定义 map: In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection. 简单…