memcache群集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memcache群集相关的知识,希望对你有一定的参考价值。

技术分享图片

开启四台虚拟机:都需要装libevent软件

[[email protected] ~]# tar zxf libevent-2.0.22-stable.tar.gz
[[email protected] ~]# cd libevent-2.0.22-stable/
[[email protected] libevent-2.0.22-stable]# ./configure && make && make install
安装memcached软件(Memcached服务器 2台)

[[email protected] ~]# tar -zxvf memcached-1.4.31.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/memcached-1.4.31/
[[email protected] memcached-1.4.31]# ./configure --enable-memcache --with-libevent=/usr/
[[email protected] memcached-1.4.31]# make && make install
主缓存:
[[email protected] ~]# memcached -d -m 1024 -u root -l 192.168.1.201 -p 11211
备缓存:
[[email protected] ~]# memcached -d -m 1024 -u root -l 192.168.1.202 -p 11211
[[email protected] ~]# netstat -anpt | grep memcached
3、安装magent 软件(Magent 服务器 2台)
[[email protected] ~]# mkdir /usr/magent
[[email protected] ~]# tar -zxvf magent-0.6.tar.gz -C /usr/magent/
[[email protected] ~]# cd /usr/magent/
[[email protected] magent]# vim ketama.h
添加(头部添加):
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
[[email protected] magent]# ln -s /usr/lib64/libm.so /usr/lib64/libm.a
[[email protected] magent]# ln -s /usr/lib64/libevent-2.0.so.5 /usr/lib64/libevent.a
无法make的时候需要安装libevent-2.0.so.5
[[email protected] magent]# /sbin/ldconfig
[[email protected] magent]# sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
[[email protected] magent]# make
[[email protected] magent]# cp magent /usr/bin/
主缓存和备缓存一样的启动命令(-l 是漂移IP 还没有搭建Keepalived服务 暂时不要启动Magent服务)
[[email protected] ~]# magent -u root -n 51200 -l 192.168.1.10 -p 12000 -s 192.168.1.201:11211 -b 192.168.1.202:11211
[[email protected] ~]# magent -u root -n 51200 -l 192.168.1.10 -p 12000 -s 192.168.1.201:11211 -b 192.168.1.202:11211
-u:用户
-n:最大连接数
-l:magent 对外监听IP 地址
-p:magent 对外监听端口
-s:magent 主缓存IP 地址和端口
-b:magent 备缓存IP 地址和端口
[[email protected] ~]# ps -elf | grep magent
4、安装keepalived 软件(Magent 服务器 2台)
[[email protected] ~]# yum -y install kernel-devel openssl-devel popt-devel
[[email protected] ~]# tar -zxvf keepalived-1.3.9.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/ keepalived-1.3.9/
[[email protected] keepalived-1.3.9]# ./configure --prefix=/ && make && make install
[[email protected] keepalived-1.3.9]# cp keepalived/etc/init.d/keepalived /etc/init.d/
[[email protected] keepalived-1.3.9]# chkconfig --add keepalived
[[email protected] keepalived-1.3.9]# chkconfig keepalived on
配置主缓存服务器
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
修改:
global_defs {
router_id LVS_DEVEL_R1
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.10
}
}
[[email protected] ~]# service keepalived restart
[[email protected] ~]# ip add show dev eno16777736
配置备缓存服务器
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
修改:
global_defs {
router_id LVS_DEVEL_R2
}
vrrp_instance VI_1 {
state BACKUP
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.10
}
---其他参数与主缓存服务器保持一致----
}
[ro[email protected] ~]# service keepalived restart
[[email protected] ~]# ip add show dev eno16777736
验证:
客户端ping 192.168.1.10 查看VIP的变化情况。
5、验证:
1)用主缓存节点连接上主缓存的1200端口插入数据
[[email protected] ~]# telnet 192.168.1.10 12000
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is ‘^]‘.
set key 33 0 5
ggggg
STORED
quit
Connection closed by foreign host.
2)查看插入的数据
[[email protected] ~]# telnet 192.168.1.10 12000
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is ‘^]‘.
get key
VALUE key 33 5
ggggg
END
quit
Connection closed by foreign host.
3)连接主缓存节点的11211端口进行查看
[[email protected] ~]# telnet 192.168.1.201 11211
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is ‘^]‘.
get key
VALUE key 33 5
ggggg
END
quit
Connection closed by foreign host.
4)连接主缓存节点的11211端口进行查看
[[email protected] ~]# telnet 192.168.1.202 11211
Trying 192.168.1.200...
Connected to 192.168.1.200.
Escape character is ‘^]‘.
get key
VALUE key 33 5
ggggg
END
quit
Connection closed by foreign host.
说明主缓存节点和备缓存节点都有数据。
宕掉主缓存节点。
1)停止memcached进程(或者断开主缓存节点的网卡),
2)客户端查看
[[email protected] ~]# telnet 192.168.1.10 12000
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is ‘^]‘.
get key
VALUE key 33 5
ggggg
END

总结:
memcache的优点:可以做多主或者多从
memcache的缺点:当主缓存节点当掉又恢复,之前的缓存数据会丢失。
使用了 stats 命令来输出 Memcached 服务信息:
这里显示了很多状态信息,下边详细解释每个状态项:
? pid: memcache服务器进程ID
? uptime:服务器已运行秒数
? time:服务器当前Unix时间戳
? version:memcache版本
? pointer_size:操作系统指针大小
? rusage_user:进程累计用户时间
? rusage_system:进程累计系统时间
? curr_connections:当前连接数量
? total_connections:Memcached运行以来连接总数
? connection_structures:Memcached分配的连接结构数量
? cmd_get:get命令请求次数
? cmd_set:set命令请求次数
? cmd_flush:flush命令请求次数
? get_hits:get命令命中次数
? get_misses:get命令未命中次数
? delete_misses:delete命令未命中次数
? delete_hits:delete命令命中次数
? incr_misses:incr命令未命中次数
? incr_hits:incr命令命中次数
? decr_misses:decr命令未命中次数
? decr_hits:decr命令命中次数
? cas_misses:cas命令未命中次数
? cas_hits:cas命令命中次数
? cas_badval:使用擦拭次数
? auth_cmds:认证命令处理的次数
? auth_errors:认证失败数目
? bytes_read:读取总字节数
? bytes_written:发送总字节数
? limit_maxbytes:分配的内存总大小(字节)
? accepting_conns:服务器是否达到过最大连接(0/1)
? listen_disabled_num:失效的监听数
? threads:当前线程数
? conn_yields:连接操作主动放弃数目
? bytes:当前存储占用的字节数
? curr_items:当前存储的数据总数
? total_items:启动以来存储的数据总数
? evictions:LRU释放的对象数目
? reclaimed:已过期的数据条目来存储新数据的数目

以上是关于memcache群集的主要内容,如果未能解决你的问题,请参考以下文章

Memcached群集

Memcached高可用群集

Magent+keepalived+Memcached缓存高可用群集

memcache高群集架构——(实战!)

Memcache高可用群集

Memcached高可用群集(Memcached主主复制+Keepalived)