memcached+magent+keepalived实现高可用群集

匿名 (未验证) 提交于 2019-12-02 22:56:40
magent代理的用途:

如果memcached其中一个缓存节点的机器down机,那么客户端存入的缓存数据将会丢失一部分,我们可以采用 Magent 缓存代理,防止单点现象,缓存代理也可以做备份,通过客户端连接到缓存代理服务器,缓存代理服务器连接缓存服务器,缓存代理服务器可以连接多台Memcached机器,这样就能实现实现高可用以及防止单点故障。

keepalived的用途:

但是如果magent代理服务器宕机了,就不能继续提供服务,所以就用到了keepalived,通过keepalived配置文件设置优先级来决定谁做主magent或者从magent,当主magent正常运行时vip在主magent,当主magent宕机vip自动换到从magent,主magent恢复后vip自动回到主magent上。

实验准备

magent代理与memcached服务装在同一台主机上,仅做实验参考。

主机 ϵͳ IP 角色 软件
memcached 1 CentOS 7 192.168.100.130 主节点 memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz
magent 1 CentOS 7 192.168.100.130 主代理服务器 magent-0.5.tar.gz
memcached 2 CentOS 7 192.168.100.131 从节点 memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz
magent 2 CentOS 7 192.168.100.131 从代理服务器 magent-0.5.tar.gz
client CentOS 7 192.168.100.132 测试主机 telnet

VIP 192.168.100.100

实验步骤如下:

1.yum 安装软件支持包

yum install gcc gcc-c++ -y

2.所有主机关闭防火墙

systemctl stop firewalld.service  setenforce 0

3.client主机安装Telnet软件

yum install telnet -y

3.在memcached 1 和memcached 2 安装memcached 和 libevent软件包

(1)解压软件至opt目录下。

tar xzvf memcached-1.5.6.tar.gz -C /opt/ tar xzvf libevent-2.1.8-stable.tar.gz -C /opt/

(2)编译安装libevent

cd /opt/libevent-2.1.8-stable ./configure --prefix=/usr/local/libevent   #指定安装路径  make && make install   

(3)编译安装memcached

cd memcached-1.5.6 ./configure --with-libevent=/usr/local/libevent   make && make install

(4)libevent-2.1.so.6模块需要复制到/usr/lib64目录下,否则会报错。

ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6    

4.在memcached 1上安装magent

(1)在opt目录下创建magent目录,存放magent包解压后的文件。

mkdir /opt/magent tar xzvf magent-0.5.tar.gz -C /opt/magent

(2)修改ketama.h配置文件。

cd /opt/magent vim ketama.h     #修改头部文件     #ifndef SSIZE_MAX    #define SSIZE_MAX 32767

(3)修改Makefile配置文件

vim Makefile     LIBS = -levent -lm -L /usr/local/libevent/lib  #修改     INCLUDE=-I /usr/local/libevent/include        #添加

(4)编译magent

make

(5)编译后生成的magent命令文件复制到/usr/bin,以便系统识别magent命令。

cp /opt/magent/magent /usr/bin   ##方便系统识别命令

5.启动memcached服务

memcached -m 512k -u root -d -l 192.168.100.130 -p  11211 memcached -m 512k -u root -d -l 192.168.100.131 -p  11211  netstat -ntap |grep 11211  有11211端口表示服务开启成功


6.client客户端测试magent解决单点故障问题

(1)只启动memcached 1上的magent服务

magent -u root -n 51200 -l 192.168.100.130 -p 12000 -s 192.168.100.130:11211 -b 192.168.100.131:11211

(2)在client主机上测试

(3)停掉主节点的服务,在client主机上测试

pkill -9 memcached

实验步骤如下:

1.接着上面的操作继续往下做,主从节点都要安装keepalived 软件

yum install keepalived -y

2.从magent不需要安装magent软件,只需把memcached 上1主节点生成的magent命令文件 复制到主magent的/usr/bin目录下

scp /opt/magent/magent root@192.168.100.131:/usr/bin

3.在主magent上编辑keepalived配置文件

vim /etc/keepalived/keepalived.conf router―_id MAGENT_HA #删除以下内容    vrrp_skip_check_adv_addr    vrrp_strict    vrrp_garp_interval 0    vrrp_gna_interval 0  #定义新函数magent vrrp_script magent{ script"/opt/shell/magent.sh"  interval 2       ##时间间隔 }  #修改vrrp_instance实例 INTERFACE ens33 #添加 track_script {     magent }        # 使用新函数magent  #定义一个虚拟IP virtual_ipaddress {     192.168.100.100     }  #下面多余的部分可以全部删除 

4.在从magent上编辑keepalived配置文件

#从主magent上把配置脚本复制到从magent上 scp /etc/keepalived/keepalived.conf root@192.168.100.131:/etc/keepalived/keepalived.conf  vim /etc/keepalived router_id MAGENT_HB  #修改为MAGENT_HB state BACKUP     #修改为BACKUP virtual_router_id 52   #ID不同 priortity 90     #优先级比主magent低 

5.在主magent上配置 magent脚本

mkdir /opt/shell  vim /opt/shell/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.100.100 -p 12000 -s 192.168.100.130:11211 -b 192.168。100.131:11211 else pkill -9 magent fi  -n 51200 //定义用户最大连接数 -l 192.168.100.100 //指定虚拟IP -p 12000  //指定端口号 -s //指定主缓存服务器 -b //指定从缓存服务器  chmod +x magent.sh

6.在从magent上配置 magent脚本

mkdir /opt/shell  vim /opt/shell/magent.sh  #!/bin/bash  K=`ip addr | grep 192.168.100.100 | grep -v grep | wc -l` if [ $K -gt 0 ]; then         magent -u root -n 51200 -l 192.168.100.100 -p 12000 -s 192.168.100.130:11211 -b 192.168.100.131:11211 else pkill -9 magent fi    chmod +x magent.sh

7.主从magent服务器开启keepalived服务

systemctl start keepalived.service  netstat -ntap |grep 12000  如果有12000端口表示服务开启成功

8.在client主机上测试keepalived高可用

(1)关掉主magent上的keepalived服务,虚拟ip地址漂移到从magent上。

(2)停掉主magent服务,client主机仍然可以进入代理服务端口12000.

(3)查看从magent日志,可以看到从magent服务器切换成master状态

至此 memcached+magent+keepalived 高可用群集完成

原文:http://blog.51cto.com/11134648/2150430

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!