Linux架构--memcached高可用群集

memcached集群分析

  • 由于memcached在实现分布式集群部署时,memcached服务之间是不能进行通讯的,分布式也是通过客户端的算法,把数据保存在不同的memcached中,所以当昨晚群集客户端往里面写入数据时,会出现客户端往一个memcached节点写入数据后,另外两个节点是查询不到的
  • 因此,我们使用magent开源软件来对memcached服务器之间进行缓存数据同步
  • magent工作原理是magent可以备份数据,而且magent可以同时连接多个memcached节点,当memcached重启或者宕机恢复后可以从magent指定的memcached的备份节点中恢复丢失的缓存数据

实验环境:

角色 IP地址 系统 软件包
主服务 192.168.179.237 centos7

libevent-2.1.8-stable.tar.gz

memcached-1.5.6.tar.gz

keepalived-1.3.5-16.el7.x86_64

magent-0.5.tar.gz

从服务 192.168.179.236 centos7

libevent-2.1.8-stable.tar.gz

memcached-1.5.6.tar.gz

keepalived-1.3.5-16.el7.x86_64

magent-0.5.tar.gz

客户端 192.168.179.234 centos7  

主服务器配置安装libevent


tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/

//安装环境依赖包
yum install gcc gcc-c++ make -y

//配置安装libevent
cd /opt/libevent-2.1.8-stable/
./configure --prefix=/usr/
make && make install

主服务器配置安装memcached

tar zxvf memcached-1.5.6.tar.gz -C /opt/

//配置安装memcached
cd /opt/memcached-1.5.6
./configure --with-libevent=/usr/

主服务器配置安装magent插件

//创建magent插件目录
mkdir /opt/magent

//解压缩包
tar zxvf magent-0.5.tar.gz -C /opt/magent/


cd /opt/magent

vim ketama.h

#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
删除末尾#endif

vim Makefile

/第一行  LIBS = -levent -lm

//配置安装
make

//复制脚本文件到系统识别的目录中
cp magent /usr/bin/

主服务器配置安装keepalived服务

//安装keepalived服务
yum install keepalived -y
vim /etc/keepalived/keepalived.conf
  • 修改主配置文件
! Configuration File for keepalived

vrrp_script magent {
        script "/opt/shell/magent.sh"
        interval 2
}

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id MAGENT_HA
}

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.179.188
    }
}

从服务器配置安装libevent

tar zxvf 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

从服务器配置安装memcached

tar zxvf memcached-1.5.6.tar.gz -C /opt/

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

从服务器配置安装keepalived

yum install keepalived -y

//将主配置文件修改别名
mv keepalived.conf keepalived.conf.bk
  • //主服务器推送keepalived配置文件到从服务器中
scp keepalived.conf [email protected]:/etc/keepalived/
  • 主服务器创建脚本文件
//主服务创建执行脚本
mkdir /opt/shell
cd /opt/shell

vim magent.sh

//注意:IP地址
#!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.179.188 -p 12000 -s 192.168.179.221:11211 -b 192.168.179.132:11211
else
pkill -9 magent
fi

chmod +x magent.sh 

systemctl start keepalived.service 

netstat -ntap | grep 12000   //验证服务是否启动

  • 从服务器中创建脚本文件
//从服务器创建脚本
mkdir /opt/shell/

vim magent.sh

#!/bin/bash
K=`ip addr | grep 192.168.179.188 | grep -v grep | wc -l`
if [ $K -gt 0 ];then
	magent -u root -n 51200 -l 192.168.179.188 -p 12000 -s 192.168.179.237:11211 -b 192.168.179.236:11211

else
pkill -9 magent
fi

chmod +x magent.sh

systemctl start keepalived.service

//验证从服务器12000服务是否启动
netstat -ntap | grep 12000

  • 提供主服务器服务
memcached -m 512k -u root -d -l 192.168.179.237 -p 11211   //主服务器
  • 是否开启主服务
netstat -ntap | grep 11211

  • 提供从服务器服务
memcached -m 512k -u root -d -l 192.168.179.236 -p 11211  //从服务器
  • 验证从服务是否开启服务
netstat -ntap | grep 11211

客户端测试

//客户端测试是否可以登录漂移地址,进入服务
yum install telnet -y 

telnet 192.168.179.188 12000

  • 验证主从同步,客户端登录服务器,添加内容,查看从服务器是否被写入
//添加内容
add username 0 0 7
1234567

//查看内容是否被写入
get username

  • 登录主服务器查看内容:
yum install telnet -y 

telnet 192.168.179.237 11211

get username

  • 登录从服务器查看内容:
yum install telnet -y 

telnet 192.168.179.236 11211

get username

  • 断开主服务器的keepalived服务,验证是否还可以登录服务

  • 客户端是否可以登录服务器

  • 是否可以添加内容,并且在从服务器查看到

  • 从服务器查看新的内容

发布了78 篇原创文章 · 获赞 5 · 访问量 2568

猜你喜欢

转载自blog.csdn.net/qq397750142/article/details/104265676