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不會互相通信以共享信息。那么,怎樣進行分布式呢?這完全取決於客戶端的實現!

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

Magent+Memcached實現集群

如上圖所示:

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

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

原因:

在寫的時候同時寫兩份保存在Memcached里!可以根據需要自己調整,基本上一個Agent即可,但是為了冗余使用兩個Agent是推薦的!

配置:

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

安裝配置

1、安裝Memcached  (安裝memcached在192.168.7.102   192.168.7.103   192.168.7.104 並啟動端口11211)

 

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 一起使用

'''

 

 

2、安裝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
'''

3、啟動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
 
4、測試(使用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)

5、可以通過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 (遍歷功能除外)
  •     支持服務器連接池,多服務器管理切換方便簡潔
1、安裝apache
yum -y install httpd

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

yum -y install  php-pecl-memcache

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

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

4、下載MemAdmin

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

#如果沒有安裝git請自行安裝

 5、啟動apache服務

/etc/init.d/httpd start

6、登錄WEB MemAdmin

http://192.168.7.101/memadmin

#默認密碼在config.php中可以自己定義

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM