Magent + Keepalived实现Memcached高可用群集

栏目: 数据库 · 发布时间: 6年前

内容简介:本身没有内置分布式功能,无法实现使用多台Memcachd服务器来存储不同的数据,最大程度的使用相同的资源;无法同步数据,容易造成单点故障,这里可以通过Memcached代理实现集群功能;由于Mamcached服务器与服务器之间没有任何通信,并且不进行任何数据复制备份,所以当任何服务器节点出现故障时,会出现单点故障,如果需要实现高可用,就需要通过其他方式。这里通过Magent缓存代理,防止单点现象,缓存代理也可以做备份功能,通过客户端连接到缓存代理了服务器,缓存代理服务器连接缓存连接复苏期,缓存代理服务器可

Memcached的特点:

  1. Memcached 中可以保存的item数据量是没有限制的,只要内存足够;
  2. Memcached单进程最大使用内存为2GB,要使用更多内存,可以分别在不同端口启动多个Memcached进程;
  3. Memcached是一种无阻塞的socket通信方式的服务,基于libevent库,由于无阻塞通信,对内存读写速度非常之快;
  4. Memcached分为服务器和客户端,可以配置多个服务器和客户端,应用于分布式的服务非常广泛;
  5. Memcached作为小规模的数据分布式平台是非常高效的;

Memcached存在的问题:

本身没有内置分布式功能,无法实现使用多台Memcachd服务器来存储不同的数据,最大程度的使用相同的资源;无法同步数据,容易造成单点故障,这里可以通过Memcached代理实现集群功能;

集群

由于Mamcached服务器与服务器之间没有任何通信,并且不进行任何数据复制备份,所以当任何服务器节点出现故障时,会出现单点故障,如果需要实现高可用,就需要通过其他方式。这里通过Magent缓存代理,防止单点现象,缓存代理也可以做备份功能,通过客户端连接到缓存代理了服务器,缓存代理服务器连接缓存连接复苏期,缓存代理服务器可以连接多台Memcached机器可以将每台Memcached机器进行数据同步,如果其中有一台缓存服务器down了,系统依然可以继续工作,如果其中一台Memcached机器down了,数据不会丢失并且可以保证数据的完整性。

架构图

Magent + Keepalived实现Memcached高可用群集

系统环境

主机名 操作系统 IP地址 软件包
Memcached1 Centos 7.3 x86_64 192.168.96.16 libevent-2.1.8-stable.tar.gz、memcached-1.5.9.tar.gz、magent-0.5.tar.gz、keepalived
Memcached2 Centos 7.3 x86_64 192.168.96.17 libevent-2.1.8-stable.tar.gz、memcached-1.5.9.tar.gz、keepalived
客户端 Centos 7.3 x86_64 192.168.96.22 telnet

相关软件包: 百度云盘 密码:b7za

开始部署

配置memcached主缓存节点和从缓存节点-----两台配置相同

1.关闭防火墙机及Selinux[重要]

setenforce 0
systemctl stop firewalld.service

2.安装环境包

yum -y install gcc gcc-c++ make

3.编译安装libevent(必须先安装)

#解压
tar zxvf libevent-2.1.8-stable.tar.gz -C /opt

#切换到libevent目录
cd /opt/libevent-2.1.8-stable/

#配置
./configure --prefix=/usr/

#编译及安装
make && make install

3.编译安装memcached

#解压
tar zxvf memcached-1.5.9.tar.gz -C /opt/

#切换到memcached
cd /opt/memcached-1.5.9/

#配置(指定libevent路径)
./configure --with-libevent=/usr/

#编译及安装
make && make install

4.优化启动(支持复制功能的Mencached需要安装后的libevent-2.1.so.6模块,不然启动服务会报错)

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

5.分别在两台服务器上启动memcached

#主服务器
memcached -m 512k -u root -d -l 192.168.96.16 -p 11211

#从服务器
memcached -m 512k -u root -d -l 192.168.96.17 -p 11211

6.检查memcached是否启动

netstat -ntap | grep 11211

Magent + Keepalived实现Memcached高可用群集

Magent + Keepalived实现Memcached高可用群集

magent在主服务器安装,从服务器不用安装

编译安装magent

1.创建magent目录

mkdir /opt/magent

2.解压

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

3.切换到目录

cd /opt/magent

4.让动态链接库为系统所共享

/sbin/ldconfig

5.编辑ketama.h,添加文件头部信息

vim ketama.h
#ifndef SSIZE_MAX
    #define SSIZE_MAX 32767
    #endif

Magent + Keepalived实现Memcached高可用群集

6.修改Makefile

sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile

