1. 程式人生 > >部署Memcached+magent+keepalived高可用集群

部署Memcached+magent+keepalived高可用集群

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