jxdiscuz 发表于 2018-12-24 13:51:34

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


[*]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
[*]编译后会生成一个可执行文件
http://i2.运维网.com/images/blog/201807/25/8aa227759f008b25c631e1c07cb84c27.png

    # cp magent /usr/bin/      //把生成的mgent程序让系统识别
   



[*]从服务器
[*]  从服务器不装 直接拷贝过去

# yum install openssh-clients    //安装远程连接工具
# scp magent root@192.168.200.129:/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
http://i2.运维网.com/images/blog/201807/25/d0ab44c698b5160296d9e76c290da01d.png

[*]  脚本选项解释

-n 51200 //定义用户最大连接数
-l    //指定虚拟IP
-p 12000//指定端口号
-s //指定主缓存服务器
-b //指定从缓存服务器
# chmod +x magent.sh
# systemctl start keepalived.service
# ip addr//查看VIP
http://i2.运维网.com/images/blog/201807/25/c10d422bda044523ed7f97b81754e906.png

   


[*]从服务器上
[*]  写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
http://i2.运维网.com/images/blog/201807/25/c3cf327fad30761b15ef8f38f92eb671.png

# 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
http://i2.运维网.com/images/blog/201807/25/8e4baad3334cf60bac5f1e388d26c0d7.png
http://i2.运维网.com/images/blog/201807/25/1693c679958383c8f5b36744484d1a97.png




页: [1]
查看完整版本: 部署Memcached+magent+keepalived高可用集群