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
- 编译后会生成一个可执行文件
# cp magent /usr/bin/ //把生成的mgent程序让系统识别
?
?
- 从服务器
- 从服务器不装 直接拷贝过去
# yum install openssh-clients //安装远程连接工具 # scp magent [email protected]:/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
- 脚本选项解释
-n 51200 //定义用户最大连接数 -l //指定虚拟IP -p 12000 //指定端口号 -s //指定主缓存服务器 -b //指定从缓存服务器 # chmod +x magent.sh # systemctl start keepalived.service # ip addr //查看VIP
?
- 从服务器上
- 写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
# 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://blog.51cto.com/13630803/2150165
时间: 2024-11-10 14:28:51