您好,登錄后才能下訂單哦!
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客戶端進行連接。可以使用
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。