溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Centos7 下實現(xiàn) memcached + keepalived 高可用群集

發(fā)布時間:2020-07-13 02:59:48 來源:網(wǎng)絡(luò) 閱讀:630 作者:Cher1shDan 欄目:數(shù)據(jù)庫

memcached + keepalived 高可用群集

memcached介紹

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主從復(fù)制+keepalived高可用框架介紹

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

實驗步驟

在主服務(wù)器和從服務(wù)器上安裝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    ##主服務(wù)器上magent服務(wù)需要這個模塊

在主服務(wù)器上安裝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   ##方便系統(tǒng)識別命令

在主服務(wù)器上把magent 復(fù)制到從服務(wù)器上

yum install openssh-clients
scp magent root@192.168.x.x:/usr/bin

在主服務(wù)器上安裝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

定義新函數(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
    }

下面多余的部分可以全部刪除

在從服務(wù)器上安裝keepalived

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)先級

在主服務(wù)器上配置 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 //定義用戶最大連接數(shù)
-l 192.168.x.x //指定虛擬IP
-p 12000  //指定端口號
-s //指定主緩存服務(wù)器
-b //指定從緩存服務(wù)器

chmod +x magent.sh

在從服務(wù)器上配置 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

主從服務(wù)器開啟keepalived服務(wù)

systemctl start keepalived.service

netstat -ntap |grep 12000

如果有12000端口表示服務(wù)開啟成功

登錄memcached服務(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ù)器依然能讀取到

至此 memcached+keepalived 高可用群集完成

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI