memcached+magent组成高可用

简介:

使用magent架设memcached高可用,当主的挂掉以后,备机可以继续使用。

magent

|

----------------------------------------

|                   |                  |

memcached1     memcached2           memcached3

(master)       (master)             (backup)

一 安装memcached

下载下面安装包

libevent-2.0.21-stable.tar.gz

memcached-1.4.32.tar.gz

magent-0.5.tar.gz

  • 安装libevent

tar –xzvf libevent-2.0.21-stable.tar.gz

cd
  libevent-2.0.21-stable

./configure –prefix=/usr/local/libevent

make

make
  install

  • 安装memcached

tar –xzvf memcached-1.4.32

cd
  memcached-1.4.32

./configure
  --prefix=/opt/memcached --with-libevent=/usr/local/libevent/

make

make
  install

  • magent安装

下载安装包文件magent-0.5.tar.gz

解压tar –xzvf magent-0.5.tar.gz

make   #执行编译安装

把编译好的magent拷贝到/opt/memcached/bin/ 目录下

  • 安装报错解决方案

[[email protected]
  magent]# make

gcc
  -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c

magent.c:71:19:
  error: event.h: No such file or directory

magent.c:130: error: field ‘ev’ has incomplete type

magent.c:161: error: field ‘ev’ has incomplete type

magent.c: In function ‘server_free’:

magent.c:494:
  warning: implicit declaration of function ‘event_del’

magent.c:
  In function ‘pool_server_handler’:

magent.c:514: error: ‘EV_READ’ undeclared (first use in this function)

magent.c:514:
  error: (Each undeclared identifier is reported only once

# 解决办法,检查下libevent安装路径,如果自定义安装了,拷贝下路径库。

ln -s /usr/lib/libevent*  /usr/lib64/

[[email protected]
  magent]# make

gcc
  -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c

magent.c: In function ‘writev_list’:

magent.c:729: error: ‘SSIZE_MAX’ undeclared (first use in this function)

magent.c:729:
  error: (Each undeclared identifier is reported only once

magent.c:729:
  error: for each function it appears in.)

make:
  *** [magent.o] Error 1

解决方法:

vi ./ketama.h

#在开头加入

#ifndef SSIZE_MAX

#define SSIZE_MAX     
  32767

#endif

#libm.a不存在的时候,需要拷贝下面so,如果没有,需要安装glibc glibc-devel

cp
  /usr/lib64/libm.so /usr/lib64/libm.a

gcc
  -Wall -g -O2 -I/usr/local/include -m64 -o magent magent.o ketama.o
  /usr/lib64/libevent.a /usr/lib64/libm.a

/usr/lib64/libevent.a(event.o):
  In function `gettime‘:

/root/libevent-2.0.21-stable/event.c:370:
  undefined reference to `clock_gettime‘

/usr/lib64/libevent.a(event.o):
  In function `detect_monotonic‘:

/root/libevent-2.0.21-stable/event.c:340:
  undefined reference to `clock_gettime‘

collect2:
  ld returned 1 exit status

make:
  *** [magent] Error 1

解决方法:

vi
  Makefile

CFLAGS
  = -Wall -g -O2 -I/usr/local/include $(M64)

改为:

CFLAGS
  = -lrt -Wall -g -O2 -I/usr/local/include $(M64)

[[email protected]
  magent5]# make

gcc
  -lrt -Wall -g -O2 -I/usr/local/include 
  -o magent magent.o ketama.o -levent

ketama.o:
  In function `create_ketama‘:

/root/magent5/ketama.c:399:
  undefined reference to `floorf‘

collect2:
  ld returned 1 exit status

make:
  *** [magent] Error 1

解决办法:

vi
  Makefile

LIBS =
  -levent –lm

三 启动

  • 启动memcached

/opt/memcached/bin/memcached
  -d -u root -c 10000 -m 8192 192.168.100.22 -p 11211

  • 启动magent

/opt/memcached/bin/magent
  -u root -n 102400 -l 192.168.100.24 -p 12001 -s
  192.168.100.22:192.168.100.23:11211 -b 192.168.100.24:11211

四 测试

4.1 模拟一台主的坏掉

设置数据:

kill掉一台主

验证数据正常:

4.2 模拟第二台主机也down

验证数据,读写都正常。

4.3 模拟三台都宕机

magent无法读取数据

4.4 模拟主机down掉一台,启动主机,查看数据是否丢失

测试检查丢失了一条数据。

所以当主down以后,不要立即启动主,需要非工作时间处理。

时间: 2024-10-19 18:37:03

memcached+magent组成高可用的相关文章

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

Memcached+magent+keepalived高可用集群 magent是一款开源的代理服务软件,我们可以通过他来实现缓存数据的同步,当然这里说的同步不是说memcached之间就能互相通讯了, 而magent可以同时连接多个memcached节点, 通过magent绑定的VIP从客户端登录memcached写入数据,其他节点的memcached数据也会同步.? 案例环境 主机名称 IP 主要软件 memcached主 192.168.200.128 Magent.memcached.li

Memcached + Magent + keepalived高可用集群

一.前言 magent是一款开源的代理服务软件,我们可以通过它来实现缓存数据的同步,当然这里说的同步不是说memcached之间就能互相通讯了, 而magent可以同时连接多个memcached节点, 通过magent绑定的VIP从客户端登录memcached写入数据,其他节点的memcached数据也会同步. 二.架构部署 环境说明:1.配置 memcache 主缓存节点和从缓存节点(两台服务器配置相同) yum install gcc gcc-c++ make -y 1.tar zxvf m

Memcached主从复制+keepalived高可用架构

实现主从复制和高可用的方式 Memcached主从复制是指在主Mencached服务器上修改数据都会被同步到其他服务器上,MemcachedAPI客户端是无法判断连接到那一台Memcached服务器,所以需要VIP地址,提供给MemcachedAPI客户端进行连接.可以使用keepaived产生的VIP地址连接主Memcached服务器来完成,并且提供高可用架构. 环境准备 系统版本:Centos7 服务器规划 服务器 IP地址 主要软件 主Memcached 172.16.10.24 libe

memcached演练(6) 高可用实例HA(伪集群方案 )

本系列文章<memcached的演练>,这是第6篇,前面文章,已经阐述了,memcached的安装,访问,session管理,存储管理.从本篇开始,就分开有几篇演练下memcached的高可用相关. memcached的安全,承载着后台数据库的巨大访问,意义重大. 简单介绍下HA的梗概,如果时间允许尽量都演练下个方案,然后横向比较下各方案的优缺点. 本篇主要内容 伪集群方案的测试 明确memcached的高可用方案 通过比较memcached和redis两种NOSQL的方案,很容易发现,mem

(tengine+keepalived)+(apache+tomcat)+memcached+mysql实现高可用、负载均衡、可扩展架构

目录 1.高可用.负载均衡.可扩展架构的需要背景 2.系统架构 3.系统规划及说明 4.系统部署及测试 5.总结 1.高可用.负载均衡.可扩展架构的需要背景 从互联网诞生以来,网站架构随着互联网的快速发展发生着巨大的变化,现今,数据每天都在以爆炸式的增长,大数据.云计算等概念被业内炒得沸沸扬扬,这些前沿技术也在各行各业落地开花.每一种新技术的提出几乎都会或多或少影响着IT的基础架构,面对数据的快速增长.我们急需一套高可用.负载均衡.可扩展的架构来作为支撑. 2.系统架构 此次博文介绍一套高可用.

keepalived+lvs+magent+memcached集群高可用方案

root  25277     1  0 11:01 ?        Ssl    0:00 /opt/root/memcached-1.4.13/memcached -m 512m -p 11211 -d root      1273     1  0 15:41 ?        Ssl    0:00 /opt/root/memcached-1.4.13/memcached -m 512m -p 11212 -d -u root root      1290     1  0 15:41

memcache+magent的高可用

一.安装步骤: 1.编译安装libevent: wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gztar zxvf libevent-1.4.9-stable.tar.gzcd libevent-1.4.9-stable/./configure --prefix=/usrmake && make installcd ../ 2.编译安装Memcached: wget http://danga.com/memcached/d

Memcached高可用方案收集(集群及分布式)

Memcached的集群方案有很多,不止magent一个,但是单靠集群软件去实现高可用感觉还是会缺少一步,最推荐的方案应该是软件加编码去实现高可用,至少能保证站点的99.5%的可运行行,以下是集群的方案收集: randy_shandong: memcached演练(1) 搭建memcached服务 memcached演练(2) 访问memcached服务 单台tomcat的session信息的2种持久化方式 memcached演练(3) 使用apache+搭建双节点tomcat集群 memcac

Memcached高可用群集(Memcached主主复制+Keepalived)

案例说明 为解决memcached单点故障,需要实现memcached缓存的高可用.首先,需要实现Memcached的主主复制,指任意一台memcached服务器修改数据都会被同步到另外一台,但是memcached API无法判断连接哪一台服务器,因此需要VIP.其次,通过Keepalived产生的VIP连接memcached服务器,提供高可用架构. 案例拓扑 案例环境 主机 IP地址 操作系统 主要软件 Memcached 1 192.168.37.128 Centos7 libevent:m