摘要:部署實現高可用常用的兩個工具連接多個,請求轉發單單,互為主輔結構結構主要部署步驟使用啟動個每個容器初始化腳本得到另一個節點的因為就兩個節點,不是就是判斷另一個節點的監聽狀態如果在監聽說明是主節點需要復制它,否則反之復制節點
部署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方案
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32811.html
摘要:有了分布式數據庫可以使數據庫的性能可以隨著節點增加線性地增加。分布式數據庫最最下面是,是主備的,通過的內核開發能力,我們能夠實現主備切換數據零丟失,所以數據落在這個里面,是非常放心的,哪怕是掛了一個節點,切換完了以后,你的數據也是不會丟的。 此文已由作者劉超授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗 三、微服務化的十個設計要點 微服務有哪些要點呢?第一張圖是...
摘要:跨集群服務能夠分布在不同的地理位置,使得混合和多云成為可能,相對于單一集群多可用區部署,更好地保證高可用。注例子中,我們利用谷歌容器引擎提供的集群,在該平臺上,你可以把部署到想要的地區。 編者按:這篇文章是關于Kubernetes 1.3新功能的一系列深入文章的一部分。本文是第七篇。 用戶使用Kubernetes 對生產環境上的部署進行彈性伸縮,同時我們聽到一個明確的聲音:希望跨區域、...
摘要:本文內容節選自由主辦的第七屆,架構師高欣分享的的實踐實錄。當然,在部署完成后,我們要做一個監測以便掌握它的運行狀況。規劃配置運行環境在正式部署前,還要考慮如何規劃并配置好運行環境。在使用部署時,可以利用這些命令做驗證,檢驗部署是否正常。 showImg(https://segmentfault.com/img/bVblRHj?w=2880&h=1920); 本文內容節選自由msup主辦...
摘要:使用緩存兩個前提條件數據訪問熱點不均衡數據某時段內有效,不會很快過期反向代理本地緩存分布式緩存異步旨在系統解耦。 大型網站技術架構-入門梳理 標簽 : 架構設計 [TOC] 羅列了大型網站架構涉及到的概念,附上了簡單說明 前言 本文是對《大型網站架構設計》(李智慧 著)一書的梳理,類似文字版的思維導圖 全文主要圍繞性能,可用性,伸縮性,擴展性,安全這五個要素 性能,可用性,伸縮性...
閱讀 2344·2021-11-24 10:27
閱讀 3584·2019-08-30 15:55
閱讀 3349·2019-08-30 15:53
閱讀 2349·2019-08-29 17:27
閱讀 1439·2019-08-26 13:47
閱讀 3555·2019-08-26 10:28
閱讀 920·2019-08-23 15:59
閱讀 2855·2019-08-23 15:19