标签:config ado 识别 blog 图片 sha ddr int oba
实现主从复制和高可用的方式Memcached主从复制是指在主Mencached服务器上修改数据都会被同步到其他服务器上,MemcachedAPI客户端是无法判断连接到那一台Memcached服务器,所以需要VIP地址,提供给MemcachedAPI客户端进行连接。可以使用keepaived产生的VIP地址连接主Memcached服务器来完成,并且提供高可用架构。
服务器 | IP地址 | 主要软件 |
---|---|---|
主Memcached | 172.16.10.24 | libevent、memcached、magent、keepalived |
从Memcached | 172.16.10.22 | libevent、memcached、keepalived |
Client | 172.16.10.21 | telnet |
项目所用源码包可自行到官方网站下载,或者使用我下载好的项目用安装包
Memcached服务器在两台服务器上都需要搭建,方式完全相同,在安装memcached服务器是需先安装libevent,然后再安装memcached。
yum -y install gcc gcc-c++ make
tar zxf memcached-1.5.9.tar.gz -C /opt/
tar zxf libevent-2.1.8-stable.tar.gz -C /opt/
cd libevent-2.1.8-stable/
./configure --prefix=/usr/
make && make install
cd memcached-1.5.9/
./configure --with-libevent=/usr
make && make install
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
//memcached自带有复制功能,如果不建立软连接,则启动会失败
magent是一个memcached代理软件,防止单点故障,缓存代理也可以着备份,通过客户端连接缓存代理服务器,缓存代理服务器连接缓存服务器。
mkdir /opt/magent
tar zxf magent-0.5.tar.gz -C /opt/magent
cd /opt/magent
vim ketama.h //修改文件
#ifndef SSIZE_MAX //修改
#define SSIZE_MAX 32767 //修改
#endif //末行也有一行#ndif,删除
vi Makefile //修改文件
LIBS = -levent -lm //此处为lm,不是一
make //编译完成之后会生成一个magent可执行文件
cp /opt/magent/magent /usr/bin/
scp /opt/magent/magent root@172.16.10.22:/usr/bin/ //发送到从服务器上
yum -y install keepalived
! 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_HA //router_id自定义,但是要确保主从不一致
}
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2 //定义一个函数,此时该脚本还未创建,要在实例外面定义
}
vrrp_instance VI_1 {
state MASTER //从为BACKUP
interface ens33
virtual_router_id 51 //此处id也不可相同
priority 100 //从的优先级不要高于主
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
magent //应用函数
}
virtual_ipaddress {
172.16.10.188 //定义vtp自定义,只要不是在使用中的地址即可
}
} //配置文件下面还有多余的内容此时就可以直接删除
//从配置文件与主不相同的地方我已经指出来了,其他的都一样
mkdir /opt/shell
cd /opt/magent
vim 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 172.16.10.188 -p 12000 -s 172.16.10.24:11211 -b 172.16.10.22:11211
else
pkill -9 magent
fi
##参数解释
-n 51200 //定义用户最大连接数
-l 192.168.175.188 //指定虚拟IP
-p 12000 //指定端口号
-s //指定主缓存服务器
-b //指定从缓存服务器
chmod +x magent.sh //增加可执行权限
mkdir /opt/shell
cd /opt/magent
vim /opt/magent/magent.sh
#!/bin/bash
K=`ip addr | grep 172.16.10.188 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 172.16.10.188 -p 12000 -s 172.16.10.24:11211 -b 172.16.10.22:11211
else
pkill -9 magent
fi
systemctl stop firewalld.service
setenforce 0
systemctl start keepalived.service
netstat -ntap | grep 12000 //端口开启可能有点延迟,稍作等待
ipa ddr //查看主服务器上是否绑定VIP
memcached -m 512k -u root -d -l 172.16.10.24 -p 11211 //主服务器
memcached -m 512k -u root -d -l 172.16.10.22 -p 11211 //从服务器
netstat -ntap | grep 11211
yum -y install telnet
telnet 172.16.10.188 12000 //采用VIP连接
连接VIP写入数据,查看两台服务器上是否都已经有了数据
[root@centos]# telnet 172.16.10.188 12000
Trying 172.16.10.24...
Connected to 172.16.10.24.
Escape character is ‘^]‘.
set qwe 0 0 3
123
STORED
连接主从服务器
telnet 172.16.10.24 11211
telnet 172.16.10.22 11211
[root@centos]# telnet 172.16.10.24 11211
Trying 172.16.10.24...
Connected to 172.16.10.24.
Escape character is ‘^]‘.
get user
VALUE user 0 3
123
END
systemctl stop keepalived.service //关闭主服务器keepalived服务
ipaddr //查看VIP是否漂移到从服务器上
标签:config ado 识别 blog 图片 sha ddr int oba
原文地址:http://blog.51cto.com/13643643/2150152