您好,登錄后才能下訂單哦!
Memcached是一套開源的高性能分布式內(nèi)存對象緩存系統(tǒng),它將所有的數(shù)據(jù)都存
儲在內(nèi)存中,因為在內(nèi)存中會統(tǒng)一維護一張巨大的Hash表,所以支持任意存儲類型的
數(shù)據(jù)。很多網(wǎng)站通過使用 Memcached提高網(wǎng)站的訪問速度,尤其是對于大型的需要頻
繁訪問數(shù)據(jù)的網(wǎng)站。
Memcached是典型的C/S架構(gòu),因此需要安裝 Memcached服務(wù)端與 Memcached
API客戶端。 Memcached服務(wù)端是用C語言編寫的,而 Memcached API客戶端可以用
任何語言來編寫,如PHP、 Python、Perl等,并通過 Memcached協(xié)議與 Memcached服
務(wù)端進行通信。
Memcached服務(wù)器修改數(shù)據(jù)都會被同步到
另外一臺,但是 Memcached API客戶端是無法判斷連接到哪一臺 Memcached服務(wù)
器的,所以需要設(shè)置VP地址,提供給 Memcached Apl客戶端進行連接??梢允褂?br/>keepalived產(chǎn)生的VP地址連接主 Memcached服務(wù)器,并且提供高可用架構(gòu)。
因為 Memcached主從復(fù)制這種架構(gòu),在程序連接主服務(wù)
器,在前端加VP地址,實現(xiàn)高可用架構(gòu)。這里用 Keepalived實現(xiàn),因而
Keepalived的作用是用來檢測 Memcached服務(wù)器的狀態(tài)是否正常。
Keepalived不斷檢測 Memcached主服務(wù)器的11211端口,如果檢測到 Memcached
服務(wù)發(fā)生宕機或者死機等情況,就會將VP從主服務(wù)器移至從服務(wù)器,從而實現(xiàn)
Memcached的高可用性。
一臺主服務(wù)器
需要安裝 magent memcached libevent keepalived
一臺從服務(wù)器
需要安裝 memcached libevent keepalived
tar xzvf memcached-1.5.6.tar.gz
tar xzvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8
./configure --prefix=/usr ##指定安裝路徑
make && make install
cd 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ù)需要這個模塊
mkdir /magent
tar xzvf magent-0.5.tar.gz
cd /magent
vim ketama.h
修改
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
vim Makefile
LIBS = -levent -lm
make
cp magent /usr/bin ##方便系統(tǒng)識別命令
yum install openssh-clients
scp magent root@192.168.x.x:/usr/bin
vim /etc/keepalived/keepalived.conf
router—_id MAGENT_HA
刪除
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
定義新函數(shù)
vrrp_script magent{
script"/opt/shell/magent.sh"
interval 2 ##時間間隔
}
修改vrrp_instance下面
INTERFACE ens33
添加
track_script {
magent
} ## 使用新函數(shù)
定義一個虛擬IP
virtual_ipaddress {
192.168.x.x
}
下面多余的部分可以全部刪除
yum install keepalived
從主服務(wù)器上把配置腳本復(fù)制到從服務(wù)器上
scp /etc/keepalived/keepalived.conf root@192.168.x.x.:/etc/keepalived/keepalived.conf
vim /etc/keepalived
router_id MAGENT_HB
state BACKUP ##從服務(wù)器
virtual_router_id 52 ##ID不同
priortity 90 ##優(yōu)先級
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.x.x -p 12000 -s 192.168.x.x:11211 -b 192.168.x.x:11211
else
pkill -9 magent
fi
-n 51200 //定義用戶最大連接數(shù)
-l 192.168.x.x //指定虛擬IP
-p 12000 //指定端口號
-s //指定主緩存服務(wù)器
-b //指定從緩存服務(wù)器
chmod +x magent.sh
mkdir /opt/shell
vim /opt/shell/magent.sh
#!/bin/bash
K=`ip addr | grep 192.168.x.x(虛擬IP) | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 192.168.x.x -p 12000 -s 192.168.x.x:11211 -b 192.168.x.x:11211
else
pkill -9 magent
fi
chmod +x magent.sh
systemctl start keepalived.service
netstat -ntap |grep 12000
如果有12000端口表示服務(wù)開啟成功
memcached -m 512k -u root -d -l 192.168.xx 主 -p 11211
memcached -m 512k -u root -d -l 192.168.x.x 從 -p 11211
netstat -ntap |grep 11211
有11211端口表示服務(wù)開啟成功
在第三臺服務(wù)器上安裝 telnet
yum install telnet -y
telnet 192.168.x.x(虛擬IP) 12000
add username 0 0 7
1234567
Stored
quit
## 通過虛擬IP登錄 并創(chuàng)建一個用戶
telnet 192.168.x.x(主/從服務(wù)器) 11211
get username
VALUE username 0 7
1234567
END
quit
## 在主從服務(wù)器上都能得到這個數(shù)據(jù)
在主服務(wù)器上關(guān)掉 memcached
pkill -9 memcached
192.168.x.x(虛擬IP) 12000
add username 0 0 7
1234567
Stored
quit
## 通過虛擬IP 寫入數(shù)據(jù)
telnet 192.168.x.x(從服務(wù)器) 11211
get username
VALUE username 0 7
1234567
END
quit
## 從服務(wù)器依然能讀取到
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。