Memcached主從複製是指在主Mencached服務器上修改數據都會被同步到其餘服務器上,MemcachedAPI客戶端是沒法判斷鏈接到那一臺Memcached服務器,因此須要VIP地址,提供給MemcachedAPI客戶端進行鏈接。能夠使用keepaived產生的VIP地址鏈接主Memcached服務器來完成,而且提供高可用架構。linux
服務器 | IP地址的 | 主要軟件 |
---|---|---|
主Memcached | 192.168.100.21 | libevent、memcached、magent、keepalived |
從Memcached | 192.168.100.22 | libevent、memcached、magent |
Client | 192.168.100.23 | telnet |
安裝環境包c++
yum -y install gcc gcc-c++ make
解壓軟件包shell
tar zxf memcached-1.5.9.tar.gz -C /opt/ tar zxf libevent-2.1.8-stable.tar.gz -C /opt/
編譯安裝libeventvim
cd libevent-2.1.8-stable/ ./configure --prefix=/usr/ make && make install
編譯安裝memcached緩存
cd memcached-1.5.9/ ./configure --with-libevent=/usr make && make install 優化啓動 ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 //memcached自帶有複製功能,若是不創建軟鏈接,則啓動會失敗
在主服務器上安裝magentbash
magent是一個memcached代理軟件,防止單點故障,緩存代理也能夠着備份服務器
cd /opt/magent vim ketama.h //修改文件 #ifndef SSIZE_MAX //修改 #define SSIZE_MAX 32767 //修改 #endif //末行也有一行#ndif,刪除 vi Makefile //修改文件 LIBS = -levent -lm //此處爲lm,不是一 make //編譯完成以後會生成一個magent可執行文件
讓服務便於系統識別架構
cp /opt/magent/magent /usr/bin/ scp /opt/magent/magent root@192.168.100.22:/usr/bin/ //發送到從服務器上 主從服務器安裝keepalived yum -y install keepalived
修改主從服務器配置文件ide
vim/etc/keepalived/keepalived.cof ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id MAGENT_HA //自定義不要和從服務器同樣就OK } vrrp_script magent { script "/opt/shell/magent.sh" //定義一個函數,此時該腳本還未建立,要在實例外面定義 interval 2 } vrrp_instance VI_1 { state MASTER //MASTER (主)BACKUP(從) interface ens33 //網卡 virtual_router_id 51 //組號 priority 100 //優先級 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { magent //應用函數 } virtual_ipaddress { 192.168.100.100 #虛擬出來了VIP } }
寫主服務器shell腳本memcached
#!/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.100.100 -p 12000 -s 192.186.100.21:11211 -b 192.168.100.22:11211 else pkill -9 magent fi ##參數解釋 -n 51200 #定義用戶最大鏈接數 -l 192.168.175.188 #指定虛擬IP -p 12000 #指定端口號 -s #指定主緩存服務器 -b #指定從緩存服務器 chmod +x magent.sh #增長可執行權限
寫從服務器腳本
make /opt/shell vim magent.sh #!/bin/bash K=`ip addr | grep 192.168.100.100 | grep -v grep | wc -l` if [ $K -gt 0 ]; then magent -u root -n 51200 -l 192.168.100.100 -p 12000 -s 192.168.100.21:11211 -b 192.168.100.22:11211 else pkill -9 magent fi chmod +x magent.sh //增長可執行權限
關閉主從服務器防火牆及selinux
systemctl stop firewalld.service setenforce 0
開啓主從服務器上keepalived
systemctl start keepalived.service netstat -ntap | grep 12000 //端口開啓可能有點延遲,稍做等待 ipa ddr //查看主服務器上是否綁定VIP
主從服務器上開啓memcached
memcached -m 512k -u root -d -l 192.168.100.21 -p 11211 //主服務器 memcached -m 512k -u root -d -l 192.168.100.22 -p 11211 //從服務器 netstat -ntap | grep 11211
客戶端測試
測試連通性 yum -y install telnet telnet 192.168.100.100 12000 //採用VIP鏈接
測試單點故障
systemctl stop keepalived.service //關閉主服務器keepalived服務 ipaddr //查看VIP是否漂移到從服務器上