1. 程式人生 > >Memcached+magent實現主從同步 +keepalived高可用群集

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

mod Opens aec mark tar sha 存儲 libs ket

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高可用群集