openGauss 容器安装

本文详细介绍了如何通过Docker在x86-64和ARM64架构的系统上安装openGauss数据库,包括准备配置、构建Docker镜像、设置环境变量以及数据持久化的方法。此外,还提到了CM容器化部署的步骤,包括创建镜像、启动容器和建立CM集群。
摘要由CSDN通过智能技术生成

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

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

  • x86-64 CentOS 7.6

  • ARM64 openEuler 20.03 LTS

配置准备

使用 buildDockerImage.sh脚本构建docker镜像,buildDockerImage.sh是一个方便使用的shell脚本,提供SHA256的检查。

单机数据库容器安装

创建openGauss docker镜像

1355e4712a6b5f1b6f97cf9bf21ed322.gif 说明:

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

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

## 修改sha256校验文件内容
cd /soft/openGauss-server/docker/dockerfiles/3.0.0
sha256sum openGauss-3.0.0-CentOS-64bit.tar.bz2 > sha256_file_amd64&nbsp;

安装前需要从华为开源镜像站获取openEuler_aarch64.repo文件,并放到openGauss-server-master/docker/dockerfiles/3.0.0文件夹下面。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: 3.0.0
-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:2.0.0

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

$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 -p8888:5432 opengauss:2.0.0 $ 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 opengauss:2.0.0


说明

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

  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-5.0.0-CentOS-64bit-all.tar.gz > sha256_file_amd64&nbsp;

  • 对于x86平台,使用社区发布的Centos_x86_64的包;对于arm平台,使用发布的openEuler-arm版本企业包。

构建命令:

sh buildDockerImage.sh -v 5.0.0 -i

使用社区发布的镜像

最新的容器镜像:

x86_64平台:

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

arm平台:

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

启动容器

搭建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&nbsp;是部署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 --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:5.0.0

# 启动实例2
docker run -d -it -P --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:5.0.0

# 启动实例3
docker run -d -it -P --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:5.0.0

3、使用脚本快速启动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 [5.0.0]:
openGauss VERSION set 5.0.0
starting create docker containers...

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

进入容器中查看实例状态

1、进入容器

docker exec -ti <containerid> /bin/bash su - omm

2、查看集群状态

cm_ctl query -Cvid

3、连接接数据库

gsql -d postgres -r

说明

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值