Lunix上搭建 Magent + Memcached 集群

4 篇文章 0 订阅
3 篇文章 0 订阅

Magent +memcached 集群搭建

Magent用于搭建memcached集群

首先按上述安装好libeventmemcached(不会安装的朋友可以看我另一篇博文有安装说明 地址是http://blog.csdn.net/lkl_csdn/article/details/72982209)


1. 执行命令 mkdir /usr/magent

mkdir /usr/magent


2. 执行命令 tar -zxvf magent-0.5.tar.gz -C /usr/magent/

tar -zxvf magent-0.5.tar.gz -C /usr/magent/

3. 执行命令 cd /usr/magent/

cd /usr/magent/

4. 执行命令 Make

make

5. 出现以下错误

gcc -Wall -O2 -g  -c -o magent.o magent.c

magent.c:64:19: 错误:event.h:没有那个文件或目录

magent.c:123: 错误:字段‘ev’的类型不完全

magent.c:153: 错误:字段‘ev’的类型不完全

magent.c: 在函数‘server_free’中:

magent.c:467: 警告:隐式声明函数‘event_del’

magent.c: 在函数‘put_server_into_pool’中:

magent.c:521: 错误:‘sizeof’不能用于不完全的类型‘struct event’

magent.c: 在函数‘writev_list’中:

magent.c:623: 错误:‘SSIZE_MAX’未声明(在此函数内第一次使用)

magent.c:623: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其

magent.c:623: 错误:所在的函数内也只报告一次。)

magent.c: 在函数‘out_string’中:

magent.c:695: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c:698: 警告:隐式声明函数‘event_set’

magent.c:698: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c:699: 警告:隐式声明函数‘event_add’

magent.c: 在函数‘do_transcation’中:

magent.c:815: 错误:‘sizeof’不能用于不完全的类型‘struct event’

magent.c:817: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c:817: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c: 在函数‘start_backup_transcation’中:

magent.c:901: 错误:‘sizeof’不能用于不完全的类型‘struct event’

magent.c:903: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c:903: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c: 在函数‘try_backup_server’中:

magent.c:993: 错误:‘sizeof’不能用于不完全的类型‘struct event’

magent.c:995: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c:995: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c: 在函数‘drive_memcached_server’中:

magent.c:1013: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c:1059: 错误:‘EV_READ’未声明(在此函数内第一次使用)

magent.c:1061: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c: 在函数‘process_get_response’中:

magent.c:1235: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c:1237: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c: 在函数‘process_update_response’中:

magent.c:1282: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c:1284: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c: 在函数‘drive_backup_server’中:

magent.c:1304: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c:1342: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c:1342: 错误:‘EV_READ’未声明(在此函数内第一次使用)

magent.c: 在函数‘drive_client’中:

magent.c:1617: 错误:‘EV_READ’未声明(在此函数内第一次使用)

magent.c:1668: 错误:‘EV_WRITE’未声明(在此函数内第一次使用)

magent.c:1681: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c: 在函数‘server_accept’中:

magent.c:1733: 错误:‘sizeof’不能用于不完全的类型‘struct event’

magent.c:1734: 错误:‘EV_READ’未声明(在此函数内第一次使用)

magent.c:1734: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c: 在函数‘main’中:

magent.c:2105: 警告:隐式声明函数‘event_init’

magent.c:2110: 错误:‘EV_READ’未声明(在此函数内第一次使用)

magent.c:2110: 错误:‘EV_PERSIST’未声明(在此函数内第一次使用)

magent.c:2120: 警告:隐式声明函数‘event_loop’

make: *** [magent.o] 错误 1


6.执行命令 vim Makefile

 vim Makefile

添加 INCLUDE以及修改LIBS如下图所示(手动输入,切不可复制粘帖)

LIBS = -levent 0lm -L/usr/libevent/lib

INCLUDE = -I/usr/libevent/include

    

/usr/libevent/ 为你安装的libevent所在的目录

 

保存退出

7.执行命令 make

make

8.出现以下错误   

   

9. 执行命令 vim ketama.h

 vim ketama.h

内容如下图所示

添加的内容是 #ifndef SSIZE_MAX 第一行

      #define SSIZE_MAX 32767 第四行

     #endif 如下图所示

 

 

  

 

10.执行命令 Make

make
 

 

安装magent成功

11. 执行命令 magent,查看magent是否可以启动 ,报如下错误

  

我们把magent复制到/usr/bin/magent,执行#cp magent /usr/bin/magent

12. 执行命令 cp magent /usr/bin/magent

cp magent /usr/bin/magent

13. 执行命令 magent报以下错误时

magent

  

 我们把libevent-2.0.so.5放到/usr/lib文件下,就可以

