506629361 发表于 2018-12-24 12:44:33

memcached高可用群集部署(keepalive+magent)

  memcahced高可用群集
  

     memcached群集作用主要解决服务器单点故障。不做群集部署,服务器之间不会复制
  同步数据,一旦宕机数据就会丢失,无法有效的为后台web服务器等减轻并发连接压力。所以,
  我们采用群集服务去解决这个问题,使用多台memcached做群集部署,即时有一两台服务器宕机,
  也不会影响用户正常体验,同时也减少后台服务的并发连接压力。
http://s1.运维网.com/images/20180925/1537873891754246.png
  实验环境
  本文采用magent+keepalived实现memcached的群集部署
  
  
角色类型操作系统IP地址服务类型主服务器Centos7192.168.60.144/24  libevent、memcached、
  magent、keepalived
从服务器Centos7192.168.60.143/24libevent、memcached、
keepalived
客户测试端Centos7192.168.60.140/24telnet  

  软件包地址
  链接:https://pan.baidu.com/s/1tHnxoldZoX7U0aHnx6GlRg 密码:vl6l
  部署服务

  一、主从服务器安装memcached
  1、安装环境包
  yum install gcc gcc-c++ -y
  2、解压缩
  tar zxf libevent-2.1.8-stable.tar.gz -C /opt/    #解压libevent事件库包
  tar zxf memcached-1.5.6.tar.gz -C /opt/      #解压memcached包
  mkdir /opt/magent    #创建magent解压目录
  tar zxf magent-0.5.tar.gz -C /opt/magent   #解压magent包
  3、编译libevent和memcached
  cd /opt/libevent-2.1.8-stable       #编译libevent
  ./configure --prefix=/usr
  make && make install
  ln -s /usr/lib/libevent-2.1.so.6/usr/lib64/libevent-2.1.so.6
  cd /opt/memcached-1.5.6/      #编译memcached
  ./configure--with-libevent=/usr
  make && make intall
  二、主服务器上配置magent(从服务器无需配置magent)

  1、直接修改magent中的文件
  cd /opt/magent
http://s1.运维网.com/images/20180925/1537868775933889.png
  vim ketama.h          #修改开头两行
  #ifndef SSIZE_MAX
  #define SSIZE_MAX 32767
  vim Makefile          #修改第一行

  LIBS = -levent -lm
  make                      #生成magent脚本

  http://s1.运维网.com/images/20180925/1537868783981607.png
  2、主服务器推送将生成从magent推送给从服务器
  yum install openssh-clients -y      #安装推送插件
  scp magent root@192.168.60.143:/usr/bin/      #推送到从服务器/usr/bin目录下
  三、主从服务器都安装keepalived,并修改配置文件
  1、安装keepalived
  yum install keepalived -y
  2、修改配置文件
  vim /etc/keepalived/keepalived.conf
http://s1.运维网.com/images/20180925/1537870296561525.png
  3、从服务器复制主服务器上的配置文件
  cd /etc/keepalived/
  mv keepalived.conf keepalived.conf.bk   #将原本的配置文件改名
  yum install openssh-clients -y   #安装推送插件
  scp root@192.168.60.144:/etc/keepalived/keepalived.conf /etc/keepalived/    #复制配置文件
  4、从服务器修改配置文件

  ● state BACKUP
  ●virtual_router_id 52
  ● priority 100
  就以上三处需要修改,其他内容与主服务器相同。

  四、主从服务器写入keepalived配置文件加载的脚本

  1、创建目录
  mkdir /opt/shell
  2、写入如下脚本
  vim magent.sh
  #!/bin/bash
  k=`ps -ef | grep keepalived | grep -v grep | wc -l`
  if [ $k -ge 0 ];then
  magent -u root -n 51200 -l 192.168.60.180 -p 12000 -s 192.168.60.144:11211 -b 192.168.60.143:11211
  else
  pkill -9 magent
  fi
  3、主从都启动keepalived服务

  systemctl start keepalived.service   #启动keepalived
  netstat -ntap | grep 12000#查看端口号12000
  ip add   #查看虚拟ip
http://s1.运维网.com/images/20180925/1537872206528489.png
  cat /var/log/messages                      #查看日志,验证主从关系
  VRRP_Instance(VI_1) Transition to MASTER STATE
http://s1.运维网.com/images/20180925/1537872263482393.png
  

  五、主从服务器启动memcached,客户端验证
  1、启动memcached
  memcached -m 512k -u root -d -l 192.168.60.144 -p 11211
  memcached -m 512k -u root -d -l 192.168.60.143 -p 11211
  2、先本地自测,看能否登陆memcached
  yum install telnet -y
  telnet 192.168.60.144 11211
  telnet 192.168.60.143 11211
  3、客户端使用虚拟ip登陆memcached
  yum install telnet -y
  telnet 192.168.60.180 12000   #端口为12000
  4、在客户端写入数据,在主从上分别查看。
http://s1.运维网.com/images/20180925/1537872791770165.png
http://s1.运维网.com/images/20180925/1537872798810681.png
http://s1.运维网.com/images/20180926/1537891618188505.png
  5、关闭其中一台keepalived依旧不影响客户端操作
  完成以上测试magent+keepalived实现memcached高可用群集实验就算好了~



页: [1]
查看完整版本: memcached高可用群集部署(keepalive+magent)