1. 程式人生 > >Memcached高可用群集(Memcached主主復制+Keepalived)

Memcached高可用群集(Memcached主主復制+Keepalived)

虛擬ip emca nts 數據 分享圖片 process 修改 alt 連接數

案例說明

為解決memcached單點故障,需要實現memcached緩存的高可用。
首先,需要實現Memcached的主主復制,指任意一臺memcached服務器修改數據都會被同步到另外一臺,但是memcached API無法判斷連接哪一臺服務器,因此需要VIP。
其次,通過Keepalived產生的VIP連接memcached服務器,提供高可用架構。

案例拓撲

技術分享圖片

案例環境

主機 IP地址 操作系統 主要軟件
Memcached 1 192.168.37.128 Centos7 libevent;memcached;keepalived;magent
Memcached 1 192.168.37.130 Centos7 libevent;memcached;keepalived

安裝軟件包

鏈接:https://pan.baidu.com/s/1tHnxoldZoX7U0aHnx6GlRg 密碼:vl6l

案例實施

一、主從服務器安裝memcached

1、安裝環境包

yum install gcc gcc-c++ make -y
systemctl stop firewalld.service
setenforce 0

2、解壓libevent、memecached包

tar zxvf libevent-2.1.8-stable.tar.gz -C /opt
tar zxvf memcached-1.5.6.tar.gz -C /opt

3、手工編譯安裝(註意:libevent在先,memcached在後)

cd /opt/libevent-2.1.8-stable/
    ./configure --prefix=/usr
make && make install

cd /opt/memcached-1.5.6/
   ./configure --with-libevent=/usr
make && make install

二、主服務器上安裝magent

1、解壓magent

mkdir /opt/magent
tar zxvf magent-0.5.tar.gz -C /opt/magent/ #代理,從服務器不需裝

2、編輯配置文件

cd /opt/magent
vim ketama.h                 #文件開頭修改
  #ifndef SSIZE_MAX
  #define SSIZE_MAX 32767
  #endif                          #刪除最後那個endif

vim Makefile 
LIBS = -levent -lm         #註意空格 

make                             #安裝magent
ls                                    #查看magent可執行程序

技術分享圖片
3、將magent程序復制到memcached從服務器

yum install openssh-clients -y #安裝推送插件
cp magent /usr/bin/ #將編譯好的magent程序復制到從服務器
scp magent [email protected]:/usr/bin

技術分享圖片

三、主服務器上安裝keepalived

yum install keepalived -y

vim /etc/keepalived/keepalived.conf 

//12行
router_id MAGENT_HA
刪除13-16
//1行下添加
vrrp_script magent {
     script "/opt/shell/magent.sh"
     interval 2                   #時間間隔2s
}
vrrp_instance VI_1 {    
......
interface ens33             #修改
......
track_script {                 #調用-添加 ;註意括號
       magent
}
virtual_ipaddress          #修改
           192.168.37.188
     }                                #定義漂移地址
}                                     #剩余全刪除   

技術分享圖片

四、從服務器上安裝keepalived

yum install keepalived -y
cd /etc/keepalived/
mv keepalived.conf keepalived.conf.bk           #修改配置文件名

scp keepalived.conf [email protected]:/etc/keepalived/    #主服務器上推送
vi keepalived.conf
  router_id MAGENT_HB
  state BACKUP
  virtual_router_id 52
  priority 90

技術分享圖片

五、主從服務器寫入keepalived配置文件加載的腳本

1、創建目錄

mkdir /opt/shell

2、編寫腳本

cd /opt/shell
vim 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.37.188 -p 12000 -s 192.168.37.128:11211 -b 192.168.37.130:11211
else
pkill -9 magent
fi 

-n 51200                   //定義用戶最大連接數
-l 192.168.37.188   //指定虛擬IP
-p 12000                  //指定端口號
-s                              //指定主緩存服務器
-b                             //指定從緩存服務器
chmod +x magent.sh                #添加執行權限

3、主從服務器開啟keepalived服務

systemctl start keepalived.service
netstat -ntap | grep 12000 #開啟較慢,確認magent運行

技術分享圖片

4、確認主從服務器漂移地址生效
//主服務器:
技術分享圖片
//從服務器 :
技術分享圖片

六、主從服務器開啟memecached

//主服務器:

memcached -m 512k -u root -d -l 192.168.37.128 -p 11211
netstat -ntap | grep 11211
yum install telnet -y
telnet 192.168.37.128 11211

技術分享圖片
//從服務器:

memcached -m 512k -u root -d -l 192.168.37.130 -p 11211
netstat -ntap | grep 11211
yum install telnet -y
telnet 192.168.37.130 11211

技術分享圖片

七、客戶端測試

1、連接VIP,寫入數據

yum install telnet -y
telnet 192.168.37.188 12000
add username 0 0 4
1234

技術分享圖片
2、主從服務器可以看到寫入的內容
技術分享圖片
3、斷掉一臺memcached,再次訪問,客戶端仍然可以連接
技術分享圖片

Memcached高可用群集(Memcached主主復制+Keepalived)