Memcached的安装和基本操作 博客
在这个博客里面的一个测试网页源码里面的IP地址要改为这次Keepalived的VIP地址,来测试高可用性。最末尾的一个网页验证。
简介
Memcached主主复制是指在一台Memcached服务器修改数据都会被同步到另外一台,但是Memcached API客户端是无法判断连接到哪一台Memcached服务器的,所以需要设置VIP地址,提供给Memcached API客户端进行连接,可以使用keepalived产生的VIP地址连接主Memcached服务器,并且提供高可用架构。
案例环境
名称 | IP地址 | 操作系统 | 主要软件包 |
---|---|---|---|
Memcached1 | 192.168.10.101 | CentOS Linux release 7.3.1611 (Core) | memcached-1.2.8-repcached-2.2.tar libevent-2.1.8-stable.tar.gz keepalived.x86_64 |
Memcached2 | 192.168.10.102 | CentOS Linux release 7.3.1611 (Core) | memcached-1.2.8-repcached-2.2.tar libevent-2.1.8-stable.tar.gz keepalived.x86_64 |
Memcached主主复制架构
Memcached的复制功能支持多个memcached之间进行相互复制(双向复制,主备都是可读可写的),可以解决Memcached的容灾问题。
要使用Memcached复制架构,需要重新下载支持复制功能的Memcached安装包,https://sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz
注意:如果使用其他版本的安装包不支持复制功能。比如memcached-1.5.1.tar等。
1.安装带有复制功能的Memcached
安装完成Libevent之后,将下载的memcached-1.2.8-repcached-2.2.tar进行解压,然后完成编译安装。
[root@Memcached1 src]# tar zxvf memcached-1.2.8-repcached-2.2.tar.gz
[root@Memcached1 memcached-1.2.8-repcached-2.2]# ./configure --prefix=/usr/local/memcached_replication --enable-replication --with-libevent=/usr/local/libevent
注意:在make编译安装的时候如果报错:
memcached.c: 在函数‘add_iov’中:
memcached.c:696:30: 错误:‘IOV_MAX’未声明(在此函数内第一次使用)
if (m->msg_iovlen == IOV_MAX ||
^
memcached.c:696:30: 附注:每个未声明的标识符在其出现的函数内只报告一次
make[2]: *** [memcached-memcached.o] 错误 1
make[2]: 离开目录“/usr/src/memcached-1.2.8-repcached-2.2”
make[1]: *** [all-recursive] 错误 1
make[1]: 离开目录“/usr/src/memcached-1.2.8-repcached-2.2”
make: *** [all] 错误 2
解决办法:
[root@Memcached1 memcached-1.2.8-repcached-2.2]# vim memcached.c
将有红色标记的行给删除掉。
红色标记的意思是不支持Centos操作系统需要删掉。
[root@Memcached1 memcached-1.2.8-repcached-2.2]# make && make install
2.启动Memcached服务。
支持复制功能的Memcached安装完成之后,需要将编译安装的libevent-1.4.so.2模块复制到/usr/lib64目录下,否则在启动带有复制功能的Memcached服务时会报错。
[root@Memcached1 /]# ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/
启动服务时,使用-x选项指向对端
[root@Memcached1 /]# /usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.10.102 在第一台上面操作
[root@Memcached2 /]# /usr/local/memcached_replication/bin/memcached -d -uroot -m 128 -x 192.168.10.101 在第二台上面操作
在两台上面都要安装。
3.使用telnet进行验证复制功能
1.在第一台上面插入一条键值,2.在第二条上面可以查看到这对键值。这就是主主复制。
Memcached主主复制+Keepalived高可用架构
因为Memcachedx主主复制这种架构,程序连接时不知道应该连接那个主服务器,所以需要在前面加VIP地址,实现高可用架构,这里用Keepalived实现,因而Keepalived的作用是用来检查Memcached服务器的状态是否正常。
Keepalived不断检查Memcached主服务器11211端口,如果检查到Memcached服务器发生宕机或者死机等情况,就会将VIP从主服务器一直从服务器,从而实现Memcached的高可用性
1.安装配置Keepalived
yum -y install keepalived.x86_64
2.配置主Keepalived
! Configuration File for keepalived
global_defs {
notification_email {
2229088784@qq.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 10
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.66 dev eth0 label eth0:1
}
}
virtual_server 192.168.10.66 11211 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.10.102 11211
real_server 192.168.10.101 11211 {
weight 1
notify_down /etc/keepalived/memcached.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 11211
}
}
}
两台都需要设置执行脚本
[root@Memcached1 keepalived]# echo “/usr/bin/systemctl stop keepalived” > memcached.sh
[root@Memcached1 keepalived]# chmod +x memcached.sh
3.在另一台服务器上面配置从的Keepalived
! Configuration File for keepalived
global_defs {
notification_email {
2229088784@qq.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 10
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.66 dev eth0 label eth0:1
}
}
virtual_server 192.168.10.66 11211 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.10.101 11211
real_server 192.168.10.102 11211 {
weight 1
notify_down /etc/keepalived/memcached.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 11211
}
}
}
4.重启Keepalived
[root@Memcached2 keepalived]# systemctl restart keepalived
验证是否高可用Memcached
1.首先查看主服务器的VIP地址
2.杀死主上面的Memcached,看VIP是否已经漂移到从的服务器上面。并访问网页查看是否可以继续访问
[root@Memcached1 keepalived]# killall memcached
3.查看网页是否可以访问
到这里,Memcached的双主复制和Keepalived高可用已经完成了。