Memcached是一套開源的高性能分布式內存對象緩存系統,它將所有的數據都存
儲在內存中,因為在內存中會統一維護一張巨大的Hash表,所以支持任意存儲類型的
數據。很多網站通過使用 Memcached提高網站的訪問速度,尤其是對于大型的需要頻
繁訪問數據的網站。
Memcached是典型的C/S架構,因此需要安裝 Memcached服務端與 Memcached
API客戶端。 Memcached服務端是用C語言編寫的,而 Memcached API客戶端可以用
任何語言來編寫,如PHP、 Python、Perl等,并通過 Memcached協議與 Memcached服
務端進行通信。
Memcached服務器修改數據都會被同步到
另外一臺,但是 Memcached API客戶端是無法判斷連接到哪一臺 Memcached服務
器的,所以需要設置VP地址,提供給 Memcached Apl客戶端進行連接??梢允褂?br/>keepalived產生的VP地址連接主 Memcached服務器,并且提供高可用架構。
因為 Memcached主從復制這種架構,在程序連接主服務
器,在前端加VP地址,實現高可用架構。這里用 Keepalived實現,因而
Keepalived的作用是用來檢測 Memcached服務器的狀態是否正常。
Keepalived不斷檢測 Memcached主服務器的11211端口,如果檢測到 Memcached
服務發生宕機或者死機等情況,就會將VP從主服務器移至從服務器,從而實現
Memcached的高可用性。
一臺主服務器
需要安裝 magent memcached libevent keepalived
一臺從服務器
需要安裝 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 ##主服務器上magent服務需要這個模塊
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 ##方便系統識別命令
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
定義新函數
vrrp_script magent{
script"/opt/shell/magent.sh"
interval 2 ##時間間隔
}
修改vrrp_instance下面
INTERFACE ens33
添加
track_script {
magent
} ## 使用新函數
定義一個虛擬IP
virtual_ipaddress {
192.168.x.x
}
下面多余的部分可以全部刪除
yum install keepalived
從主服務器上把配置腳本復制到從服務器上
scp /etc/keepalived/keepalived.conf root@192.168.x.x.:/etc/keepalived/keepalived.conf
vim /etc/keepalived
router_id MAGENT_HB
state BACKUP ##從服務器
virtual_router_id 52 ##ID不同
priortity 90 ##優先級
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 //定義用戶最大連接數
-l 192.168.x.x //指定虛擬IP
-p 12000 //指定端口號
-s //指定主緩存服務器
-b //指定從緩存服務器
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端口表示服務開啟成功
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端口表示服務開啟成功
在第三臺服務器上安裝 telnet
yum install telnet -y
telnet 192.168.x.x(虛擬IP) 12000
add username 0 0 7
1234567
Stored
quit
## 通過虛擬IP登錄 并創建一個用戶
telnet 192.168.x.x(主/從服務器) 11211
get username
VALUE username 0 7
1234567
END
quit
## 在主從服務器上都能得到這個數據
在主服務器上關掉 memcached
pkill -9 memcached
192.168.x.x(虛擬IP) 12000
add username 0 0 7
1234567
Stored
quit
## 通過虛擬IP 寫入數據
telnet 192.168.x.x(從服務器) 11211
get username
VALUE username 0 7
1234567
END
quit
## 從服務器依然能讀取到
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。