安装配置memcached高可用

本文介绍了memcached高可用的安装配置方法。先阐述了memcached单机部署,包括yum安装、编译安装、启动及python操作。接着说明了高可用部署架构,通过负载均衡连接两台memcached实现数据同步。还介绍了repcached的部署,最后展示了两台服务器启动memcached及验证数据同步的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

安装配置memcached高可用

1.memcached单机部署

1.1 yum安装

1.2 编译安装

1.3 启动

1.4 python操作memcache

2.高可用部署架构

3. 部署repcached

4. 启动memcached

4.1 server 1相关操作

4.2 server 2相关操作

4.3 连接到memcache验证数据


安装配置memcached高可用

1.memcached单机部署

1.1 yum安装

# yum install memcached -y
# vim /etc/sysconfig/memcached
PORT="11211" #监听端口
USER="memcached" #启动用户
MAXCONN="1024" #最大连接数
CACHESIZE="1024" #最大使用内存
OPTIONS="" #其他选项

1.2 编译安装

# yum install libevent libevent-devel –y
# pwd
/usr/local/src
# tar xvf memcached-1.5.12.tar.gz
# ./configure --prefix=/usr/local/memcache
# make && make install

1.3 启动

# /usr/local/memcache/bin/memcached -u memcached -p 11211 -m 2048 -c 65536 &

1.4 python操作memcache

#!/usr/bin/env python
#coding:utf-8
import memcache
m = memcache.Client(['172.18.200.106:11211'], debug=True)
for i in range(100):
m.set("key%d" % i,"v%d" % i)
ret = m.get('key%d' % i)
print ret

2.高可用部署架构

通过负载均衡连接之memcached,两台memcached做高可用,memcached会自动同步数据保持数据一致性,即使一台memcached故障也不影响业务正常运行,故障的memcached修复上线后再自动从另外一台同步数据即可保持数据一致性。

Repcached实现原理:
在 master上可以通过 -X指定 replication port,在 slave上通过 -x/-X找到 master并 connect上去,事实上,如果同时指定了 -x/-X, repcached一定会尝试连接,但如果连接失败,它就会用 -X参数来自己 listen(成为master);如果 master坏掉, slave侦测到连接断了,它会自动 listen而成master;而如果 slave坏掉,master也会侦测到连接断,它就会重新 listen等待新的 slave加入。
从这方案的技术实现来看,其实它是一个单 master单 slave的方案,但它的 master/slave都是可读写的,而且可以相互同步,所以从功能上看,也可以认为它是双机 master-master方案。

3. 部署repcached

官网 http://repcached.sourceforge.net/
两台主机部署repcached,无需再部署memcached,因为repcached自带memcached,版本较低为memcached-1.2.8。之前单机部署的memcached服务要关闭。
安装方法:

[root@s6 src]# yum install libevent libevent-devel
[root@s6 src]# wget https://sourceforge.net/projects/repcached/files/repcached/2.2.1-
1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz
[root@s6 src]# tar xvf memcached-1.2.8-repcached-2.2.1.tar.gz
[root@s6 src]# cd memcached-1.2.8-repcached-2.2.1
[root@s6 memcached-1.2.8-repcached-2.2.1]# ./configure --prefix=/usr/local/repcached --
enable-replication
[root@s6 memcached-1.2.8-repcached-2.2.1]# make #报错如下

解决办法:

[root@s6 memcached-1.2.8-repcached-2.2.1]# vim memcached.c
56 #ifndef IOV_MAX
57 #if defined(__FreeBSD__) || defined(__APPLE__)
58 # define IOV_MAX 1024
59 #endif
60 #endif
改为如下内容:
55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 # define IOV_MAX 1024
58 #endif

再次编译安装:

[root@s6memcached-1.2.8-repcached-2.2.1]# make && make install

验证是否可执行

[root@s5 memcached-1.2.8-repcached-2.2.1]# /usr/local/repcached/bin/memcached -h
memcached 1.2.8
repcached 2.2.1
-p <num> TCP port number to listen on (default: 11211)
-U <num> UDP port number to listen on (default: 11211, 0 is off)
-s <file> unix socket path to listen on (disables network support)
-a <mask> access mask for unix socket, in octal (default 0700)
-l <ip_addr> interface to listen on, default is INDRR_ANY
-d run as a daemon
-r maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num> max memory to use for items in megabytes, default is 64 MB
-M return error on memory exhausted (rather than removing items)
-c <num> max simultaneous connections, default is 1024
-k lock down all paged memory. Note that there is a
limit on how much memory you may lock. Trying to
allocate more than that would fail, so be sure you
set the limit correctly for the user you started
the daemon with (not for -u <username> user;
under sh this is done with 'ulimit -S -l NUM_KB').
-v verbose (print errors/warnings while in event loop)
-vv very verbose (also print client commands/reponses)
-h print this help and exit
-i print memcached and libevent license
-P <file> save PID in <file>, only used with -d option
-f <factor> chunk size growth factor, default 1.25
-n <bytes> minimum space allocated for key+value+flags, default 48
-R Maximum number of requests per event
limits the number of requests process for a given con nection
to prevent starvation. default 20
-b Set the backlog queue limit (default 1024)
-x <ip_addr> hostname or IP address of peer repcached
-X <num:num> TCP port number for replication. <listen:connect> (default: 11212)

4. 启动memcached

4.1 server 1相关操作

[root@s5 ~]# /usr/local/repcached/bin/memcached -d -m 2048 -p 11211 -u root -c 2048 -x 172.18.200.106 -X 16000

4.2 server 2相关操作

[root@s6 src]# /usr/local/repcached/bin/memcached -d -m 2048 -p 11211 -u root -c 2048 -x 172.18.200.105 -X 16000

4.3 连接到memcache验证数据

[root@s6 src]# telnet 172.18.200.106 11211
Trying 172.18.200.106...
Connected to 172.18.200.106.
Escape character is '^]'.
set name 0 0 4 #key 的名为name,且永不超时
jack
STORED #符合长度后自动保存
get name
VALUE name 0 4
jack
END
quit
Connection closed by foreign host.

[root@s6 src]# telnet 172.18.200.105 11211   --到另外一台memcached服务器验证是否有数据
Trying 172.18.200.105...
Connected to 172.18.200.105.
Escape character is '^]'.
get name #数据已经自动同步
VALUE name 0 4
jack
END
quit
Connection closed by foreign host.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值