1. 程式人生 > >Memcached主主復制+Keepalived高可用群集

Memcached主主復制+Keepalived高可用群集

rip emca 指定 def 群集 設置 內容 並且 連接

Memcached 主主案例 :

Memcached 主主復制是指在任意一臺 Memcached 服務器修改數據都會被同步到另外一臺,但是Memcached API 客戶端是無法判斷鏈接到那一臺服務器的,所以需要設置 VIP 地址,提供給 Memcached API 客戶端進行鏈接。可以使用keepalived 產生的 VIP 地址鏈接主 Memcached 服務器,並且提供高可用架構。

實驗環境 :

主機 IP地址 操作系統 主要軟件包
Memcached 1 192.18.217.128 CentOS 7.3 x86_64 memcached libevent magent
Memcached 2 192.18.217.129 CentOS 7.3 x86_64 memcached libevent
客戶端 192.18.217.130 CentOS 7.3 x86_64 Telnet

案例實施 :

在兩臺服務器上安裝 :

systemctl stop firewalld.service
setenforce 0

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    #指定工作目錄

make && make install  

cd /opt/memcached-1.5.6

./configure --with-libevent=/usr      #指定libevent的安裝路徑

make && make install

ln -s /usr/local/memcached/bin/* /usr/local/bin/  #讓系統識別命令

memcached -d -m 32m -p 11211 -u root    #啟動 memcached

netstat -anpt | grep 11211  #查看 memcached 端口

yum install telnet -y

[root@localhost memcached-1.5.6]# telnet 127.0.0.1 11211   #進入緩存數據庫
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.

在主緩存服務器配置 :

mkdir /opt/magent
tar zxvf magent-0.5.tar.gz -C /opt/magent/
ketama.c
magent.c
ketama.h
Makefile

cd /opt/magent/
vim ketama.h    #編輯配置文件

#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif

vim Makefile   
LIBS = -levent -lm

make   #生成的mgent程序讓系統識別

cp magent /usr/bin/  #將magent可執行文件加入usr可執行命令中 

scp magent [email protected]:/usr/bin/   #發送到從緩存服務器上

在主緩存服務器配置 :

1.配置 keepalived :

yum install keepalived -y          #兩臺服務器安裝 keepalived 

vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

vrrp_script magent {               #添加腳本路徑
        script "/opt/shell/magent.sh"
        interval 2
......
   router_id 0001     #刪除以下4行              
}

vrrp_instance VI_1 {
    state MASTER
    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.217.100     #虛擬IP
    }
}
以下內容可以刪除

2.編寫 magent 腳本 :

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.217.100 -p 12000 -s 192.168.217.128:11211 -b 192.168.217.129:11211
else
pkill -9 magent
fi

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

chmod +x magent.sh        #添加執行權限
systemctl start keepalived.service
netstat -antp | grep magent   #查看12000端口是否開啟  

配置從緩存服務器 :

1.配置從緩存服務器 keepalived :

yum install keepalived -y        

vim /etc/keepalived/keepalived.conf
......
    priority 90             #修改優先級 辨別活躍和備份  其它一樣
    ......

2.編寫從緩存服務器 magent 腳本 :

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.217.100 -p 12000 -s 192.168.217.128:11211 -b 192.168.217.129:11211
else
pkill -9 magent
fi

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

chmod +x magent.sh        #添加執行權限
systemctl start keepalived.service
netstat -antp | grep magent   #查看12000端口是否開啟 

客戶端測試 :

1.數據測試 ,添加數據。在主從緩存服務查看是否有 :

yum install telnet -y
telnet 192.168.217.100 12000   #進入緩存數據庫
Trying 192.168.217.100...
Connected to 192.168.217.100.
Escape character is ‘^]‘.
add username 0 0 7  #添加鍵值數據
1234567
STORED

2.故障測試 :

退出緩存數據庫,把活躍 keepalived 關閉 ,在進入數據庫 ,實現故障切換 。

Memcached主主復制+Keepalived高可用群集