Memcache主從複製

來源:互聯網
上載者:User

repcached介紹

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

1.安裝

在兩台伺服器上分別安裝memcached服務,另注本文libevent的版本為:libevent-1.4.13,:http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz

repcached有兩種方式:

方式一、下載對應的repcached版本

#wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz

#tar zxf memcached-1.2.8-repcached-2.2.tar.gz

#cd memcached-1.2.8-repcached-2.2

2.下載對應patch版本

#wget http://downloads.sourceforge.net/repcached/repcached-2.2-1.2.8.patch.gz

#gzip -cd ../repcached-2.2-1.2.8.patch.gz | patch -p1

#./configure –enable-replication

# make

# make install

3.啟動:

啟動master

#/usr/local/bin/memcached -d -m 64 -p 12000 -u root -l 0.0.0.0 -P /tmp/memcached.pid

replication: listen (master監聽)

啟動salve

#/usr/local/bin/memcached -d -m 64 -p 12000 -u root -l 0.0.0.0 -x 192.168.3.100 -X 11212 -P /tmp/memcached.pid

replication: connect (peer=192.168.3.100:11212)

replication: marugoto copying

replication: start

啟動正常後,master將accept。

啟動指令碼

MASTER

#!/bin/bash

# memcached service.

# chkconfig: 345 35 75

# description: a mem cache servercase "$1" in

start)

/usr/local/bin/memcached -d -m 64 -p 12000 -u root -l 0.0.0.0 -P /tmp/memcached.pid

echo "memcached start ok"

;;

restart)

ps aux |grep /usr/local/memcached/bin/memcached|grep -v grep|awk '{print $2}'|awk '{printf("%s ",$1)}'|xargs kill -9

/usr/local/bin/memcached  -d -m 64 -p 12000 -u root -l 0.0.0.0 -P /tmp/memcached.pid

echo "memcached restart ok"

;;

stop)

ps aux |grep /usr/local/bin/memcached|grep -v grep|awk '{print $2}'|awk '{printf("%s ",$1)}'|xargs kill -9

echo "memcached stop ok"

;;

esacexit 0

 

SLAVE

#!/bin/bash

# memcached service.

# chkconfig: 345 35 75

# description: a mem cache servercase "$1" in

start)

/usr/local/bin/memcached -d -m 64 -p 12000 -u root -l 0.0.0.0 -x 192.168.3.100 -X 11212 -P /tmp/memcached.pid

echo "memcached start ok"

;;

restart)

ps aux |grep /usr/local/memcached/bin/memcached|grep -v grep|awk '{print $2}'|awk '{printf("%s ",$1)}'|xargs kill -9

/usr/local/bin/memcached -d -m 64 -p 12000 -u root -l 0.0.0.0 -x 192.168.3.100 -X 11212 -P /tmp/memcached.pid

echo "memcached restart ok"

;;

stop)

ps aux |grep /usr/local/bin/memcached|grep -v grep|awk '{print $2}'|awk '{printf("%s ",$1)}'|xargs kill -9

echo "memcached stop ok"

;;

esacexit 0

 

4.測試:

操作master

#telnet 192.168.3.100 11211

#set key1 0 0 3

test

查看slave

#telnet 192.168.3.101 11213

#get key1

如果正常顯示test,則表示repcached配置成功

5.應用:

可以實現cache冗餘,避免因cache伺服器down掉而導致資料丟失。

注意:如果master down機,slave接管並成為master,這時down機的master只能啟用slave,他們之間互換角色,才能保持複製功能。換句話說,master沒有搶佔功能。可以通過LVS來配置成自動切換

配置PHP session使用MEMCACHE

[Session]

; Handler used to store/retrieve data.

; http://php.net/session.save-handler

;session.save_handler = filessession.save_handler = "memcache"

memcache.hash_strategy = "consistent"

session.save_path = "tcp://192.168.3.1:12000"

 

HAPROXY 設定檔

global

        log 127.0.0.1   local0

        #log 127.0.0.1  local0

        #log 127.0.0.1  local1 notice

        #log loghost    local0 info

        maxconn 4096

        chroot /opt/share/haproxy

        uid 99

        gid 99

        daemon

        #debug

        #quietdefaults

        log     global

        #mode   http

        #option httplog

        option  dontlognull

        retries 3

#       redispatch

        maxconn 2000

        contimeout      5000

        clitimeout      50000

        srvtimeout      50000

      

listen  MEMCACHED 0.0.0.0:12000

        mode tcp           

        option  persist              

        balance roundrobin           

        server  MEMCACHE1 192.168.3.100:12000 check inter 2000 fall 3

        server  MEMCACHE2 192.168.3.101:12000 check inter 2000 fall 3listen  MYSQLD 0.0.0.0:3306

        mode tcp

        option  persist

        balance roundrobin

        server  MYSQL1 192.168.3.100:3306 check inter 2000 fall 3

#       server  MYSQL2 192.168.3.101:3306 check inter 2000 fall 3listen  HTTP 0.0.0.0:80

        mode http

        option  forwardfor

        option httplog

       #option  httpchk /index.html

        stats   uri     /haproxy-stats                              

        stats auth admin:xxxxxx

        option  persist

        balance roundrobin

        cookie  SERVERID insert indirect nocache

        server  WEB1 192.168.3.100:80 cookie server01 check inter 2000 fall 3

        server  WEB2 192.168.3.101:80 cookie server02 check inter 2000 fall 3

        capture cookie PHPSESSION len 32

        srvtimeout      20000        option  httpclose               # disable keep-alive

        option  checkcache              # block response if set-cookie & cacheable        rspidel ^Set-cookie:\ IP=       # do not let this cookie tell our internal IP addresslisten  HTTPS 0.0.0.0:443                                                                                                       

        mode tcp

        option ssl-hello-chk                                                                                                                  

        option  persist                                                                                                            

        balance roundrobin                                                                                                         

        server  WEB1 192.168.3.100:443 check inter 2000 fall 3                                                                  

        server  WEB2 192.168.3.101:443 check inter 2000 fall 3  

       

        #errorloc       502     http://192.168.114.58/error502.html

        #errorfile      503     /etc/haproxy/errors/503.http

效果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.