memcached主主同步安裝與配置(repcached)

經RD方面要求,需要對memcached進行優化,做到主從同步,上網搜索了下發現repcached對memcached進行patch之後可以實現memcached的複製功能,經過安裝測試發現還不錯。

測試環境:

操作系統:Redhat 5.3 64bit

memcached:memcached-1.4.5 + repcached-2.3-1.4.5.patch

libevent:1.4.4

node1:10.23.36.143

node2:10.23.36.201

1、repcached介紹

repcached是日本人開發的實現memcached複製功能,它是一個單 master單 slave的方案,但它的 master/slave都是可讀寫的,而且可以相互同步,如果 master壞掉, slave偵測到連接斷了,它會自動 listen而成爲 master;而如果 slave壞掉, master也會偵測到連接斷,它就會重新 listen等待新的 slave加入 。

2、安裝libevent

wget http://cloud.github.com/downloads/libevent/libevent/libevent-1.4.14b-stable.tar.gz
tar xzvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure --prefix=/app/soft/libevent-1.4.4
make && make install

將libevent添加到操作系統的動態鏈接庫裏面:

#cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/app/soft/libevent-1.4.4/lib     #這行是新增的
#ldconfig    #使動態庫生效

3、memcached的安裝

wget http://mdounin.ru/files/repcached-2.3.1-1.4.5.patch.gz
gzip -d repcached-2.3.1-1.4.5.patch.gz
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar xzvf memcached-1.4.15.tar.gz
patch -p0 -i repcached-2.3.1-1.4.5.patch    #對memcached源碼進行patch
cd memcached-1.4.15
./configure --with-libevent=/app/soft/libevent-1.4.4/ --prefix=/app/soft/memcached-rep-1.4.5 --enable-replication --enable-64bit
make && make install

就這樣帶有複製功能的memcached已經安裝完成了,接下來就是啓動了。

5、memcached的同步相關參數介紹

相比沒有沒有patch過的memcached,帶有複製功能的memcached只多了-x、-X兩個參數,具體信息如下:

-x <ip_addr>  hostname or IP address of peer repcached
-X <num>      TCP port number for replication (default: 11212)
-x        #設置從哪個IP上進行數據同步,也就是設置Master的IP
-X        #設置數據同步的端口號,默認11212.如11212已經被使用的話,
          #需要通過這個參數來設置,否則memcached無法啓動


6、memcached啓動

#node1:10.23.36.143
/app/soft/memcached-rep-1.4.5/bin/memcached -d -m 1024 -p 11213 -u resin -c 1024 -P /tmp/memcached-rep.pid -x 10.23.36.201 -X 11215
#node2:10.23.36.201
/app/soft/memcached-rep-1.4.5/bin/memcached -d -m 1024 -p 11213 -u resin -c 1024 -P /tmp/memcached-rep.pid -x 10.23.36.143 -X 11215

本次啓動的是兩臺memcached互爲主從。

7、測試驗證

①、可以分別在兩臺機器上通過telnet localhost 11213,然後通過stats、stats slabs、stats items命令查看memcache一些大概信息。

②、通過java程序來對memcached的讀寫進行驗證,具體java代碼如下:

package TestMemcached;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class TestMemcached {
    public static void main(String[] args) {
        /*初始化SockIOPool,管理memcached的連接池*/
        String[] servers = { "10.23.36.143:11213","10.23.36.201:11213" };
        SockIOPool pool = SockIOPool.getInstance();
        pool.setServers(servers);
        pool.setFailover(true);
        pool.setInitConn(10);
        pool.setMinConn(5);
        pool.setMaxConn(250);
        pool.setMaintSleep(30);
        pool.setNagle(false);
        pool.setSocketTO(3000);
        pool.setAliveCheck(true);
        pool.setFailback(false);
        pool.initialize();
        /*建立MemcachedClient實例*/
        MemCachedClient memCachedClient = new MemCachedClient();
        /*測試往memcached上寫數據*/
        int idx = 1;
        while(true){
            System.out.println(idx);
            /*memCachedClient.add("key-"+idx, "value-"+idx);*/
            //測試往memcached上讀數據
            System.out.println(memCachedClient.get("key-"+idx));
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
                                                                           
            if(idx > 20){
                break;
            }
                                                               
                                                               
/*          System.out.println(memCachedClient.get("key-"+2));
            idx++;*/
        }
                                                           
    }
}

通過測試驗證發現,分別想兩臺memcached寫數據都會相互同步。

③、可以通過測試-vvv發現,每次memcached啓動的時候都會向Master發送同步請求。


總結:

優點:

數據冗餘

兩臺memcached都可以進行讀寫操作


缺點:

只支持單對單

不容易擴展


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章