您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Repcached实现Memcached主从复制功能

2024/3/31 22:44:38发布17次查看
repcached实现memcached主从复制功能工作原理repcached实现了memcached复制的功能,它是一个单master单slave的方案,但master/slave都是可读写的,而且可以相互
repcached实现memcached主从复制功能
工作原理
repcached实现了memcached复制的功能,它是一个单master单slave的方案,但master/slave都是可读写的,而且可以相互同步,如果master坏掉slave侦测到连接断了,它会自动listen而成为master,这时坏掉的master只能启用为slave,它们之间互换角色,才能保持复制功能,换句话说,master没有抢占功能;而如果slave坏掉,master也会侦测到连接断,它就会重新listen等待新的slave加入。
应用场景
用memcached做session共享或其它服务时会存在memcached的单点故障,如果memcached宕机,那么整个系统用户无法登陆(session)。
基于这种情况,采用repcached做memcached的主从冗余。
repcached下载地址
repcached安装方式
repcached有两种安装方式:
    1.补丁版本安装  
    先安装相应版本的memcached,,然后对应版本的repcached补丁。
    2.整合版本安装  
    直接安装整合版本的memcached
方式一:补丁版本安装
1. 安装memcache,相关安装方法可以参见博文:
2. 下载对应的repcached版本补丁安装文件:  
假设安装的memcahced版本为1.2.8,下载针对该版本最新的补丁:
wget     gzip -cd ../repcached-2.2.1-1.2.8.patch.gz | patch -p1    ./configure --enable-replication    make && make install 
方式二:整合版本安装
1. 安装libevent:
cd /tmp    wget     tar zxvf libevent-2.0.22-stable.tar.gz    cd libevent-2.0.22-stable    ./configure --prefix=/usr/local/lib    make && make install2. 将libevent的库文件添加到动态库中:
vi /etc/ld.so.conf 
在最后添加如下行:    
/usr/local/lib //此处为要添加的libevent库目录    
重新加载动态lib库
ldconfig   
注意:如果无此步骤,在启动memcached时,会提示看不到libevent的库文件。
3. 测试libevent是否安装成功:
ls -al /usr/lib | grep libevent-4. 创建启动帐号:
groupadd memcached    useradd -g memcached memcached5. 创建pid进程目录并修改所有者:
mkdir /var/run/memcached    chown -r memcached.memcached /var/run/memcached6. 安装整合memcached-repcached包:
cd /tmp    wget     cp memcached-1.2.8-repcached-2.2.1.tar.gz /usr/local    cd /usr/local    tar zxvf memcached-1.2.8-repcached-2.2.1.tar.gz    mv memcached-1.2.8-repcached-2.2.1 memcached    cd memcached    ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/lib --enable-replication --enable-64bit 
注意:默认memcached单个进程只支持到2g内存,需要更大内存支持的话,需要打开64位支持,编译的时候加参数:    
--enable-64bit
make && make install  
提示编译出错:
make all-recursive    make[1]: entering directory `/usr/local/memcached'    making all in doc    make[2]: entering directory `/usr/local/memcached/doc'    make[2]: nothing to be done for `all'.    make[2]: leaving directory `/usr/local/memcached/doc'    make[2]: entering directory `/usr/local/memcached'    gcc -dhave_config_h -i. -dndebug -m64 -g -o2 -mt memcached-memcached.o -md     mp -mf .deps/memcached-memcached.tpo -c -o memcached-memcached.o `test -f     memcached.c' || echo './'`memcached.c    memcached.c: in function ‘add_iov’:    memcached.c:697: error: ‘iov_max’ undeclared (first use in this function)    memcached.c:697: error: (each undeclared identifier is reported only once    memcached.c:697: error: for each function it appears in.)    make[2]: *** [memcached-memcached.o] error 1    make[2]: leaving directory `/usr/local/memcached'    make[1]: *** [all-recursive] error 1    make[1]: leaving directory `/usr/local/memcached'    make: *** [all] error 2  
解决方案:
vi memcached.c
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product