开启四台虚拟机:都需要装libevent软件
[root@localhost ~]# tar zxf libevent-2.0.22-stable.tar.gz [root@localhost ~]# cd libevent-2.0.22-stable/ [root@localhost libevent-2.0.22-stable]# ./configure && make && make install 安装memcached软件(Memcached服务器 2台)
[root@localhost ~]# tar -zxvf memcached-1.4.31.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/memcached-1.4.31/ [root@localhost memcached-1.4.31]# ./configure --enable-memcache --with-libevent=/usr/ [root@localhost memcached-1.4.31]# make && make install 主缓存: [root@localhost ~]# memcached -d -m 1024 -u root -l 192.168.1.201 -p 11211 备缓存: [root@localhost ~]# memcached -d -m 1024 -u root -l 192.168.1.202 -p 11211 [root@localhost ~]# netstat -anpt | grep memcached 3、安装magent 软件(Magent 服务器 2台) [root@localhost ~]# mkdir /usr/magent [root@localhost ~]# tar -zxvf magent-0.6.tar.gz -C /usr/magent/ [root@localhost ~]# cd /usr/magent/ [root@localhost magent]# vim ketama.h 添加(头部添加): #ifndef SSIZE_MAX #define SSIZE_MAX 32767 #endif [root@localhost magent]# ln -s /usr/lib64/libm.so /usr/lib64/libm.a [root@localhost magent]# ln -s /usr/lib64/libevent-2.0.so.5 /usr/lib64/libevent.a 无法make的时候需要安装libevent-2.0.so.5 [root@localhost magent]# /sbin/ldconfig [root@localhost magent]# sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile [root@localhost magent]# make [root@localhost magent]# cp magent /usr/bin/ 主缓存和备缓存一样的启动命令(-l 是漂移IP 还没有搭建Keepalived服务 暂时不要启动Magent服务) [root@localhost ~]# magent -u root -n 51200 -l 192.168.1.10 -p 12000 -s 192.168.1.201:11211 -b 192.168.1.202:11211 [root@localhost ~]# 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 地址和端口 [root@localhost ~]# ps -elf | grep magent 4、安装keepalived 软件(Magent 服务器 2台) [root@localhost ~]# yum -y install kernel-devel openssl-devel popt-devel [root@localhost ~]# tar -zxvf keepalived-1.3.9.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/ keepalived-1.3.9/ [root@localhost keepalived-1.3.9]# ./configure --prefix=/ && make && make install [root@localhost keepalived-1.3.9]# cp keepalived/etc/init.d/keepalived /etc/init.d/ [root@localhost keepalived-1.3.9]# chkconfig --add keepalived [root@localhost keepalived-1.3.9]# chkconfig keepalived on 配置主缓存服务器 [root@localhost ~]# 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 } } [root@localhost ~]# service keepalived restart [root@localhost ~]# ip add show dev eno16777736 配置备缓存服务器 [root@localhost ~]# 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 } ---其他参数与主缓存服务器保持一致---- } [root@localhost ~]# service keepalived restart [root@localhost ~]# ip add show dev eno16777736 验证: 客户端ping 192.168.1.10 查看VIP的变化情况。 5、验证: 1)用主缓存节点连接上主缓存的1200端口插入数据 [root@localhost ~]# 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)查看插入的数据 [root@localhost ~]# 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端口进行查看 [root@localhost ~]# 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端口进行查看 [root@localhost ~]# 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)客户端查看 [root@localhost ~]# 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:已过期的数据条目来存储新数据的数目