Memcached【Magent+Memcached】集羣

Memcached介紹

 事件處理
libevent是個程序庫,它將Linux的epoll、BSD類操做系統的kqueue等事件處理功能封裝成統一的接口。即便對服務器的鏈接數增長,也能發揮O(1)的性能。memcached使用這個libevent庫,所以能在Linux、BSD、Solaris等操做系統上發揮其高性能。關於事件處理這裏就再也不詳細介紹,能夠參考Dan Kegel的The C10K Problem。
存儲方式
爲了提升性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。因爲數據僅存在於內存中,所以重啓memcached、重啓操做系統會致使所有數據消失。另外,內容容量達到指定值以後,就基於LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached自己是爲緩存而設計的服務器,所以並無過多考慮數據的永久性問題。
通訊分佈式
memcached儘管是「分佈式」緩存服務器,但服務器端並無分佈式功能。各個memcached不會互相通訊以共享信息。那麼,怎樣進行分佈式呢?這徹底取決於客戶端的實現!php

事件、存儲、通訊解釋摘自百度html

Magent+Memcached實現集羣

如上圖所示:java

Agent1把數據分別保存在192.168.7.102:11211 和 192.168.7.103:11211分紅兩份,而且192.168.7.104:11211保留完整的備份python

Agent2把數據分別保存在192.168.7.103:11211 和 192.168.7.103:11211分紅兩份,而且192.168.7.104:11211保留完整的備份git

緣由:github

在寫的時候同時寫兩份保存在Memcached裏!能夠根據須要本身調整,基本上一個Agent便可,可是爲了冗餘使用兩個Agent是推薦的!算法

配置:apache

Magent:代理服務器     192.168.7.100:12000  192.168.7.101:12000
Memcached主服務器     192.168.7.102:11211   192.168.7.102:11211
Memcached備份服務器  192.168.7.104:11211

安裝配置

一、安裝Memcached  (安裝memcached在192.168.7.102   192.168.7.103   192.168.7.104 並啓動端口11211)vim

 

yum -y install memcached #安裝軟件
/usr/bin/memcached -d -u root -l 192.168.7.102 -m 1024 -p 11211#啓動服務
/usr/bin/memcached -d -u root -l 192.168.7.103 -m 1024 -p 11211#啓動服務
/usr/bin/memcached -d -u root -l 192.168.7.104 -m 1024 -p 11211#啓動服務

#命令解釋:
'''
啓動Memcache 經常使用參數
-p <num>      設置TCP端口號(默認不設置爲: 11211)
-U <num>      UDP監聽端口(默認: 11211, 0 時關閉) 
-l <ip_addr>  綁定地址(默認:全部都容許,不管內外網或者本機更換IP,有安全隱患,若設置爲127.0.0.1就只能本機訪問)
-d                    以daemon方式運行
-u <username> 綁定使用指定用於運行進程<username>
-m <num>      容許最大內存用量,單位M (默認: 64 MB)
-P <file>     將PID寫入文件<file>,這樣可使得後邊進行快速進程終止, 須要與-d 一塊兒使用

'''

 

 

二、安裝Magent (安裝Magent在192.168.7.100 192.168.7.101)數組

cd /usr/local/
mkdir ./magent
cd ./magent
wget -c http://memagent.googlecode.com/files/magent-0.6.tar.gz
tar xzvf ./magent-0.6.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp ./magent /usr/bin/magent

#命令詳解
'''
  -h this message
  -u uid
  -g gid
  -p port, default is 11211. (0 to disable tcp support)
  -s ip:port, set memcached server ip and port
  -b ip:port, set backup memcached server ip and port
  -l ip, local bind ip address, default is 0.0.0.0
  -n number, set max connections, default is 4096
  -D do not go to background
  -k use ketama key allocation algorithm
  -f file, unix socket path to listen on. default is off
  -i number, max keep alive connections for one memcached server, default is 20
  -v verbose
'''

三、啓動Magent

magent -u root -n 51200 -l 192.168.7.100 -p 12000 -s 192.168.7.102:11211 -s 192.168.7.103:11211 -b 192.168.7.104:11211
magent -u root -n 51200 -l 192.168.7.101 -p 12000 -s 192.168.7.102:11211 -s 192.168.7.103:11211 -b 192.168.7.104:11211
 
四、測試(使用python測試,其餘的好比java或者C均可以去百度查看下接口便可)
我這裏使用python簡單測試:
模塊需求: python-memcached(pip install python-memcached 而後直接複製我下面的python腳本執行便可)
#/usr/bin/env python
#-*- coding:utf-8 -*-

import memcache

mc = memcache.Client(['192.168.7.100:11211'],debug=True)
mc.set('Timluo','1',60)
mc.set('Timluo2','2',60)
mc.set('Timluo3','3',60)
mc.set('Timluo4','4',60)
mc.set('Timluo5','5',60)
mc.set('Timluo6','6',60)

五、能夠經過telnet 192.168.7.102 或 192.168.7.103 或 192.168.7.104 上直接get keyname去獲取值看看是否能夠正常獲取是否已經正常存儲了!或者安裝管理工具Memadmin查看

'''
telnet 192.168.7.102 11211

get Timluo1
VALUE Timluo1 0 1
1
.....
.........
'''

Memadmin

MemAdmin是一款可視化的Memcached管理與監控工具,基於 PHP5 & JQuery 開發,體積小,操做簡單。(介紹摘自官網)
主要功能:
  •     服務器參數監控:STATS、SETTINGS、ITEMS、SLABS、SIZES實時刷新
  •     服務器性能監控:GET、DELETE、INCR、DECR、CAS等經常使用操做命中率實時監控
  •     支持數據遍歷,方便對存儲內容進行監視
  •     支持條件查詢,篩選出知足條件的KEY或VALUE
  •     數組、JSON等序列化字符反序列顯示
  •     兼容memcache協議的其餘服務,如Tokyo Tyrant (遍歷功能除外)
  •     支持服務器鏈接池,多服務器管理切換方便簡潔
一、安裝apache
yum -y install httpd

二、安裝php的memcache擴展包php-pecl-memcache

yum -y install  php-pecl-memcache

三、修改apache配置文件添加php

vim /etc/httpd/conf/httpd.conf
line:420
DirectoryIndex index.html index.html.var index.php  #新增index.php

四、下載MemAdmin

git clone https://github.com/junstor/memadmin

#若是沒有安裝git請自行安裝

 五、啓動apache服務

/etc/init.d/httpd start

六、登陸WEB MemAdmin

http://192.168.7.101/memadmin

#默認密碼在config.php中能夠本身定義

七、添加管理(圖形界面不在解釋,請自行添加)

相關文章
相關標籤/搜索