摘要:部署实现高可用常用的两个工具连接多个,请求转发单单,互为主辅结构结构主要部署步骤使用启动个每个容器初始化脚本得到另一个节点的因为就两个节点,不是就是判断另一个节点的监听状态如果在监听说明是主节点需要复制它,否则反之复制节点
部署Memcached
memcached实现高可用常用的两个工具:magent+memcached结构 repcache+memcached结构 主要部署步骤(repcache+memcached) 使用statefulset启动2个memcached
1)magent:连接多个memcached,请求转发
2)repcached:单master单slave,互为主辅
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 1.3新功能的一系列深入文章的一部分。本文是第七篇。 用户使用Kubernetes 对生产环境上的部署进行弹性伸缩,同时我们听到一个明确的声音:希望跨区域、...
摘要:本文内容节选自由主办的第七届,架构师高欣分享的的实践实录。当然,在部署完成后,我们要做一个监测以便掌握它的运行状况。规划配置运行环境在正式部署前,还要考虑如何规划并配置好运行环境。在使用部署时,可以利用这些命令做验证,检验部署是否正常。 showImg(https://segmentfault.com/img/bVblRHj?w=2880&h=1920); 本文内容节选自由msup主办...
摘要:使用缓存两个前提条件数据访问热点不均衡数据某时段内有效,不会很快过期反向代理本地缓存分布式缓存异步旨在系统解耦。 大型网站技术架构-入门梳理 标签 : 架构设计 [TOC] 罗列了大型网站架构涉及到的概念,附上了简单说明 前言 本文是对《大型网站架构设计》(李智慧 著)一书的梳理,类似文字版的思维导图 全文主要围绕性能,可用性,伸缩性,扩展性,安全这五个要素 性能,可用性,伸缩性...
阅读 2353·2021-11-24 10:27
阅读 3593·2019-08-30 15:55
阅读 3356·2019-08-30 15:53
阅读 2357·2019-08-29 17:27
阅读 1445·2019-08-26 13:47
阅读 3559·2019-08-26 10:28
阅读 927·2019-08-23 15:59
阅读 2880·2019-08-23 15:19