资讯专栏INFORMATION COLUMN

kubernetes上部署Memcached高可用记录

bawn / 1690人阅读

摘要:部署实现高可用常用的两个工具连接多个,请求转发单单,互为主辅结构结构主要部署步骤使用启动个每个容器初始化脚本得到另一个节点的因为就两个节点,不是就是判断另一个节点的监听状态如果在监听说明是主节点需要复制它,否则反之复制节点

部署Memcached
memcached实现高可用常用的两个工具:
1)magent:连接多个memcached,请求转发
2)repcached:单master单slave,互为主辅
magent+memcached结构

repcache+memcached结构

主要部署步骤(repcache+memcached) 使用statefulset启动2个memcached
md-5c107eeae9fb1-0                  1/1       Running     0          59s
md-5c107eeae9fb1-1                  1/1       Running     0          49s
每个容器初始化脚本
#得到另一个节点的HOSTNAME(因为就两个节点,不是0就是1)
PARTNER=${HOSTNAME##*-}
if [ "${PARTNER}" = "0" ]; then
        PARTNER=${MY_POD_NAME}-1
fi
if [ "${PARTNER}" = "1" ]; then
        PARTNER=${MY_POD_NAME}-0
fi

#判断另一个节点的监听状态(如果在监听说明是主节点需要复制它,否则反之)

测试
主备切换
//启动主节点后状态为Listen,设置同步端口为22222
root@md-5c107eeae9fb1-0:/# memcached -p 11211 -X 22222 -v -d -u root -m 512
root@md-5c107eeae9fb1-0:/# replication: listen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      260/memcached
tcp        0      0 0.0.0.0:22222           0.0.0.0:*               LISTEN      260/memcached
tcp6       0      0 :::11211                :::*                    LISTEN      260/memcached

//启动复制节点,同样设置同步端口为22222
root@md-5c107eeae9fb1-1:/# memcached -p 11211 -X 22222 -x md-5c107eeae9fb1-0.md-5c107eeae9fb1.itfarm3.svc.cluster.local -v -d -u root -m 512
root@md-5c107eeae9fb1-1:/# replication: connect (peer=10.244.5.50:22222)
replication: marugoto copying
replication: start

//从节点加入后,主节点状态为accept并取消对22222的监听
root@md-5c107eeae9fb1-0:/# replication: listen
replication: accept
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      263/memcached
tcp6       0      0 :::11211                :::*                    LISTEN      263/memcached

//kill掉主节点
root@md-5c107eeae9fb1-0:/# kill 263
replication: cleanup start
replication: close
root@md-5c107eeae9fb1-0:/# replication: cleanup complete

//此时从节点成Listen状态,监听复制端口22222,等待加入
root@md-5c107eeae9fb1-1:/# replication: connect (peer=10.244.5.50:22222)
replication: marugoto copying
replication: start
replication: close
replication: listen
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      258/memcached
tcp        0      0 0.0.0.0:22222           0.0.0.0:*               LISTEN      258/memcached
tcp6       0      0 :::11211                :::*                    LISTEN      258/memcached
高可用
//启动2个节点(一主一备)
md-5c107eeae9fb1-0                  1/1       Running     0          59s
md-5c107eeae9fb1-1                  1/1       Running     0          49s

//在主节点中添加item
$ telnet md-5c107eeae9fb1-0.md-5c107eeae9fb1.itfarm3.svc.cluster.local 11211
Trying 10.244.4.162...
Connected to md-5c107eeae9fb1-0.md-5c107eeae9fb1.itfarm3.svc.cluster.local.
Escape character is "^]".
set name 0 0 8
zhangsan
STORED
quit
Connection closed by foreign host.

//从节点查看item
$ telnet md-5c107eeae9fb1-1.md-5c107eeae9fb1.itfarm3.svc.cluster.local 11211
Trying 10.244.3.176...
Connected to md-5c107eeae9fb1-1.md-5c107eeae9fb1.itfarm3.svc.cluster.local.
Escape character is "^]".
get name
VALUE name 0 8
zhangsan
END

//模拟故障
$ kubectl.exe delete po md-5c107eeae9fb1-0
pod "md-5c107eeae9fb1-0" deleted

//重启后数据恢复
$ telnet md-5c107eeae9fb1-0.md-5c107eeae9fb1.itfarm3.svc.cluster.local 11211
Trying 10.244.4.162...
Connected to md-5c107eeae9fb1-0.md-5c107eeae9fb1.itfarm3.svc.cluster.local.
Escape character is "^]".
get name
VALUE name 0 8
zhangsan
END
部署sasl安全认证的memcached

测试
//使用statefulset启动N个memcached
md-5c11b67a6ae9b-0                  1/1       Running            0          1h
md-5c11b67a6ae9b-1                  1/1       Running            0          1h
md-5c11b67a6ae9b-2                  1/1       Running            0          1h
使用python连接memcached
$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import bmemcached
>>> client = bmemcached.Client(("md-5c11b67a6ae9b-ha:11211"), "md-5c11b67a6ae9b", "ZcUu1AVGbB3PnDzhxfOjRLJhatugwZBe")
>>> client.set("name", "zhangsan")
True
>>> client.get("name")
"zhangsan"
>>>
分布式存储 使用无头服务来区分多个memcache
#!/usr/bin/env python3
import bmemcached
client = bmemcached.Client(("md-5c11b67a6ae9b-0.md-5c11b67a6ae9b.itfarm3.svc.cluster.local:11211",
    "md-5c11b67a6ae9b-1.md-5c11b67a6ae9b.itfarm3.svc.cluster.local:11211",
    "md-5c11b67a6ae9b-1.md-5c11b67a6ae9b.itfarm3.svc.cluster.local:11211"), "md-5c11b67a6ae9b", "ZcUu1AVGbB3PnDzhxfOjRLJhatugwZBe")
print(client.set("name", "zhangsan"))
print(client.get("name"))
运行
$ python3 test.py
True
zhangsan

各客户端连接开启了sasl安全认证的memcached方案

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32811.html

相关文章

  • 为什么 kubernetes 天然适合微服务 (2)

    摘要:有了分布式数据库可以使数据库的性能可以随着节点增加线性地增加。分布式数据库最最下面是,是主备的,通过的内核开发能力,我们能够实现主备切换数据零丢失,所以数据落在这个里面,是非常放心的,哪怕是挂了一个节点,切换完了以后,你的数据也是不会丢的。 此文已由作者刘超授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验 三、微服务化的十个设计要点 微服务有哪些要点呢?第一张图是...

    lentrue 评论0 收藏0
  • 跨集群服务——如何利用Kubernetes 1.3实现跨区可用

    摘要:跨集群服务能够分布在不同的地理位置,使得混合和多云成为可能,相对于单一集群多可用区部署,更好地保证高可用。注例子中,我们利用谷歌容器引擎提供的集群,在该平台上,你可以把部署到想要的地区。 编者按:这篇文章是关于Kubernetes 1.3新功能的一系列深入文章的一部分。本文是第七篇。 用户使用Kubernetes 对生产环境上的部署进行弹性伸缩,同时我们听到一个明确的声音:希望跨区域、...

    wind3110991 评论0 收藏0
  • TOP100summit分享实录 | JFrog欣:Kubernetes is hard!JFro

    摘要:本文内容节选自由主办的第七届,架构师高欣分享的的实践实录。当然,在部署完成后,我们要做一个监测以便掌握它的运行状况。规划配置运行环境在正式部署前,还要考虑如何规划并配置好运行环境。在使用部署时,可以利用这些命令做验证,检验部署是否正常。 showImg(https://segmentfault.com/img/bVblRHj?w=2880&h=1920); 本文内容节选自由msup主办...

    邹强 评论0 收藏0
  • 大型网站技术架构-入门梳理

    摘要:使用缓存两个前提条件数据访问热点不均衡数据某时段内有效,不会很快过期反向代理本地缓存分布式缓存异步旨在系统解耦。 大型网站技术架构-入门梳理 标签 : 架构设计 [TOC] 罗列了大型网站架构涉及到的概念,附上了简单说明 前言 本文是对《大型网站架构设计》(李智慧 著)一书的梳理,类似文字版的思维导图 全文主要围绕性能,可用性,伸缩性,扩展性,安全这五个要素 性能,可用性,伸缩性...

    wawor4827 评论0 收藏0

发表评论

0条评论

bawn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<