Memcached 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載。它通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)的次數(shù),從而提高動(dòng)態(tài)、數(shù)據(jù)庫(kù)驅(qū)動(dòng)網(wǎng)站的速度。Memcached基于一個(gè)存儲(chǔ)鍵/值對(duì)的hashmap。其守護(hù)進(jìn)程(daemon )是用C寫(xiě)的,但是客戶(hù)端可以用任何語(yǔ)言來(lái)編寫(xiě),并通過(guò)memcached協(xié)議與守護(hù)進(jìn)程通信。
目前成都創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、江川網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
主機(jī)名稱(chēng) | IP地址 | 主要服務(wù)軟件 |
---|---|---|
memcached主服務(wù)器 | 172.16.10.138 | memcached,libevent,magent,keepalived |
memcached從服務(wù)器 | 172.16.10.137 | memcached,libevent,keepalived |
客戶(hù)端 | 172.16.10.134 | telnet測(cè)試 |
tar xf libevent-2.1.8-stable.tar.gz -C /opt
tar xf memcached-1.5.6.tar.gz -C /opt
tar xf magent-0.5.tar.gz -C /opt
cd /opt/libevent-2.1.8
./configure --prefix=/usr #指定安裝路徑
make && make install #編譯安裝
cd /opt/memcached-1.5.6
./configure --with-libevent=/usr #指定安裝路徑
make && make install #編譯安裝
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 #主服務(wù)器上magent服務(wù)需要這個(gè)模塊
cd /opt/magent
vim ketama.h
#ifndef SSIZE_MAX #修改
#define SSIZE_MAX 32767 #修改
#endif
vim Makefile
LIBS = -levent -lm #修改,添加-lm
make
cp mgent /usr/bin #把生成的mgent程序讓系統(tǒng)識(shí)別
- 配置memcached從緩存節(jié)點(diǎn)服務(wù)器
tar xzvf memcached-1.5.6.tar.gz -C /opt
tar xzvf libevent-2.1.8-stable.tar.gz -C /opt
cd /opt/libevent-2.1.8
./configure --prefix=/usr
make && make install
cd /opt/memcached-1.5.6
./configure --with-libevent=/usr
make && make i nstall
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 #主服務(wù)器上magent服務(wù)需要這個(gè)模塊
yum install openssh-clients
scp magent root@172.16.10.137:/usr/bin/ //把產(chǎn)生的magent文件直接復(fù)制到從服務(wù)器。
yum -y install keepalived
vim /etc/keepalived/keepalived.conf
router_id MAGENT_HA #router_id主從不能相同,要修改
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2
} #定義一個(gè)新函數(shù),每2s自動(dòng)執(zhí)行這個(gè)腳本
vrrp_instance VI_1 {
state MASTER #這邊是主服務(wù)器,從服務(wù)器是BACKUP interface ens33 #網(wǎng)卡接口是ens33
virtual_router_id 51
priority 100 #優(yōu)先級(jí),從服務(wù)器小于主服務(wù)器 advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
magent #觸發(fā)執(zhí)行magent腳本
}
virtual_ipaddress {
172.16.10.200 #虛擬IP(vip)
}
}
將下面多余的配置全部刪除
yum -y install keepalived
vim /etc/keepalived/keepalived.conf
router_id MAGENT_HB #router_id主從不相同
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2
} #定義一個(gè)新函數(shù),每2s自動(dòng)執(zhí)行這個(gè)腳本
vrrp_instance VI_1 {
state MASTER #這邊是從服務(wù)器,是BACKUP
interface ens33 #網(wǎng)卡接口是ens33
virtual_router_id 51
priority 90 #優(yōu)先級(jí),從服務(wù)器小于主服務(wù)器
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
magent #觸發(fā)執(zhí)行magent腳本
}
virtual_ipaddress {
172.16.10.200 #虛擬IP(vip)
}
}
將下面多余的配置全部刪除
mkdir /opt/shell
vim /opt/shell/magent.sh
#!/bin/bash
K=`ps -ef | grep keepalived | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 192.168.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211
else
pkill -9 magent
fi
-n 51200 #定義用戶(hù)最大連接數(shù)
-l 192.168.58.100 #指定虛擬IP
-p 12000 #指定端口號(hào)
-s #指定主緩存服務(wù)器
-b #指定從緩存服務(wù)器
#這個(gè)腳本意思就是一旦檢測(cè)到系統(tǒng)進(jìn)程中有keepalived進(jìn)程,就執(zhí)行magent這條命令,如果沒(méi)有,則將magent進(jìn)程殺死??偟脕?lái)說(shuō)就是,主服務(wù)器上沒(méi)有keepslived進(jìn)程,magent就會(huì)和從服務(wù)器連接。
chmod +x /opt/shell/magent.sh
#給腳本添加執(zhí)行權(quán)限
mkdir -p /opt/shell
vim /opt/shell/magent.sh
#!/bin/bash
K=`ip addr | grep 192.168.58.100 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 192.168.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211
else
pkill -9 magent
fi
#從服務(wù)器的腳本意思就是檢測(cè)到虛擬ip漂移是否到自己身上,如果VIP進(jìn)行漂移到從服務(wù)器之后,就會(huì)執(zhí)行magent這條命令,目的就是在主服務(wù)器宕掉的時(shí)候,從服務(wù)器能夠正常啟動(dòng)。
首先使用客戶(hù)機(jī)安裝telnet,遠(yuǎn)程連接VIP節(jié)點(diǎn),寫(xiě)入用戶(hù)之后,主從緩存服務(wù)器會(huì)自動(dòng)獲取下載該用戶(hù)。