TongRDS 2214 docker版指引(by lqw )

news2024/11/14 19:36:25

文章目录

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

前言

部署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进行查看,跟手动部署版的操作是一样的:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新书速览|HTML5+CSS3 Web前端开发与实例教程:微课视频版

《HTML5CSS3 Web前端开发与实例教程:微课视频版》 本书内容 《HTML5CSS3 Web前端开发与实例教程:微课视频版》秉承“思政引领,立德树人”的教育理念,自然融入多维度、深层次的思政元素,全面对标企业和行业需求&#x…

【Windows】实现窗口子类化(基于远程线程注入)

目录 前言 原理解释 完整项目 相关文献 文章出处链接:[https://blog.csdn.net/qq_59075481/article/details/140334106] 前言 众所周知,DLL 注入有多种用途,如热修补、日志记录、子类化等。本文重点介绍使用 DLL 注入对窗口进行子类化。…

技术文件国产化准备

技术文档的本地化涉及调整内容以满足特定目标市场的文化、语言和技术要求。这一过程超越了简单的翻译,确保文件在文化上适合预期受众,在技术上准确无误。适当的准备对于成功的本地化至关重要,以下步骤概述了一种全面的方法。 分析目标受众 …

022-GeoGebra中级篇-几何对象之直线与坐标轴

本文主要介绍一下GeoGebra中直线的常见输入方式,比如工具栏输入、表达式输入、函数输入,最后再把坐标轴的调用简单介绍一下。内容比起传统的教学更偏向于实战一些,若感兴趣欢迎继续阅读。 目录 一、直线1. 关于工具栏绘制(1&#…

Dify中的工具

Dify中的工具分为内置工具(硬编码)和第三方工具(OpenAPI Swagger/ChatGPT Plugin)。工具可被Workflow(工作流)和Agent使用,当然Workflow也可被发布为工具,这样Workflow(工…

macOS系统下载navicat安装包

链接: https://pan.baidu.com/s/1SqTIXNL-B8ZMJxIBu1DfIw?pwdc1z8 提取码: c1z8 安装后效果

【Android组件】封装加载弹框

📖封装加载弹框 ✅1. 构造LoadingDialog✅2. 调用LoadingDialog 效果: ✅1. 构造LoadingDialog 构造LoadingDialog类涉及到设计模式中的建造者模式,进行链式调用,注重的是构建的过程,设置需要的属性。 步骤一&#x…

流模型flow

流模型 Flow 超详解,基于 Flow 的生成式模型,从思路到基础到公式推导到模型理解与应用(Flow-based Generative Model)_generative flows-CSDN博客

做一个专业的声音分析系统,需要对声音那些评判标准进行计算

为了构建一个专业的声音分析系统,需要对以下评判标准进行计算。每个标准需要相应的算法和技术指标来实现。下面是一些关键的评判标准和如何计算这些标准的具体方法: 1. 音质 清晰度 信噪比(SNR):计算音频信号中的信…

Linux udp编程

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

Milvus 核心概念(1) ---- 数据一致性的等级及使用场景

目录 背景 Milvus的数据一致性 设置数据一致性等级 等级类型 PACELC定理 level 详细解释 Strong Bounded staleness Session Eventually 总结 背景 分布式上的可扩展性是个比较重要的concept。Chroma 核心之前写过了,他的最大优势在于轻量级且好用。Milvus相对Ch…

C++ //练习 14.44 编写一个简单的桌面计算器使其能处理二元运算。

C Primer(第5版) 练习 14.44 练习 14.44 编写一个简单的桌面计算器使其能处理二元运算。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /**********************************************************…

轻松理解c++17的string_view

文章目录 轻松理解c17的string_view设计初衷常见用法构造 std::string_view常用操作作为函数参数 注意事项总结 轻松理解c17的string_view std::string_view 是 C17 引入的一个轻量级、不拥有(non-owning)的字符串视图类。它的设计初衷是提供一种高效、…

今天小编强烈推荐几款国产APP!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 今天小编强烈推荐几款国产APP,算得上是国产之光。如果能帮助到大家,别忘了给小编点点赞加关注哟!更多精彩还在后面。 一、…

第二证券:转股溢价率是什么意思?高好还是低好?

转股溢价率是指可转债在商场上的交易价格相对于其转股价值的溢价份额,能够用来衡量投资者为取得将债券转换为股票权力而付出的额定金额,是可转债的重要指标。 转股溢价率的核算公式为:溢价率=(转债价格-转股价值&…

C++ 重载运算符 addition (+), subtraction (-) and multiplication (*)

C 重载运算符 addition , subtraction - and multiplication * 1. Operator Overloading (运算符重载)2. Developing an Operator Overloading Example2.1. Adding an Addition Operator (添加加法运算符)2.2. Overloading Restrictions (重载限制)2.3. 重载运算符 - 和 * Refe…

数字统计

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别// 注意 while 处理多个 caseint a in.nextInt();i…

拯救中国足球,要不尝试一下DDD事件风暴?

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 张逸老师写了新文章《领域建模的常见问题及解决方案》,我来谈一谈对这篇文章的感想。 (1)文章一开始,张逸老师大大地赞扬了事件风暴&am…

Linux系统中磁盘管理LVM与挂载

Linux系统中磁盘管理LVM与挂载 本文以属于Linux系统基本概念,如果以查找教程教程,解决问题为主,只需要查看本文后半部分。如需要系统性学习请查看本文前半部分。 本文操作极容易导致主机无法自动重启,请慎重操作。操作前务必要进…

JlmPack在军民两用工业软件生态平台的使用

随着信息技术的飞速发展,军民两用工业软件生态平台在国防建设和民用产业中的应用日益广泛。JlmPack作为一款拥有完全自主加权概率模型下的编码算法发明专利的纯国产压缩工具库,其高效、安全、可控的特性在军民两用工业软件生态平台中拥有巨大的应用潜力。…