Magent + Keepalived实现Memcached高可用群集

7.编译(完成后会生成一个manage的可执行文件)

make

Magent + Keepalived实现Memcached高可用群集

8.复制mgent命令到系统管理中,便于使用

cp /opt/magent/magent /usr/bin/

9.发送至从服务器

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

安装keepalived

yum -y install keepalived

1.编辑keepalived配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id magent_H1              #指定router_id
}

vrrp_script magent {                #定义函数
    script "/root/shell/magent.sh"
    interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33             #本地网卡名称
    virtual_router_id 51        #id主从一致
    priority 100                #主优先级大于从优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

track_script {              #调用函数
        magent
    }

virtual_ipaddress {         #vip地址
        192.168.96.100
    }

}

2.建立 shell 目录

mkdir /root/shell

3.创建magent.sh脚本

vim /root/shell/magent.sh
#!/bin/bash

Keepalived=`ps -ef | grep keepalived | grep -v grep | wc -l`
if [ $Keepalived -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.96.100 -p 12000 -s 192.168.96.16:11211 -b 192.168.96.17:11211
else
        pkill -9 magent
fi

参数说明:

-n 51200                #定义用户最大连接数
        -l 192.168.175.188                #指定虚拟IP
        -p 12000                   #指定端口号
        -s                              #指定主缓存服务器
        -b                              #指定从缓存服务器

4.赋予脚本执行权限

chmod +x /root/shell/magent.sh

5.启动keepalived服务

systemctl enable keepalived.service
systemctl start keepalived.service

6.检查keepalived服务状态

systemctl status keepalived.service

Magent + Keepalived实现Memcached高可用群集

7.检查vip地址

ip addr

Magent + Keepalived实现Memcached高可用群集

在从服务器上操作

1.安装keepalived

yum -y install keepalived

2.将主服务器上keepalived配置文件复制过来

scp root@192.168.175.128:/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

3.编辑keepalived配置文件

vim keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id magent_H2              #指定router_id
}

vrrp_script magent {                #定义函数
    script "/root/shell/magent.sh"
    interval 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33             #本地网卡名称
    virtual_router_id 51        #id主从一致
    priority 90             #主优先级大于从优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {         #vip地址
        192.168.96.100
    }
    track_script {              #调用函数
        magent
    }
}

4.新建shell目录

mkdir /root/shell

5.创建magent.sh脚本

vim /root/shell/magent.sh
#!/bin/bash
Keepalived=`ip addr | grep 192.168.96.100 | grep -v grep | wc -l`
if [ $Keepalived -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.96.100 -p 12000 -s 192.168.96.12:11211 -b 192.168.96.17:11211
else
        pkill -9 magent
fi

6.赋予脚本执行权限

chmod +x /root/shell/magent.sh

7.启动keepalived服务

systemctl enable keepalived.service
systemctl start keepalived.service

8.检查keepalived服务状态

systemctl status keepalived.service

Magent + Keepalived实现Memcached高可用群集

9.检查vip地址

ip addr

Magent + Keepalived实现Memcached高可用群集

在客户端测试

1.安装telnet客户端

yum -y install telnet

2.连接memcached

telnet 192.168.175.188 12000

测试复制功能

//连接vip进行测试,插入user键值
[root@centos7-1 ~]# telnet 192.168.96.100 12000
Trying 192.168.96.100...
Connected to 192.168.96.100.
Escape character is '^]'.
set user 0 0 5
test1
STORED
get user
VALUE user 0 5
test1
END
quit
Connection closed by foreign host.

//连接Memcached1,查询user键值,可以获取,成功!
[root@centos7-1 ~]# telnet 192.168.96.16 11211
Trying 192.168.96.16...
Connected to 192.168.96.16.
Escape character is '^]'.

get user
VALUE user 0 5
test1
END
quit
Connection closed by foreign host.

//连接Memcached2,查询user键值,也可以获取,成功!
[root@centos7-1 ~]# telnet 192.168.96.17 11211
Trying 192.168.96.17...
Connected to 192.168.96.17.
Escape character is '^]'.

get user
VALUE user 0 5
test1
END
quit
Connection closed by foreign host.

测试单点故障

Magent + Keepalived实现Memcached高可用群集

Magent + Keepalived实现Memcached高可用群集

Magent + Keepalived实现Memcached高可用群集


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Haskell School of Expression

The Haskell School of Expression

Paul Hudak / Cambridge University Press / 2000-01 / USD 95.00

Functional programming is a style of programming that emphasizes the use of functions (in contrast to object-oriented programming, which emphasizes the use of objects). It has become popular in recen......一起来看看 《The Haskell School of Expression》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具