1. 程式人生 > >linux memcached集群

linux memcached集群

prior prefix firewalld start 集群服務器 權限 5.6 alived memcached

環境兩臺memcached集群服務器:

192.168.80.100
192.168.80.101

關閉防火墻和selinux

systemctl stop firewalld
setenforce 0

編譯環境

yum -y install gcc gcc-c++ make -y

安裝依賴包libevent

tar xf libevent-2.1.8-stable.tar.gz -C /opt //依賴包
tar xf memcached-1.5.6.tar.gz -C /opt/ //安裝包

編譯libevent

cd /opt/libevent-2.1.8-stable/
配置
./configure --prefix=/usr/local/libevent

編譯及安裝
make && make install

編譯安裝memcached

切換到memcached目錄
cd /opt/memcached-1.5.6/
配置(指定安裝目錄和libevent路徑)
./configure \
--prefix=/usr/local/memcached \
--with-libevent=/usr/local/libevent/
make && make install

優化啟動

優化啟動(支持復制功能的Mencached需要安裝後的libevent-2.1.so.6模塊,不然啟動服務會報錯)

ln -s /usr/local/libevent/lib/libevent-2.1.so.6.0.2 /usr/lib64/libevent-2.1.so.6

分別在兩臺服務器上啟動memcached

主服務器
./memcached -m 512k -u root -d -l 192.168.80.100 -p 11211
從服務器
./memcached -m 512k -u root -d -l 192.168.80.101 -p 11211

檢查是否開啟成功

技術分享圖片
技術分享圖片

magent在主服務器安裝,從服務器不用安裝
編譯安裝magent

創建magent目錄
mkdir /opt/magent
解壓
tar xf magent-0.5.tar.gz -C /opt/magent
切換到目錄
cd /opt/magent
讓動態鏈接庫為系統所共享
/sbin/ldconfig

編輯ketama.h,添加文件頭部信息

vi ketama.h
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
技術分享圖片

修改Makefile

vi Makefile //libevent安裝路徑在/usr/local/libevent中使用以下內容:
LIBS = -levent -lm -L /usr/local/libevent/lib
INCLUDE=-I /usr/local/libevent/include
技術分享圖片

復制mgent命令到系統管理中,便於使用

cp /opt/magent/magent /usr/bin/

發送至從服務器

scp /opt/magent/magent [email protected]:/usr/bin

安裝keepalived

yum -y install keepalived

編輯keepalived配置文件

vi /etc/keepalived/keepalived.conf
技術分享圖片
! Configuration File for keepalived

global_defs {
router_id magent_H1 #指定router_id
}

vrrp_script magent { #定義函數
script "/root/shell/magent.sh"
interval 2
}

vrrp_instance VI_1 {
state MASTER
interface ens33 #本地網卡名稱
virtual_router_id 51 #id主從一致
priority 100 #主優先級大於從優先級
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

track_script { #調用函數
magent
}

virtual_ipaddress { #vip地址
192.168.80.188
}

}

建立shell目錄

mkdir /root/shell

創建magent.sh腳本

vi /root/shell/magent.sh
技術分享圖片

#!/bin/bash

Keepalived=ps -ef | grep keepalived | grep -v grep | wc -l
if [ $Keepalived -gt 0 ]; then
magent -u root -n 51200 -l 192.168.80.188 -p 12000 -s 192.168.80.100:11211 -b 192.168.80.101:11211
else
pkill -9 magent
fi

magent參數

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

賦予腳本執行權限

chmod +x /root/shell/magent.sh

啟動keepalived服務

systemctl enable keepalived.service
systemctl start keepalived.service

檢查keepalived服務狀態

systemctl status keepalived.service

檢查ip地址

ip addr show ens32
技術分享圖片

從服務器安裝keepalived:

yum install keepalived -y

主服務:

發送至從服務器
scp /etc/keepalived/keepalived.conf root$192.168.80.101:/etc/keepalived/keepalived.conf

修改從服務器keepalive 配置文件

vi /etc/keepalived/keepalived.conf
技術分享圖片

創建magent.sh腳本

vi /opt/magent.sh
技術分享圖片
#!/bin/bash
Keepalived=ip addr | grep 192.168.80.188 | grep -v grep | wc -l
if [ $Keepalived -gt 0 ]; then
magent -u root -n 51200 -l 192.168.80.188 -p 12000 -s 192.168.80.100:11211 -b 192.168.80.101:11211
else
pkill -9 magent
fi

賦予腳本執行權限

chmod +x /opt/magent

啟動keepalived

systemctl start keepalived

測試:

當80.100服務器keepalived關掉時
飄逸IP 回到從服務器80.101
如圖
技術分享圖片

linux memcached集群