Centos7 下實現 memcached + keepalived 高可用群集
阿新 • • 發佈:2018-07-25
緩存服務 支持 pad mkdir .so check def shel 安裝 memcached + keepalived 高可用群集
務端進行通信。
Keepalived不斷檢測 Memcached主服務器的11211端口,如果檢測到 Memcached
服務發生宕機或者死機等情況,就會將VP從主服務器移至從服務器,從而實現
Memcached的高可用性。
memcached介紹
Memcached是一套開源的高性能分布式內存對象緩存系統,它將所有的數據都存
儲在內存中,因為在內存中會統一維護一張巨大的Hash表,所以支持任意存儲類型的
數據。很多網站通過使用 Memcached提高網站的訪問速度,尤其是對於大型的需要頻
繁訪問數據的網站。
Memcached是典型的C/S架構,因此需要安裝 Memcached服務端與 Memcached
API客戶端。 Memcached服務端是用C語言編寫的,而 Memcached API客戶端可以用
任何語言來編寫,如PHP、 Python、Perl等,並通過 Memcached協議與 Memcached服
memcached主主復制+keepalived高可用框架介紹
Memcached服務器修改數據都會被同步到
另外一臺,但是 Memcached API客戶端是無法判斷連接到哪一臺 Memcached服務
器的,所以需要設置VP地址,提供給 Memcached Apl客戶端進行連接。可以使用
keepalived產生的VP地址連接主 Memcached服務器,並且提供高可用架構。
因為 Memcached主主復制這種架構,在程序連接時不知道應該連接哪個主服務
器,所以需要在前端加VP地址,實現高可用架構。這裏用 Keepalived實現,因而
Keepalived的作用是用來檢測 Memcached服務器的狀態是否正常。
服務發生宕機或者死機等情況,就會將VP從主服務器移至從服務器,從而實現
Memcached的高可用性。
實驗準備
一臺主服務器
需要安裝 magent memcached libevent keepalived
一臺從服務器
需要安裝 memcached libevent keepalived
實驗步驟
在主服務器和從服務器上安裝memcached 和 libevent
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服務需要這個模塊
在主服務器上安裝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 ##方便系統識別命令
在主服務器上把magent 復制到從服務器上
yum install openssh-clients
scp magent [email protected]:/usr/bin
在主服務器上安裝keepalived
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
}
下面多余的部分可以全部刪除
在從服務器上安裝keepalived
yum install keepalived
從主服務器上把配置腳本復制到從服務器上
scp /etc/keepalived/keepalived.conf [email protected].:/etc/keepalived/keepalived.conf
vim /etc/keepalived
router_id MAGENT_HB
state BACKUP ##從服務器
virtual_router_id 52 ##ID不同
priortity 90 ##優先級
在主服務器上配置 magent腳本
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.175.188 //指定虛擬IP
-p 12000 //指定端口號
-s //指定主緩存服務器
-b //指定從緩存服務器
chmod +x magent.sh
在從服務器上配置 magent腳本
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
主從服務器開啟keepalived服務
systemctl start keepalived.service
netstat -ntap |grep 12000
如果有12000端口表示服務開啟成功
登錄memcached服務器
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
## 從服務器依然能讀取到
至此 memcached+keepalived 高可用群集完成
Centos7 下實現 memcached + keepalived 高可用群集