docker 构建magent的memcached 集群

简介: 基于swarm 构建magent的memcached 集群:Magent 是一款开源的 Memcached 代理服务器软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据,尽管 Memcached 服务挂掉,前端也能获取到数据,客户端先连到 Magent 代理服务器 ,然后Magent 代理服务器 在可以连接多台 Memcached 服务器,然后可以进行数据的保存和备份数据。

基于swarm 构建magent的memcached 集群:

Magent 是一款开源的 Memcached 代理服务器软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据,尽管 Memcached 服务挂掉,前端也能获取到数据,客户端先连到 Magent 代理服务器 ,然后Magent 代理服务器 在可以连接多台 Memcached 服务器,然后可以进行数据的保存和备份数据。这样数据就不会丢失,保存了数据完整性。

1、构建magent镜像:

安装Magent
wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
tar -zxvf magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile

在ketama.h或magent.c开头添加
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
把调整好后的文件夹直接add到镜像中。如下为Dockerfile 内容:

Dockerfile:
########################################
FROM centos:7
ADD magent /tmp/magent
RUN yum install -y gcc make libevent-devel.x86_64 && yum clean all && cd /tmp/magent/ && /sbin/ldconfig && make && cp magent /usr/bin/

CMD magent -u root -l 0.0.0.0 -p 12000 -s 1.1.1.1:11211 -b 1.1.1.2:11211
#这里的-s仅供参考。
########################################

构建镜像:
docker build . -t 10.211.121.26/memcache/magent:v1
提交到私有仓库:
docker push 10.211.121.26/memcache/magent:v1

memcached使用公版镜像。

使用stack部署:

magent.yml 文件:
#####
version: '3.2'
services:
magent:
image: '10.211.121.26/memcache/magent:v1'
ports:

  • '12001:12000'
    #command: magent -u root -D -v -l 0.0.0.0 -p 12000 -s memcached1:11211 -b memcached2:11211
    #使用service name做为入口一直无法正常连接,没找到原因,在magent容器内部能正常访问memcached1:11211。
    command: 'magent -u root -D -v -l 0.0.0.0 -p 12000 -s 10.211.121.75:12002 -b 10.211.121.75:12003'

    memcached1:
    image: memcached
    ports:

  • '12002:11211'

    memcached2:
    image: memcached
    ports:

  • '12003:11211'

#####

部署:
docker stack deploy -c magent.yml magent

Creating network magent_magent
Creating service magent_magent
Creating service magent_memcached1
Creating service magent_memcached2

测试验证:

telnet 10.211.121.75 12001

Trying 10.211.121.75...
Connected to 10.211.121.75.
Escape character is '^]'.
set key 0 0 3
qqq
STORED
get key
VALUE key 0 3
qqq
END
quit
Connection closed by foreign host.

telnet 10.211.121.75 12002

Trying 10.211.121.75...
Connected to 10.211.121.75.
Escape character is '^]'.
get key
VALUE key 0 3
qqq
END
quit
Connection closed by foreign host.

telnet 10.211.121.75 12003

Trying 10.211.121.75...
Connected to 10.211.121.75.
Escape character is '^]'.
get key
VALUE key 0 3
qqq
END
quit
Connection closed by foreign host.

测试情况基本满足需求,遗留问题是stack中:
#command: .... -s memcached1:11211 -b memcached2:11211 service name无法作为入口使用。

欢迎交流沟通:
QQ: 249016681

目录
相关文章
|
2月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
300 1
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
2月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
317 100
|
2月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
258 99
|
2月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
2月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
276 5
|
7月前
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
1483 32
|
2月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
156 8
|
6月前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
514 79
|
7月前
|
监控 Java Go
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
本文将介绍一种基于 Docker 多阶段构建的无侵入 Golang 应用观测方法,通过此方法用户无需对 Golang 应用源代码或者编译指令做任何改造,即可零成本为 Golang 应用注入可观测能力。
384 85