centos7.4 memcache 高可用方案搭建 (3 台)

本贴最后更新于 2339 天前,其中的信息可能已经事过境迁

centos7.4 memcache 高可用方案搭建

1. 方案选型

缓存方案的基本要求:避免单点故障;较好的性能和稳定性;便于运维管理。

常见方案如下:

  • A. 客户端直接访问多个 memcache 实例
    优点:简单,未引入新的节点;
    缺点:维护不方便,未实现集中管理;性能不满足,实例宕机后不能自动踢出(hash 到该实例的请求都要等到超时才能转到其他正常实例)。
  • B. magent 代理
    优点:简单,满足缓存对代理的大部分要求;
    缺点:无成熟案例;性能不满足,实例宕机后不能自动踢出。
  • C. moxi 代理
    优点:功能丰富,提供本地缓存、Memcache 实例数据复制等。
    缺点:无成熟案例;代码很久没更新。
  • D. twemproxy 代理
    优点:twitter 的成熟案例。
    缺点:主要配合是 twemproxy+redis,与 memcache 配合使用的案例较少;不支持缓存的复制功能。
  1. 下载地址:https://github.com/twitter/twemproxy
  2. docker 方案下载地址:https://github.com/elegos/docker-twemproxy
  • E. mcrouter
    优点:facebook 的成熟案例;功能强大,支持 Memcache 实例分组、实例复制功能,实例宕机后可自动踢出。
    缺点:一般用于 ubuntu 平台,在 centos 上安装较复杂。
  1. 下载地址:https://github.com/facebook/mcrouter
  2. docker 方案下载地址:https://github.com/kakerukaeru/mcrouter-docker

2. memcache 安装

Memcache 用到了 libevent 这个库用于 Socket 的处理,所以还需要安装 libevent,libevent 的最新版本是 libevent-1.3。(如果你的系统已经安装了 libevent,可以不用安装)

[root@memcache1 ~]# yum install libevent yum -y install libevent-devel

下载 memcached

wget http://www.memcached.org/files/memcached-1.5.7.tar.gz tar zxvf memcached-1.5.7.tar.gz cd memcached-1.5.7 ./configure make -j8 make install

3. 启动 memcache

创建 memcached 启动用户

useradd memcache passwd memcache

启动 memcache

chmod 777 -R /var/run/ memcached -m 32m -p 11211 -d -u memcache -P /var/run/memcached.pid -c 256 -vv

参数说明:

-d选项是作为守护进程在后台运行 -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, -u是运行Memcache的用户,我这里是root, -l是监听的服务器IP地址,如果有多个地址的话 -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口, -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定, -P是设置保存Memcache的pid文件 -vv是以very vrebose模式启动,将调试信息和错误输出到控制台
[root@memcache1 memcached-1.5.7]# netstat -unlpt | grep 11211 tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 10776/memcached tcp6 0 0 :::11211 :::* LISTEN 10776/memcached

关闭 memcached 的命令为:

kill `cat /var/run/memcached.pid`

设置 memcache 自动启动

> vim /etc/init.d/memcached # 新建memcached文件保存 > cp /usr/local/src/memcached-1.5.7/scripts/memcached.sysv /etc/init.d/memcached #需要将脚本中的memcached目录改为自己的memcached目录即可 > chmod 755 /etc/init.d/memcached #修改文件权限 > chkconfig --add memcached #将memcache加入系统服务 > chkconfig memcached on > service memcached start #启动,也可以用/etc/init.d/memcached start

memcached 内容

#! /bin/sh # # chkconfig: - 55 45 # description: The memcached daemon is a network memory cache service. # processname: memcached # config: /etc/sysconfig/memcached # Source function library. . /etc/rc.d/init.d/functions PORT=11211 USER=memcache MAXCONN=10240 CACHESIZE=64 OPTIONS="" if [ -f /etc/sysconfig/memcached ];then . /etc/sysconfig/memcached fi # Check that networking is up. if [ "$NETWORKING" = "no" ] then exit 0 fi RETVAL=0 prog="memcached" start () { echo -n $"Starting $prog: " # insure that /var/run/memcached has proper permissions chown $USER /var/run/memcached daemon /usr/local/src/memcached-1.5.7/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached } stop () { echo -n $"Stopping $prog: " killproc memcached RETVAL=$? echo if [ $RETVAL -eq 0 ] ; then rm -f /var/lock/subsys/memcached rm -f /var/run/memcached/memcached.pid fi } restart () { stop start } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status memcached ;; restart|reload) restart ;; condrestart) [ -f /var/lock/subsys/memcached ] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" exit 1 esac exit $?

然后把/etc/init.d/memcached 复制到另外 2 台电脑

> chmod 755 /etc/init.d/memcached #修改文件权限 > chkconfig --add memcached #将memcache加入系统服务 > chkconfig memcached on

安装 twemproxy

sbin/nutcracker -d -c /usr/local/nutcracker/conf/nutcracker.yml -p /usr/local/nutcracker/run/memproxy.pid -o /usr/local/nutcracker/run/memproxy.log nc 192.168.31.226 22222 | python -mjson.tool curl http://192.168.31.226:22222
  • 自动启动
vim vim /etc/rc.local /usr/local/nutcracker/sbin/nutcracker -d -c /usr/local/nutcracker/conf/nutcracker.yml -p /usr/local/nutcracker/run/memproxy.pid -o /usr/local/nutcracker/run/memproxy.log chmod +x /etc/rc.d/rc.local

memcached 下载地址

  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    239 引用 • 224 回帖 • 4 关注
  • Memcached
    9 引用 • 6 回帖
  • 集群
    29 引用 • 65 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...