14. 执行命令  ln -s /usr/libevent/lib/libevent-2.0.so.5 /usr/lib

 ln -s /usr/libevent/lib/libevent-2.0.so.5 /usr/lib

15. 执行命令 Magent

magent

还是这个错,没事,继续后面的

16. 执行命令 ldd /usr/memcached/bin/memcached

 ldd /usr/memcached/bin/memcached

  

17. 执行命令 ln -s /usr/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

ln -s /usr/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

18. 执行命令 ldd /usr/memcached/bin/memcached

 ldd /usr/memcached/bin/memcached
 

 

19. 执行命令 magent

magent

 

 

Magent 安装成功

20. 开启 memcached 服务 这里开了5个服务 端口分别是11211 11212  11213 11214 11215

执行命令

 /usr/memcached/bin/memcached -d -m 10m -p 11211 -u root
 /usr/memcached/bin/memcached -d -m 10m -p 11212 -u root
 /usr/memcached/bin/memcached -d -m 10m -p 11213 -u root
 /usr/memcached/bin/memcached -d -m 10m -p 11214 -u root
 /usr/memcached/bin/memcached -d -m 10m -p 11215 -u root

  

21. 执行命令 ps -ef | grep memcached查询是否开启成功

 ps -ef | grep memcached

 

 

22. 执行命令 magent -u root -n 65535 -p 11210 -s 192.168.1.9:11211 -s 1192.168.1.9:11212 -s 1192.168.1.9:11213 -s 1192.168.1.9:11214 -b 192.168.1.9:11215开启magent

magent -u root -n 65535 -p 11210 -s 192.168.1.9:11211 -s 1192.168.1.9:11212 -s 1192.168.1.9:11213 -s 1192.168.1.9:11214 -b 192.168.1.9:11215

 

 如图所示,开启成功

Magent + memcached 集群测试

23. 开启5memcached服务(已开启就不用开启直接检测是否开启成功)

 /usr/memcached/bin/memcached -d -m 10m -p 10001 -u root
 /usr/memcached/bin/memcached -d -m 10m -p 10002 -u root
 /usr/memcached/bin/memcached -d -m 10m -p 10003 -u root
 /usr/memcached/bin/memcached -d -m 10m -p 10004 -u root
 /usr/memcached/bin/memcached -d -m 10m -p 10005 -u root

  

24. 检测是否开启成功 执行命令 ps -ef | grep memcached

ps -ef | grep memcached

  

开启成功

25. 启动magent 设置启动参数

-u当然是启动账号

-n是最大连接数,

-lmagent监听的IP

-pmagent监听的端口 后面的格式依次是

-s IP:端口 代表是主服务器 然后指定IP:端口的格式

-b IP:端口的意思是 备用服务器,

这里我设置了100011000210003为主Memcached服务器1000410005memcached备份服务器


执行命令 magent -u root -n 51200 -l 192.168.1.9 -p 12000 -s 192.168.1.9:10001 -s 192.168.1.9:10002 -s 192.168.1.9:10003 -b 192.168.1.9:10004 -b 192.168.1.9:10005启动magent

magent -u root -n 51200 -l 192.168.1.9 -p 12000 -s 192.168.1.9:10001 -s 192.168.1.9:10002 -s 192.168.1.9:10003 -b 192.168.1.9:10004 -b 192.168.1.9:10005

 

 

 

26. 执行命令 ps -ef | grep magent 检查是否启动成功

ps -ef | grep magent
 

 

 

如上图 启动成功

27. 直接连接magent 端口 12000 执行命令telnet 192.168.1.9 12000 (没安装telne的可以看我另一篇博文安装telnet 地址是http://blog.csdn.net/lkl_csdn/article/details/72977708 )

 telnet 192.168.1.9 12000

 

 

执行命令 stats

 stats

 

 

说明magent 里面已经负载了3memcached端口

接着我们继续set 如图:

  

执行命令get key1 get key2 get key3 看看是否有值

  

 到此,一个缓存写入已经存取的过程就完成了

28.连接其中一个 memcached 服务 看看是否有值 如图

  

  

在连接 10002端口 如图

  

说明10002上缓存的key2啊,

这样不难看出10003上应该是缓存的key3

在连接 10003 如图

  

 

29. 知道了主服务器是分发负载的,不知道备用服务器是不是这样,试试备用如图

  

  

30. 然后把主服务器的10001 10002 10003的进程全部kill 看看值影不影响取值

  

31. 然后在magent 看看能否取值

  

并不影响取值

32. 在把备用的也 kill 掉试试

  

33. 在去取值

 

已经不能取

34. 在启动看看 能不能把值在给set进去

 

35.stats , 然后在magentset值试试

  

  

 

可以set值进去  

36. 在到memcached看看能否取值

如图

 

 

 

 

 

 

有值。测试成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值