From 39fa970ef20318583a6a13203aa64c6facc944ad Mon Sep 17 00:00:00 2001 From: GuangJie1 Date: Fri, 27 Jun 2025 14:48:47 +0800 Subject: [PATCH] add pacemaker readme --- .../pacemaker/3.0.0/24.03-lts-sp1/Dockerfile | 6 ++- Others/pacemaker/README.md | 39 ++++++++++++++++ Others/pacemaker/doc/image-info.yml | 44 ++++++++++++++++++ Others/pacemaker/doc/picture/logo.png | Bin 0 -> 11818 bytes 4 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 Others/pacemaker/README.md create mode 100644 Others/pacemaker/doc/image-info.yml create mode 100644 Others/pacemaker/doc/picture/logo.png diff --git a/Others/pacemaker/3.0.0/24.03-lts-sp1/Dockerfile b/Others/pacemaker/3.0.0/24.03-lts-sp1/Dockerfile index 1f2a552b..c9887489 100644 --- a/Others/pacemaker/3.0.0/24.03-lts-sp1/Dockerfile +++ b/Others/pacemaker/3.0.0/24.03-lts-sp1/Dockerfile @@ -13,8 +13,10 @@ RUN dnf update -y \ RUN git clone -b Pacemaker-${VERSION} --depth 1 https://github.com/ClusterLabs/pacemaker.git \ && cd pacemaker \ && ./autogen.sh \ - && ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + && ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --without-systemd --disable-fatal-warnings \ && make -j $(nproc) \ && make install -CMD [" /usr/sbin/pacemakerd", "--help"] \ No newline at end of file +RUN ldconfig + +CMD ["pacemakerd", "--help"] \ No newline at end of file diff --git a/Others/pacemaker/README.md b/Others/pacemaker/README.md new file mode 100644 index 00000000..262a6f85 --- /dev/null +++ b/Others/pacemaker/README.md @@ -0,0 +1,39 @@ +# Quick reference + +- The official Pacemaker docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). + +# Pacemaker | openEuler +Current Pacemaker docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. + +Pacemaker is the resource manager for the ClusterLabs open-source high-availability cluster stack. It coordinates the configuration, start-up, monitoring, and recovery of interrelated services across all cluster nodes. + +Learn more about Pacemaker on [Pacemaker Website](https://www.clusterlabs.org/pacemaker/)⁠. + +# Supported tags and respective Dockerfile links +The tag of each `pacemaker` docker image is consist of the version of `pacemaker` and the version of basic image. The details are as follows + +| Tag | Currently | Architectures | +|----------|-------------|------------------| +|[3.0.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Others/pacemaker/3.0.0/24.03-lts-sp1/Dockerfile)| Pacemaker 3.0.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +# Usage +In this usage, users can select the corresponding `{Tag}` based on their requirements. + +- Pull the `openeuler/pacemaker` image from docker + + ```bash + docker pull openeuler/pacemaker:{Tag} + ``` + +- To get an interactive shell + + ``` + docker run -it --rm openeuler/pacemaker:{Tag} bash + ``` + +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/Others/pacemaker/doc/image-info.yml b/Others/pacemaker/doc/image-info.yml new file mode 100644 index 00000000..2ee87d05 --- /dev/null +++ b/Others/pacemaker/doc/image-info.yml @@ -0,0 +1,44 @@ +name: pacemaker +category: others +description: Pacemaker 是一个高可用性(HA, High Availability)集群资源管理器,用于在 Linux 系统中确保关键服务在节点故障时自动迁移并持续运行。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + pacemaker镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tag | Currently | Architectures | + |----------|-------------|------------------| + |[3.0.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Others/pacemaker/3.0.0/24.03-lts-sp1/Dockerfile)| Pacemaker 3.0.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/pacemaker:{Tag} + ``` + +usage: | + - 启动容器 + ``` + docker run -it --rm openeuler/pacemaker:{Tag} + ``` + 查看pacemaker编译后的二进制运行提示。 + + - 使用shell交互 + ``` + docker run -it --rm openeuler/pacemaker:{Tag} bash + ``` + +license: GPLv2 or later +similar_packages: + - Keepalived: 提供虚拟 IP 漂移功能(VRRP),通常用于负载均衡器或简单主备。适合轻量级高可用。 +dependency: + - pciutils + - libxml2 + - libxslt + - dbus + - corosync + - libqb + - sqlite diff --git a/Others/pacemaker/doc/picture/logo.png b/Others/pacemaker/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..171f88968eea89cf7100ea8c85389f38b3ecbb97 GIT binary patch literal 11818 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 literal 0 HcmV?d00001 -- Gitee