Memcached+magent實現主從同步 +keepalived高可用羣集

Memcached+magent實現主從同步 +keepalived高可用羣集

簡介

Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護進程通信。

實驗部署

主機名稱 IP地址 主要服務軟件
memcached主服務器 172.16.10.138 memcached,libevent,magent,keepalived
memcached從服務器 172.16.10.137 memcached,libevent,keepalived
客戶端 172.16.10.134 telnet測試
  • 配置memcached主緩存節點服務器
tar xf libevent-2.1.8-stable.tar.gz -C /opt
tar xf memcached-1.5.6.tar.gz -C /opt
tar xf magent-0.5.tar.gz -C /opt

cd /opt/libevent-2.1.8
./configure --prefix=/usr   #指定安裝路徑
make && make install    #編譯安裝

cd /opt/memcached-1.5.6
./configure --with-libevent=/usr      #指定安裝路徑
make && make install               #編譯安裝

ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6     #主服務器上magent服務需要這個模塊

cd /opt/magent

vim ketama.h 
#ifndef SSIZE_MAX                        #修改
#define SSIZE_MAX 32767             #修改   
#endif

vim Makefile
LIBS = -levent -lm                      #修改,添加-lm

 make 

cp mgent /usr/bin #把生成的mgent程序讓系統識別

  • 配置memcached從緩存節點服務器
tar xzvf memcached-1.5.6.tar.gz -C /opt
tar xzvf libevent-2.1.8-stable.tar.gz -C /opt

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

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

ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6    #主服務器上magent服務需要這個模塊
  • 主服務器將magent文件複製到從服務器

yum install openssh-clients

scp magent [email protected]:/usr/bin/ //把產生的magent文件直接複製到從服務器。

  • 主服務器安裝keepalived服務,修改配置文件

yum -y install keepalived

vim /etc/keepalived/keepalived.conf

router_id MAGENT_HA                                #router_id主從不能相同,要修改

vrrp_script magent {
    script "/opt/shell/magent.sh"
    interval 2   
       }        #定義一個新函數,每2s自動執行這個腳本                        

vrrp_instance VI_1 {
state MASTER  #這邊是主服務器,從服務器是BACKUP      interface ens33   #網卡接口是ens33                          
virtual_router_id 51                              
priority 100    #優先級,從服務器小於主服務器         advert_int 1
authentication {
         auth_type PASS
         auth_pass 1111
      }

track_script {
        magent      #觸發執行magent腳本           
      }

virtual_ipaddress {
        172.16.10.200    #虛擬IP(vip)
       }
      }
將下面多餘的配置全部刪除
  • 主服務器安裝keepalived服務,修改配置文件

yum -y install keepalived

vim /etc/keepalived/keepalived.conf

router_id MAGENT_HB    #router_id主從不相同          
      vrrp_script magent {
        script "/opt/shell/magent.sh"
        interval 2   
       }    #定義一個新函數,每2s自動執行這個腳本  

vrrp_instance VI_1 {
state MASTER   #這邊是從服務器,是BACKUP  
interface ens33    #網卡接口是ens33
virtual_router_id 51                       
priority 90   #優先級,從服務器小於主服務器   
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
      }

track_script {
    magent     #觸發執行magent腳本
      }

virtual_ipaddress {
        172.16.10.200                                               #虛擬IP(vip)
       }
      }
            將下面多餘的配置全部刪除
  • 主服務器編寫magnet腳本

mkdir /opt/shell

vim /opt/shell/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.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211
      else
      pkill -9 magent
      fi

      -n 51200 #定義用戶最大連接數
      -l 192.168.58.100 #指定虛擬IP
      -p 12000  #指定端口號
      -s #指定主緩存服務器
      -b #指定從緩存服務器

       #這個腳本意思就是一旦檢測到系統進程中有keepalived進程,就執行magent這條命令,如果沒有,則將magent進程殺死。總得來說就是,主服務器上沒有keepslived進程,magent就會和從服務器連接。

            chmod +x /opt/shell/magent.sh 
       #給腳本添加執行權限
  • 從服務器編寫magent腳本

mkdir -p /opt/shell

vim /opt/shell/magent.sh

#!/bin/bash
K=`ip addr | grep 192.168.58.100 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 192.168.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211
else
pkill -9 magent
fi  
#從服務器的腳本意思就是檢測到虛擬ip漂移是否到自己身上,如果VIP進行漂移到從服務器之後,就會執行magent這條命令,目的就是在主服務器宕掉的時候,從服務器能夠正常啓動。
  • 實驗驗證

首先使用客戶機安裝telnet,遠程連接VIP節點,寫入用戶之後,主從緩存服務器會自動獲取下載該用戶。

Memcached+magent實現主從同步 +keepalived高可用羣集

Memcached+magent實現主從同步 +keepalived高可用羣集

Memcached+magent實現主從同步 +keepalived高可用羣集

Memcached+magent實現主從同步 +keepalived高可用羣集

Memcached+magent實現主從同步 +keepalived高可用羣集

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章