? ? ? ?Memcached是一款高性能的分布式內存緩存系統,常用于加速動態Web應用的響應。本文將在CentOS 7上詳細介紹Memcached的安裝、配置,以及如何實現Memcached的高可用架構。
(1)、搭建memcached 主主復制架構
Memcached 的復制功能支持多個 Memcached 之間相互復制(雙向復制,主備都是可讀可寫的),可以解決 Memcached 的容災問題。
memcached 本身不支持相互復制,需要卸載rpm 安裝的memcached ,換帶有支持復制功能的
memcached;
yum -y remove memcached
(2)、環境準備
假設有兩臺服務器用于 Memcached 主主復制,分別為 Server A(10.1.1.7)和 ServerB(10.1.1.12)。確保兩臺服務器都運行 CentOS 7 系統,并且網絡可以正常通信。
(3)、安裝依賴
在兩臺服務器上都執行以下命令安裝編譯所需的依賴:
yum install -y gcc make libevent-devel
(4)、下載并安裝支持復制的 Memcached(repcached)
repcached 是實現 Memcached 復制功能的擴展,以下是安裝步驟:
1. 下載 repcached
如果上述鏈接不可用,你可以在 SourceForge 等網站上查找合適的版本。
wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz
- 解壓文件
tar -xzvf memcached-1.2.8-repcached-2.2.tar.gz
cd memcached-1.2.8-repcached-2.2
- 配置編譯選項
./configure --prefix=/usr/local/memcached --enable-replication --with- libevent=/usr/lib6/
- 編譯并安裝
make
make install
編譯過程中報錯處理:
修改完文件,執行如下命令:
vi memcached.c //改成如下樣子,刪了兩行內容
55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 # define IOV_MAX 1024
58 #endif
?vim replication.c??//修改添加一行
make clean
make &&make install
(5)、配置主主復制
1. 啟動 Server A 的 Memcached
?useradd memcached
?cd /usr/local/memcached/bin
?./memcached -d -u memcached -m 64 -l 10.1.1.7 -p 11211 -x 10.1.1.22
參數說明:
-d :以守護進程模式運行。
-u root :以 root 用戶身份運行。
-m 64 :分配 64MB 內存給 Memcached。
-l 192.168.1.10 :監聽的 IP 地址。
-p 11211 :監聽的端口。
-x 192.168.1.11 :指定要同步數據的對端服務器 IP。
2. 啟動 Server B 的 Memcached
參數含義與 Server A 類似,只是監聽 IP 和同步對端 IP 相反。
cd /usr/local/memcached/bin
?./memcached -d -u memcached -m 64 -l 10.1.1.22?-p 11211 -x 10.1.1.7
(6)驗證主主復制
1. 在 Server A 插入數據
- 在 Server B 驗證數據
如果能獲取到在 Server A 上插入的數據,說明主主復制配置成功。同理,在 Server B 上插入數據,也應該能在 Server A 上獲取到。
搭建memcached 主主復制+keepalived 高可用
- 在兩個節點上都安裝keepalived
yum -y install keepalived ipvsadm
- 在10.1.1.7?上的配置
Vi?/etc/keepalived/keepalived.conf
vrrp_script chk_memcached {
script "/usr/bin/pgrep memcached"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.x.x.x
}
track_script {
chk_memcached
}
}
[root@gyh keepalived]#
在10.1.1.22上,僅修改state和priority
state BACKUP
priority 90
- 啟動keepalived
systemctl start keepalived
systemctl enable keepalived
(4) 測試故障切換
手動停止memcached: 在 10.1.1.7(master)
pkill -9 memcached
觀察vip 飄逸
ip addr show ens33