文章目录
- 前言
- 准备工作
- 中心节点
- 服务节点
- 哨兵节点
前言
部署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进行查看,跟手动部署版的操作是一样的: