Linux系统架构-----部署memcached集群

目录

 

一.memcached集群分析

magent分析

单点故障

二.memcached集群部署

实验拓扑图

实验环境

配置memcached主节点

配置memcached从节点

在客户端连接VIP

验证主从同步

模拟故障


一.memcached集群分析

magent分析

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

  • magent和mecached是可以混搭的,如上图模型

单点故障

二.memcached集群部署

实验拓扑图

  • 本实验中使用三台虚拟机,两台memcached节点,一台客户端
  • memcached主节点安装magent
  • 主节点和从节点使用的虚拟IP地址为192.168.43.88/24

实验环境

角色 系统 IP地址 软件包
memcached主节点 CentOS7 192.168.43.101/24

magent-0.5.tar.gz

memcached-1.5.6.tar.gz

libevent-2.1.8-stable.tar.gz

memcached从节点 CentOS7 192.168.43.102/24

memcached-1.5.6.tar.gz

libevent-2.1.8-stable.tar.gz

客户端 centOS7 192.168.43.103/24  

配置memcached主节点

##安装相关环境包,以及keepalived高可用软件
yum install gcc gcc-c++ make keepalived -y

##关闭防火墙
systemctl stop firewalld
setenforce 0

##解压主节点上的三个软件包
tar xzvf memcached-1.5.6.tar.gz -C /opt
tar xzvf libevent-2.1.8-stable.tar.gz -C /opt
mkdir /opt/magent
tar xzvf magent-0.5.tar.gz -C /opt/magent/

##手工编译安装事件通知库
cd /opt
cd libevent-2.1.8-stable/
./configure --prefix=/usr
make && make install

##手工编译安装memcached服务端
cd ..memcached-1.5.6/
./configure --with-libevent=/usr/local
make && make install


##编辑magent
cd /opt/magent/
#只用修改头两行
vim ketama.h
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767

vim Makefile
//首行修改
LIBS = -levent -lm
###开始编译magent,完成之后会出现一个可执行文件
make

##把magent的执行文件放到系统能够识别的地方
cp magent /usr/bin/

##把脚本复制给从节点
scp magent [email protected]:/usr/bin

##编辑keepalived的脚本 
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 memcached_master
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
//调用该函数脚本
    track_script {
        magent
        }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.43.88
    }
}


##同样覆盖从节点上的keepalived文件,等会去从节点修改
scp keepalived.conf [email protected]:/etc/keepalived/keepalived.conf

##创建keepalived定义的脚本
mkdir /opt/shell
cd /opt/shell
vim magent.sh
#!/bin/bash
##K代表keepalived是否开启
K=`ps -ef | grep keepalived | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
#此条命令是开启magent
#-n指定最大连接数,-l指定虚拟IP,-s指定主节点,-b指定从节点
        magent -u root -n 51200 -l 192.168.43.88 -p 12000 -s 192.168.43.101:11211 -b 192.168.43.102:11211
else
pkill -9 magent
fi

##给予脚本执行权限
chmod +x magent.sh 

##建立关于Libevent的软链接,否则会出错
ln -s /lib/libevent-2.1.so.6* /usr/lib64/

##开启keepalived和magent
systemctl start keepalived.service 
[root@localhost shell]# netstat -ntap |grep 12000
tcp        0      0 192.168.43.88:12000     0.0.0.0:*               LISTEN      14737/magent 

##开启memcached
[root@localhost shell]# memcached -m 512k -u root -d -l 192.168.43.101 -p 11211
 [root@localhost shell]# netstat -ntap |grep 11211
tcp        0      0 192.168.43.101:11211    0.0.0.0:*               LISTEN      27939/memcached     
      


配置memcached从节点

##安装相关软件包
yum install gcc gcc-c++ make keepalived -y

##关闭安全性功能
systemctl stop firewalld
setenforce 0

##解压memcached服务端软件包
tar xzvf libevent-2.1.8-stable.tar.gz -C /opt
tar xzvf memcached-1.5.6.tar.gz -C /opt

##手工编译
cd /opt/libevent-2.1.8-stable/
./configure --prefix=/usr
 make && make install
cd ../memcached-1.5.6/
  ./configure --with-libevent=/usr/local
 make && make install

##创建magent脚本目录,此处要先于主节点复制脚本过程
mkdir /opt/shell


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 memcached_master
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    track_script {
        magent
        }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.43.88
    }
}



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

##开启服务
systemctl start keepalived.service 
[root@localhost ~]# netstat -natp | grep magent
tcp        0      0 192.168.43.88:12000     0.0.0.0:*               LISTEN      14737/magent        
[root@localhost ~]# 



memcached -m 512k -u root -d -l 192.168.43.102 -p 11211
[root@localhost ~]# netstat -ntap |grep 11211
tcp        0      0 192.168.43.101:11211    0.0.0.0:*               LISTEN      27939/memcached     
[root@localhost ~]# 


在客户端连接VIP

##安装telnet服务
yum install telnet -y


##以虚拟IP和magent代理端口连接
[root@client ~]# telnet 192.168.43.88 12000
Trying 192.168.43.88...
Connected to 192.168.43.88.
Escape character is '^]'.

验证主从同步

  • 在客户端添加数据到memcached

  • 在主节点和从节点查看

注:主节点不会同步从节点的数据,从节点上修改数据,客户端不会获得

模拟故障

  • 关闭主节点,查看客户端能否正常登录

发布了120 篇原创文章 · 获赞 132 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42761527/article/details/104400560