文章目錄
-
- 一、前言:
- 二、架構部署:
-
- 第一步:配置 memcache 主緩存節點和從緩存節點(兩台伺服器配置相同)
- 第二步:部署主伺服器 ----- 安裝 magent代理,從伺服器不需要
- 第三步:在主從伺服器上都安裝 keepalived,并部署
- 第四步:配置主、從伺服器腳本
- 第五步:啟動主 、從伺服器
- 第六步:客戶機測試
一、前言:
magent是一款開源的代理服務軟體,我們可以通過它來實作緩存資料的同步,當然這裡說的同步不是說memcached之間就能互相通訊了, 而magent可以同時連接配接多個memcached節點, 通過magent綁定的VIP從用戶端登入memcached寫入資料,其他節點的memcached資料也會同步。
二、架構部署:
環境說明:
角色 | 需要安裝的軟體包 |
---|---|
memcached主(IP位址:192.168.220.137) | magent 、memcached 、libevent 、keeplived |
memcached從(IP位址:192.168.220.135) | memcached 、 libevent 、keeplived |
用戶端(IP位址:192.168.220.131) | telnet 測試工具 |
虛拟ip(192.168.220.100) |
第一步:配置 memcache 主緩存節點和從緩存節點(兩台伺服器配置相同)
1、安裝依賴包:
yum install gcc gcc-c++ make -y
2、解壓軟體包:
1、tar zxvf memcached-1.5.6.tar.gz -C /opt/
2、tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/
3、mkdir /opt/magent
tar zxvf magent-0.5.tar.gz -C /opt/magent/
3、編譯和安裝:
1、
cd /opt/libevent-2.1.8-stable
./configure --prefix=/usr/
make && make install
2、
cd /opt/memcached-1.5.6
./configure \
--with-libevent=/usr
make && make install
4、建立軟連接配接:
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
第二步:部署主伺服器 ----- 安裝 magent代理,從伺服器不需要
1、cd /opt/magent
vim ketama.h
在開頭處增減以下代碼:
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3ATMzQTM0YTMxEjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
vim Makefile
LIBS = -levent -lm //加上 -lm
2、修改完成後 make 編譯
3、此時,make完成後,就會産生 magent可執行程式
4、将這個 magent 程式複制到path環境變量中
5、可以将安裝好的 magent 複制到從伺服器,這樣從伺服器就不需要再配置了
yum install openssh-clients -y //安裝工具包
scp magent [email protected].168.220.135:/usr/bin/
第三步:在主從伺服器上都安裝 keepalived,并部署
(1)主伺服器:
yum install keepalived -y //安裝keepalived
修改配置檔案:
vim /etc/keepalived/keepalived.conf
//定義一個函數,建議寫在最前面
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2
}
做如下修改:
router_id MAGENT_HA //修改id名
interface ens33 //修改網卡資訊
virtual_ipaddress {
192.168.220.100 //定義好虛拟ip位址
}
vrrp_instance VI_1 {
.....
//調用函數.以下三行代碼寫在vrrp子產品内
track_script {
magent
}
.....
}
(2)從伺服器:
vim /etc/keepalived/keepalived.conf
做如下修改:
router_id MAGENT_HB //id名和第一台要不一樣
state BACKUP //從伺服器
virtual_router_id 52 //id号和第一台不一樣
priority 90 //優先級低與主伺服器
第四步:配置主、從伺服器腳本
(1)建立一個腳本:
mkdir /opt/shell
(2)編寫:
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.220.100 -p 12000 -s 192.168.220.137:11211 -b 192.168.220.135:11211
else
pkill -9 magent
fi
//
-n 51200 //定義使用者最大連接配接數
-l 192.168.220.100 //指定虛拟IP
-p 12000 //指定端口号
-s //指定主緩存伺服器
-b //指定從緩存伺服器
(3)給腳本添加一個執行權限:
chmod +x magent.sh
systemctl stop firewalld.service //必須關閉否則magent不啟動
setenforce 0
(4)開啟 keepalived 服務
systemctl start keepalived.service
netstat -anpt | grep 12000 //确認magent運作,端口正常運作
(5)驗證主從 :
1、主伺服器 ----- 檢視 /var/log/messages 檔案,找到關鍵詞:Transition to MASTER STATE
2、從伺服器 ----- 找到關鍵詞:Entering BACKUP STATE
(6) ip addr 指令 ----- 确定漂移位址生效:
第五步:啟動主 、從伺服器
(1)啟動主伺服器:
memcached -m 512k -u root -d -l 192.168.220.137 -p 11211
(2)啟動從伺服器:
memcached -m 512k -u root -d -l 192.168.220.135 -p 11211
(3)檢視端口是否正常開啟:
netstat -anptu | grep 11211
第六步:客戶機測試
先安裝 Telnet 工具:
yum install telnet -y
測試:
1、使用漂移位址登入連接配接:
telnet 192.168.220.100 12000
2、我們在客戶機上操作,寫入一個資料,同時觀察主、從伺服器上是否會同步生成:
(1)主伺服器:
(2)從伺服器:
3、雙機熱備:
(1)停掉主伺服器:
systemctl stop keepalived.service
(2)客戶機依舊可以連接配接: