Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它经过在内存中缓存数据和对象来减小读取数据库的次数,从而提升动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,可是客户端能够用任何语言来编写,并经过memcached协议与守护进程通讯。shell
主机名称 | IP地址 | 主要服务软件 |
---|---|---|
memcached主服务器 | 172.16.10.138 | memcached,libevent,magent,keepalived |
memcached从服务器 | 172.16.10.137 | memcached,libevent,keepalived |
客户端 | 172.16.10.134 | telnet测试 |
tar xf libevent-2.1.8-stable.tar.gz -C /opt tar xf memcached-1.5.6.tar.gz -C /opt tar xf magent-0.5.tar.gz -C /opt cd /opt/libevent-2.1.8 ./configure --prefix=/usr #指定安装路径 make && make install #编译安装 cd /opt/memcached-1.5.6 ./configure --with-libevent=/usr #指定安装路径 make && make install #编译安装 ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 #主服务器上magent服务须要这个模块
cd /opt/magent数据库
vim ketama.h #ifndef SSIZE_MAX #修改 #define SSIZE_MAX 32767 #修改 #endif vim Makefile LIBS = -levent -lm #修改,添加-lm make
cp mgent /usr/bin #把生成的mgent程序让系统识别 vim
- 配置memcached从缓存节点服务器
tar xzvf memcached-1.5.6.tar.gz -C /opt tar xzvf libevent-2.1.8-stable.tar.gz -C /opt cd /opt/libevent-2.1.8 ./configure --prefix=/usr make && make install cd /opt/memcached-1.5.6 ./configure --with-libevent=/usr make && make i nstall ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 #主服务器上magent服务须要这个模块
yum install openssh-clients缓存
scp magent root@172.16.10.137:/usr/bin/ //把产生的magent文件直接复制到从服务器。bash
yum -y install keepalived服务器
vim /etc/keepalived/keepalived.conf ssh
router_id MAGENT_HA #router_id主从不能相同,要修改 vrrp_script magent { script "/opt/shell/magent.sh" interval 2 } #定义一个新函数,每2s自动执行这个脚本 vrrp_instance VI_1 { state MASTER #这边是主服务器,从服务器是BACKUP interface ens33 #网卡接口是ens33 virtual_router_id 51 priority 100 #优先级,从服务器小于主服务器 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { magent #触发执行magent脚本 } virtual_ipaddress { 172.16.10.200 #虚拟IP(vip) } } 将下面多余的配置所有删除
yum -y install keepalived分布式
vim /etc/keepalived/keepalived.conf ide
router_id MAGENT_HB #router_id主从不相同 vrrp_script magent { script "/opt/shell/magent.sh" interval 2 } #定义一个新函数,每2s自动执行这个脚本 vrrp_instance VI_1 { state MASTER #这边是从服务器,是BACKUP interface ens33 #网卡接口是ens33 virtual_router_id 51 priority 90 #优先级,从服务器小于主服务器 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { magent #触发执行magent脚本 } virtual_ipaddress { 172.16.10.200 #虚拟IP(vip) } } 将下面多余的配置所有删除
mkdir /opt/shellmemcached
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.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211 else pkill -9 magent fi -n 51200 #定义用户最大链接数 -l 192.168.58.100 #指定虚拟IP -p 12000 #指定端口号 -s #指定主缓存服务器 -b #指定从缓存服务器 #这个脚本意思就是一旦检测到系统进程中有keepalived进程,就执行magent这条命令,若是没有,则将magent进程杀死。总得来讲就是,主服务器上没有keepslived进程,magent就会和从服务器链接。 chmod +x /opt/shell/magent.sh #给脚本添加执行权限
mkdir -p /opt/shell
vim /opt/shell/magent.sh #!/bin/bash K=`ip addr | grep 192.168.58.100 | grep -v grep | wc -l` if [ $K -gt 0 ]; then magent -u root -n 51200 -l 192.168.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211 else pkill -9 magent fi #从服务器的脚本意思就是检测到虚拟ip漂移是否到本身身上,若是VIP进行漂移到从服务器以后,就会执行magent这条命令,目的就是在主服务器宕掉的时候,从服务器可以正常启动。
首先使用客户机安装telnet,远程链接VIP节点,写入用户以后,主从缓存服务器会自动获取下载该用户。