通过Docker实现openGauss的快速容器化安装

news2024/12/23 22:54:38

容器安装

本章节主要介绍通过 Docker 安装 openGauss,方便 DevOps 用户的安装、配置和环境设置。

支持的架构和操作系统版本

  • x86-64 CentOS 7.6

  • ARM64 openEuler 20.03 LTS

配置准备

使用 buildDockerImage.sh 脚本构建 docker 镜像,buildDockerImage.sh 是一个方便使用的 shell 脚本,提供 SHA256 的检查。buildDockerImage. 脚本可以从 server 仓库(https://gitee.com/opengauss/openGauss-server/tree/master/docker/dockerfiles)或者 container 仓库(https://gitee.com/opengauss/openGauss-container)下载。

单机数据库容器安装

创建 openGauss docker 镜像

 说明:

  • 安装前需要提供 openGauss 二进制安装包,解压后将以 bz2 结尾的包(openGauss-X.X.X-CentOS-64bit.tar.bz2,X.X.X 诶 openGauss 当前版本号)放到 dockerfiles/<version> 文件夹。二进制包可以从 /zh/download/ 下载,确保有正确的 yum 源。

  • 运行 buildDockerImage.sh 脚本时,如果不指定 - i 参数,此时默认提供 SHA256 检查,需要您手动将校验结果写入 sha256_file_amd64 文件。

## 修改sha256校验文件内容
cd /soft/openGauss-server/docker/dockerfiles/X.X.X
sha256sum openGauss-X.X.X-CentOS-64bit.tar.bz2 > sha256_file_amd64 
  • 安装前需要从华为开源镜像站获取 openEuler_aarch64.repo 文件,并放到 openGauss-server-master/docker/dockerfiles/X.X.X 文件夹下面。openEuler_aarch64.repo 获取方法:
wget -O openEuler_aarch64.repo https://mirrors.huaweicloud.com/repository/conf/openeuler_aarch64.repo
  

在 dockerfiles 文件夹运行 buildDockerImage.sh 脚本。

[root@ecs-complie dockerfiles]# ./buildDockerImage.sh
Usage: buildDockerImage.sh -v [version] [-i] [Docker build option]
Builds a Docker Image for openGauss
Parameters:
   -v: version to build
       Choose one of: X.X.X
   -i: ignores the SHA256 checksums

LICENSE UPL 1.0

环境变量

为了更灵活的使用 openGauss 镜像,可以设置额外的参数。未来我们会扩充更多的可控制参数,当前版本支持以下变量的设定。

GS_PASSWORD

使用 openGauss 镜像的时候,必须设置该参数。该参数值不能为空或者不定义。该参数设置了 openGauss 数据库的超级用户 omm 以及测试用户 gaussdb 的密码。openGauss 安装时默认会创建 omm 超级用户,该用户名暂时无法修改。测试用户 gaussdb 是在 entrypoint.sh 中自定义创建的用户。

openGauss 镜像配置了本地信任机制,因此在容器内连接数据库无需密码,但是如果要从容器外部(其它主机或者其它容器)连接则必须要输入密码。

openGauss 的密码有复杂度要求

密码长度 8 个字符以上,必须同时包含大写字母、小写字母、数字、以及特殊符号(特殊符号仅包含 “#?!@$%^&*-”,并且 “!$&” 需要用转义符 “\” 进行转义)。

GS_NODENAME

指定数据库节点名称,默认为 gaussdb。

GS_USERNAME

指定数据库连接用户名,默认为 gaussdb。

GS_PORT

指定数据库端口,默认为 5432。

开启实例

$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 opengauss:X.X.X

从操作系统层面连接数据库

$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 -p8888:5432 opengauss:X.X.X
$ gsql -d postgres -U gaussdb -W'Enmo@123' -h your-host-ip -p8888

数据持久化

$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 -v /opengauss:/var/lib/opengauss opengaussX.X.X

说明

  1. 对于使用其他版本的数据库构建容器镜像,可以参考 openGauss-server/docker/dockerfiles/X.X.X 里面的配置文件,只需要修改为对应的版本号即可。

  2. 对于构建 openEuler-arm 的容器镜像,如果 openeuler-20.03-lts:latest 镜像下载不下来,可以在 openEuler 官方网站 http://121.36.97.194/openEuler-20.03-LTS/docker_img/aarch64/ 下载容器镜像压缩包 openEuler-docker.aarch64.tar.xz, 然后使用 docker load -i openEuler-docker.aarch64.tar.xz 导入到本地镜像列表。

  3. 在进行构建时候,如果遇到 yum 源下载超时,请检查下代理,也可以在 buildDockerImage.sh 脚本里面的 docker build 命令后加上 --network host 使用宿主机的网络。

CM 容器化部署

创建 openGauss docker 镜像

下载 openGauss-docker 仓库代码,构建脚本在该仓库中管理。

  • 构建镜像需要 openGauss 社区发布的企业版本包,openGauss-*-64bit-all.tar.gz。放到 openGauss-docker/dockerfiles 目录下。
  • 运行 buildDockerImage.sh 脚本时,如果不指定 - i 参数,此时默认提供 SHA256 检查,需要您手动将校验结果写入 sha256_file_amd64 文件。
## 修改sha256校验文件内容
cd `openGauss-docker/dockerfiles`
sha256sum openGauss-X.X.X-CentOS-64bit-all.tar.gz > sha256_file_amd64 
  • 对于 x86 平台,使用社区发布的 Centos_x86_64 的包;对于 arm 平台,使用发布的 openEuler-arm 版本企业包。

构建命令:

sh buildDockerImage.sh -v X.X.X -i

使用社区发布的镜像

最新的容器镜像:

x86_64 平台:

docker pull swr.cn-south-1.myhuaweicloud.com/opengauss/x86_64/opengauss:X.X.X
docker tag swr.cn-south-1.myhuaweicloud.com/opengauss/x86_64/opengauss:X.X.X opengauss:X.X.X

arm 平台:

docker pull swr.cn-south-1.myhuaweicloud.com/opengauss/arm/opengauss:X.X.X
docker tag swr.cn-south-1.myhuaweicloud.com/opengauss/arm/opengauss:X.X.X opengauss:X.X.X

启动容器

搭建 CM 集群至少需要两个容器实例才能使用。

  1. 创建容器网络

如果多个容器部署在一台机器上,创建一个普通的容器网络即可:

docker network create --subnet=172.11.0.0/24 og-network

如果容器跨多个节点部署,即要求节点间的容器能够进行通信。业界有多种实现方式,这里提供一种作为参考,用户可以自行选择。

选择一台部署 progrium/consul 容器:

docker pull progrium/consul
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

每个节点的 docker 都进行修改: vim /usr/lib/systemd/system/docker.service 在 ExecStart 一栏后面追加:

-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --cluster-store=consul://192.168.0.94:8500 --cluster-advertise=eth0:2376

192.168.0.94 是部署 consul 的机器 ip。

修改完成后需要重启 docker:

systemctl daemon-reload
systemctl restart docker

创建 overlay 网络

docker network create -d overlay --subnet 10.22.1.0/24  --gateway 10.22.1.1 og-network
  1. 启动多个容器实例
# ip需要和容器网络在同一网段,几个实例的ip和节点名称不能重复。如下示例1主2备:

primary_nodeip="172.11.0.2"
standby1_nodeip="172.11.0.3"
standby2_nodeip="172.11.0.4"
primary_nodename=primary
standby1_nodename=standby1
standby2_nodename=standby2

OG_NETWORK=og-network
GS_PASSWORD=test@123

# 启动实例1 
docker run -d -it -P --ulimit nofile=1000000:1000000 --sysctl kernel.sem="250 6400000 1000 25600" --security-opt seccomp=unconfined -v /data/opengauss_volume:/volume --name opengauss-01 --net ${OG_NETWORK} --ip "$primary_nodeip" -h=$primary_nodename -e primaryhost="$primary_nodeip" -e primaryname="$primary_nodename" -e standbyhosts="$standby1_nodeip, $standby2_nodeip" -e standbynames="$standby1_nodename, $standby2_nodename" -e GS_PASSWORD=$GS_PASSWORD opengauss:X.X.X 

# 启动实例2
docker run -d -it -P --ulimit nofile=1000000:1000000 --sysctl kernel.sem="250 6400000 1000 25600" --security-opt seccomp=unconfined -v /data/opengauss_volume:/volume --name opengauss-02 --net ${OG_NETWORK} --ip "$standby1_nodeip" -h=$standby1_nodename -e primaryhost="$primary_nodeip" -e primaryname="$primary_nodename" -e standbyhosts="$standby1_nodeip, $standby2_nodeip" -e standbynames="$standby1_nodename, $standby2_nodename" -e GS_PASSWORD=$GS_PASSWORD opengauss:X.X.X

# 启动实例3
docker run -d -it -P --ulimit nofile=1000000:1000000 --sysctl kernel.sem="250 6400000 1000 25600" --security-opt seccomp=unconfined -v /data/opengauss_volume:/volume --name opengauss-03 --net ${OG_NETWORK} --ip "$standby2_nodeip" -h=$standby2_nodename -e primaryhost="$primary_nodeip" -e primaryname="$primary_nodename" -e standbyhosts="$standby1_nodeip, $standby2_nodeip" -e standbynames="$standby1_nodename, $standby2_nodename" -e GS_PASSWORD=$GS_PASSWORD opengauss:X.X.X
  1. 使用脚本快速启动 1 主 2 备的 cm 集群容器实例

在 openGauss-docker 目录下,执行 sh create_cm_contariners.sh

This script will create three containers with cm on a single node. \n
Please input OG_SUBNET (容器所在网段) [172.11.0.0/24]: 
OG_SUBNET set 172.11.0.0/24
Please input OG_NETWORK (容器网络名称) [og-network]: 
OG_NETWORK set og-network
Please input GS_PASSWORD (定义数据库密码)[test@123]: 
GS_PASSWORD set
Please input openGauss VERSION [X.X.X]: 
openGauss VERSION set X.X.X
starting  create docker containers...

会让填入容器网段、容器网络名称、数据库密码、容器版本号。使用默认值得话可以直接回车跳过。 脚本执行完成后,会拉起 3 个容器实例,组成 1 主 2 备的 cm 集群。

进入容器中查看实例状态

  1. 进入容器
docker exec -ti <containerid> /bin/bash
su - omm
  1. 查看集群状态
cm_ctl query -Cvid
  1. 连接接数据库
gsql -d postgres -r

说明

    1. 构建的容器需要包含操作系统层
    1. 容器内仅提供 CM 和数据库内核工具,OM 工具无法使用

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

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

相关文章

【EI稳定,马来亚大学主办】2024年计算机与信息安全国际会议(WCCIS 2024,9月27-29)

2024年计算机与信息安全国际会议 (WCCIS 2024) 将于2024年9月27-29日召开。 会议旨在为从事计算机与信息安全的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;了解学术发展趋势&#xff0c;拓宽研究思路&#xff0c;加强学术研究和探讨&…

动态规划(算法)---02.斐波那契数列模型_三步问题

题目链接&#xff1a; 面试题 08.01. 三步问题 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/three-steps-problem-lcci/description/ 一、题目解析 题目&#xff1a; 题目讲解&#xff1a; 我们先举例查看规律&#xff1a; 第一台阶&#xff1a;我…

鸿蒙OS 概述

鸿蒙OS 系统定义 HarmonyOS 是一款“面向未来”、面向全场景&#xff08;移动办公、运动健康、社交通信、媒体娱乐等&#xff09;的分布式操作系统。在传统的单设备系统能力的基础上&#xff0c;HarmonyOS 提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c…

《食品界》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《食品界》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《食品界》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a; 中国商业联合会 主办单位&#x…

【Hot100】LeetCode—62. 不同路径

目录 1- 思路题目识别动规五部曲 2- 实现⭐62. 不同路径——题解思路 3- ACM 实现 原题链接&#xff1a;62. 不同路径 1- 思路 题目识别 识别1 &#xff1a;给一个二维矩阵&#xff0c;每次只能向下或者向右移动一步识别2&#xff1a;求解到达最右下角的路径数。 动规五部曲…

Ubuntu WSL使用技巧

0 Preface/Foreword 1 默认为root用户 当下载完成Ubuntu之后&#xff0c;首次登录&#xff0c;当完成初始化后&#xff0c;提示输入新的用户名时候&#xff0c;直接点击右上角的X按钮&#xff0c;再重新登陆&#xff0c;系统会默认使用root权限登录。 2 root用户和普通用户切换…

力科示波器桌面分析远程控制软件

软件在这里下载&#xff1a;Teledyne LeCroy - MAUI Studio - Remote and Offline PC Analysis Software for an Oscilloscope 我去年因为要分析示波器波形&#xff0c;下载过它的MAUI Studio。它的免费版需要逐年注册。注册是免费的。示波器从业人员和工程技术人员可以看看示…

基于微信小程序的鲜花销售系统设计与实现毕业设计-附源码

鲜花销售系统|鲜花销售系统源码|鲜花销售小程序|基于微信小程序的鲜花销售系统设计与实现 鲜花销售系统源码&#xff1a;鲜花销售微信小程序具有鲜花销售信息管理功能的选择&#xff0c;鲜花销售微信小程序采用java技术&#xff0c;基于mysql开发&#xff0c;实现了首页、个人…

企业常用的源代码加密软件有哪些?10款源代码加密软件推荐

在现代企业中&#xff0c;源代码保护变得尤为重要&#xff0c;因为源代码不仅是软件的核心资产&#xff0c;还可能包含商业秘密和知识产权。因此&#xff0c;许多企业都在寻找合适的源代码加密软件来保护其代码的安全性。本文将为您介绍10款常用的源代码加密软件&#xff0c;帮…

4款工具搞定固态硬盘数据恢复!一起来看看!

数据丢失&#xff0c;这可能是每个电脑用户都曾遇到过的噩梦。今天&#xff0c;我就来聊聊我亲身体验过的四款数据恢复软件&#xff0c;看看它们在帮我从硬盘的“深渊”中捞回宝贵数据时的表现如何呢&#xff1f;一起来看看吧&#xff01; 一、福昕数据恢复 网址&#xff1a;h…

油电叉车倒车防撞报警系统精准探测

油电叉车倒车防撞报警系统通过集成最新的传感器技术、图像识别算法以及智能控制技术‌&#xff0c;通过实时监测叉车周围环境中的障碍物、行人和其他叉车&#xff0c;及时发出警报&#xff0c;避免可能的碰撞事故。 油电叉车倒车防撞报警系统功能详解 精准探测 叉车倒车时&a…

怎么仿同款小程序的开发制作方法介绍

很多老板想要仿小程序系统&#xff0c;就是想要做个和别人界面功能类似的同款小程序系统&#xff0c;咨询瀚林问该怎么开发制作&#xff1f;本次瀚林就为大家介绍一下仿制同款小程序系统的方法。 1、确认功能需求 想要模仿同款小程序系统&#xff0c;那么首先需要找到自己想要…

C#使用handle实现获取占用指定文件或文件夹的进程(Locksmith功能)

前言&#xff1a;很多时候&#xff0c;一些不知道啥进程&#xff0c;把你的文件给占用了&#xff0c;然后就没办法删掉或者做其他操作。如果使用Locksmith功能&#xff0c;就可以实现快速锁定是哪个进程在搞事情&#xff0c;把对应进程干掉就可以了。下面内容演示C#使用几行代码…

Redis集群slot迁移改造实践

作者&#xff1a;来自 vivo 互联网存储团队- Xu Xingbao Redis 集群经常需要进行在线水平扩缩容&#xff0c;实际操作过程中发现迁移期间服务时延剧烈抖动&#xff0c;业务侧感知明显&#xff0c;为了应对以上问题对原生 Redis 集群 slot 迁移功能进行优化改造。 一、背景介绍…

乔迁新址,盛启新章!聚铭网络河北办事处盛大开业

2024年9月10日&#xff0c;金秋九月&#xff0c;阳光灿烂。在这样一个美好的日子里&#xff0c;聚铭网络河北办事处正式迎来了乔迁之喜并盛大开业。随着公司业务规模的快速扩张&#xff0c;原有的办公空间已经不足以支撑未来的增长&#xff0c;新址的启用不仅代表了我们迈出的一…

5V*0.5A低压降二极管芯片 CH213

概述 CH213是带限流功能的低压降理想二极管芯片。芯片内部集成了过流保护、短路保护、过温保护、电源极性保护等模块&#xff0c;额定5V*0.5A&#xff0c;支持5V电压下不超过1A电流的直流应用&#xff0c;在 VO输出端发生过流时可以限制电流从而保护供电系统&#xff0c;在输入…

Vue路由一(简介、分类、基本使用、注意事项)

目录 1. 简介2. 路由的分类3. 基本使用4. 注意事项 1. 简介 路由就是一组key:value的对应关系。vue可能是function或component多个路由&#xff0c;需要经过路由器管理 是为了实现SPA(single page web application)单页面应用。以前需要实现多个html&#xff0c;现在只需实现一…

零基础也能掌握!大模型训练指南

在这个信息爆炸的时代&#xff0c;人工智能技术正以前所未有的速度渗透到我们生活的方方面面。从智能手机上的语音助手到自动驾驶汽车&#xff0c;AI的应用无处不在。而在这些令人惊叹的技术背后&#xff0c;大语言模型&#xff08;LLM&#xff09;扮演着至关重要的角色。它们不…

Navicat On-Prem Server 2.0 | MySQL与MariaDB基础管理功能正式上云

近日&#xff0c;Navicat 发布了 Navicat On-Prem Server 2.0 的重大版本更新。这标志着这款自2021年首发的私有云团队协作解决方案迈入了一个崭新的阶段。此次2.0版本的飞跃性升级&#xff0c;核心聚焦于MySQL与MariaDB基础管理功能的全面革新与强化&#xff0c;赋予了用户的操…

当 PLC 遇见 “IT”

IT&OT 深度融合工控人加入PLC工业自动化精英社群 IT & OT integration 当今不断发展的工业自动化世界&#xff0c;在智能、高效和快速的系统和软件应用中&#xff0c;数据扮演着越来越重要的角色。传统的 IT 网络中&#xff0c;提供了丰富多彩的规范和协议&#xff0…