博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker 构建magent的memcached 集群
阅读量:5943 次
发布时间:2019-06-19

本文共 2341 字,大约阅读时间需要 7 分钟。

基于swarm 构建magent的memcached 集群:

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

1、构建magent镜像:

安装Magent

wget
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

转载于:https://blog.51cto.com/devops9527/2056760

你可能感兴趣的文章
python----tcp/ip http
查看>>
我的友情链接
查看>>
第一本docker书学习笔记1-3章
查看>>
一個典型僵尸網絡淺析
查看>>
vmware克隆Centos6.4虚拟机网卡无法启动问题
查看>>
dba学习
查看>>
asterisk配置
查看>>
GA操作步骤和技巧(二)——用户行为分析
查看>>
shell中while循环里使用ssh的注意事项
查看>>
SHELL获取计算机外网ip的几种写法
查看>>
博客正在搬迁中
查看>>
触发器与存储过程的区别
查看>>
我的友情链接
查看>>
centos搭建supervisor
查看>>
linux日志分割
查看>>
Samba再报安全漏洞
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Spring学习资料之 依赖注入(一)
查看>>
安装win7提示安装程序无法创建新的系统分区和定位现有系统分区
查看>>