一、Memcache簡介
Memcache是一個(gè)高(gāo)性能的(de)分(fēn)布式的(de)内存對(duì)象緩存系統,通(tōng)過在内存裏維護一個(gè)統一的(de)巨大(dà)的(de)hash表,它能夠用(yòng)來(lái)存儲各種格式的(de)數據,包括圖像、視頻(pín)、文件以及數據庫檢索的(de)結果等。簡單的(de)說就是将數據調用(yòng)到内存中,然後從内存中讀取,從而大(dà)大(dà)提高(gāo)讀取速度。
Memcache是danga的(de)一個(gè)項目,最早是LiveJournal 服務的(de),最初爲了(le)加速 LiveJournal 訪問速度而開發的(de),後來(lái)被很多(duō)大(dà)型的(de)網站采用(yòng)。
Memcached是以守護程序方式運行于一個(gè)或多(duō)個(gè)服務器中,随時(shí)會接收客戶端的(de)連接和(hé)操作。
二、搭建Memcache服務
yum install memcached
安裝memcache服務端
yum -y install php-pecl-memcache
安裝php擴展操作memcache
php -m | grep memcache
查看php擴展是否安裝成功
memcached -d -m 100 -u root -l x.x.x.x -p 11211 -c 512 -P /tmp/memcached.pid
參數說明(míng):
-d選項是啓動一個(gè)守護進程;
-m是分(fēn)配給Memcache使用(yòng)的(de)内存數量,單位是MB,我這(zhè)裏是100MB;
-u是運行Memcache的(de)用(yòng)戶,我這(zhè)裏是root;
-l是監聽(tīng)的(de)服務器IP地址我這(zhè)裏指定了(le)服務器的(de)IP地址x.x.x.x;
-p是設置Memcache監聽(tīng)的(de)端口,我這(zhè)裏設置了(le)11211,最好是1024以上的(de)端口;
-c選項是最大(dà)運行的(de)并發連接數,默認是1024,我這(zhè)裏設置了(le)512,按照(zhào)你服務器的(de)負載量來(lái)設定;
-P是設置保存Memcache的(de)pid文件,這(zhè)裏是保存在 /tmp/memcached.pid;
想要結束memcache進程
kill `cat /tmp/memcached.pid`
設置開機啓動
chkconfig memcached on
三、Memcache服務安全問題
Memcache服務器端都是直接通(tōng)過客戶端連接後直接操作,沒有任何的(de)驗證過程,這(zhè)樣如果服務器是直接暴露在互聯網上的(de)話(huà)是比較危險,輕則數據洩露被其他(tā)無關人(rén)員(yuán)查看,重則服務器被入侵,因爲Mecache是以root權限運行的(de),況且裏面可(kě)能存在一些未知的(de)bug或者是緩沖區(qū)溢出的(de)情況,所以危險性是可(kě)以預見的(de)。
服務測試方法:
telnet *.*.*.* 11211
stats items
如出現上述信息,則說明(míng)服務器端是配置了(le)“Memcache服務”,并且沒有設置安全保護。
四、Memcache服務安全防範
設置防火牆是簡單有效的(de)方式,如果服務器是放置在公網對(duì)外提供服務的(de),并且需要通(tōng)過外網IP來(lái)訪問Memcache的(de)話(huà),那麽可(kě)以考慮使用(yòng)防火牆或者代理(lǐ)程序來(lái)過濾非法訪問。
一般我們在Linux下(xià)可(kě)以使用(yòng)iptables或者FreeBSD下(xià)的(de)ipfw來(lái)指定一些規則防止一些非法的(de)訪問,比如我們可(kě)以設置隻允許我們的(de)Web服務器來(lái)訪問我們Memcache服務器,同時(shí)阻止其他(tā)的(de)訪問。
# iptables -F
# iptables -P INPUT DROP
# iptables -A INPUT -p tcp -s 192.168.0.2 --dport 11211 -j ACCEPT
# iptables -A INPUT -p udp -s 192.168.0.2 --dport 11211 -j ACCEPT
上面的(de)iptables規則就是隻允許192.168.0.2這(zhè)台Web服務器對(duì)Memcache服務器的(de)訪問,能夠有效的(de)阻止一些非法訪問,相應的(de)也(yě)可(kě)以增加一些其他(tā)的(de)規則來(lái)加強安全性。