部署Memcached+magent+keepalived高可用集群
阿新 • • 發佈:2018-07-25
img 安裝配置 zxvf 執行文件 fad openssh 編譯 寫入 rac Memcached+magent+keepalived高可用集群
magent是一款開源的代理服務軟件,我們可以通過他來實現緩存數據的同步,當然這裏說的同步不是說memcached之間就能互相通訊了, 而magent可以同時連接多個memcached節點, 通過magent綁定的VIP從客戶端登錄memcached寫入數據,其他節點的memcached數據也會同步。
?
- 案例環境
主機名稱 | IP | 主要軟件 |
---|---|---|
memcached主 | 192.168.200.128 | Magent、memcached、libevent、keeplived |
memcached從 | 192.168.200.129 | memcached、libevent、keeplived |
客戶端 | 192.168.200.130 | telnet 測試 |
VIP | 192.168.200.200 |
?
-
配置memcached主、從緩存節點 -兩臺配置相同
# tar xf memcached-1.5.6.tar.gz -C /opt/ # tar xf libevent-2.1.8-stable.tar.gz -C /opt/ # yum install gcc gcc-c++ make -y # cd /opt/libevent-2.1.8-stable # ./configure --prefix=/usr/local/libevent # make && make install # cd /opt/memcached-1.5.6 # ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ # make && make install # ln -s /usr/local/memcached/bin/* /usr/local/bin/
- 將安裝libevent-2.1.so.6的模塊復制到 /usr/lib64目錄下
-
否則在啟動Magent時會出錯
# ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
?
- 在主服務器安裝Magent
-
主服務器
# mkdir /opt/magent # tar zxvf magent-0.5.tar.gz -C /opt/magent # cd /opt/magent
-
編譯安裝前需要修改文件 否則會報錯
# vi ketama.h //修改下面3行 #ifndef SSIZE_MAX #define SSIZE_MAX 32767 #endif # vi Makefile //添加路徑 LIBS = -levent -lm -L/usr/local/libevent/lib INCLUDE=-I/usr/local/libevent/include # make
- 編譯後會生成一個可執行文件
# cp magent /usr/bin/ //把生成的mgent程序讓系統識別
?
?
- 從服務器
-
從服務器不裝 直接拷貝過去
# yum install openssh-clients //安裝遠程連接工具 # scp magent [email protected]:/usr/bin/ //把產生的magent文件直接復制到從服務器。
?
- 在主從服務器上安裝配置keepalived
-
配置不同出已經標註
# yum install keepalived -y # vi /etc/keepalived/keepalived.conf router_id MAGENT_HA //主從不同 自定義 下面刪除4行 } //調用這個腳本每2秒檢查一次magent狀態 vrrp_script magent { script "/opt/shell/magent.sh" interval 2 } vrrp_instance VI_1 { state MASTER // 從服務器這裏是BACKUP interface ens33 virtual_router_id 51 //虛擬路由ID ,主從相同 priority 100 //優先級 從要小於主 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { //調用上面定義的腳本 magent } virtual_ipaddress { //定義虛擬IP 192.168.200.200 } }
- 主服務器上
-
寫magent.sh 腳本
# mkdir -p /opt/shell/ # cd /opt/shell/ # vi 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.200.200 -p 12000 -s 192.168.200.128:11211 -b 192.168.200.129:11211 else pkill -9 magent fi
-
腳本選項解釋
-n 51200 //定義用戶最大連接數 -l //指定虛擬IP -p 12000 //指定端口號 -s //指定主緩存服務器 -b //指定從緩存服務器 # chmod +x magent.sh # systemctl start keepalived.service # ip addr //查看VIP
?
- 從服務器上
-
寫magent.sh 腳本
# mkdir -p /opt/shell/ # cd /opt/shell/ # vi magent.sh #!/bin/bash K=`ip addr | grep 192.168.200.200 | grep -v grep | wc -l` if [ $K -gt 0 ]; then magent -u root -n 51200 -l 192.168.200.200 -p 12000 -s 192.168.200.128:11211 -b 192.168.200.129:11211 else pkill -9 magent fi
# chmod +x magent.sh # systemctl start keepalived.service
?
-
在兩臺服務器上啟動memcached
# memcached -d -m 32m -p 11211 -u root
?
- 在客戶端測試
- 測試數據同步
-
測試keepalived主從熱備份( 將主節點宕機,在從節點上查看VIP,VIP已經漂移過來了)
# yum install telnet -y # telnet 192.168.200.200 12000
部署Memcached+magent+keepalived高可用集群