memcache羣集

memcache羣集

開啓四臺虛擬機:都需要裝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:已過期的數據條目來存儲新數據的數目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章