搭建memcached 主主复制
(1)、搭建memcached 主主复制架构
Memcached 的复制功能支持多个 Memcached 之间相互复制(双向复制,主备都是可读可写的),可以解决 Memcached 的容灾问题。
memcached 本身不支持相互复制,需要卸载rpm 安装的memcached ,换带有支持复制功能的memcached;
yum -y remove memcached
(2)、环境准备
假设有两台服务器用于 Memcached 主主复制,分别为 Server A(192.168.1.20)和 Server B(192.168.1.21)。确保两台服务器都运行 CentOS 7 系统,并且网络可以正常通信。
(3)、安装依赖
在两台服务器上都执行以下命令安装编译所需的依赖:
yum install -y gcc make libevent-devel
(4)、下载并安装支持复制的 Memcached(repcached)
repcached 是实现 Memcached 复制功能的扩展,以下是安装步骤:
1. 下载 repcached
wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz
还有一个文件:
可以从我的飞书文档下载(点击下面链接网页):
2. 解压文件
上传后查看:
[root@localhost ~]# ls
预计输出:
memcached-1.2.8-repcached-2.2.tar.gz
解压缩:
[root@localhost ~]# tar zxvf memcached-1.2.8-repcached-2.2.tar.gz
3. 配置编译选项
cd memcached-1.2.8-repcached-2.2
./configure --prefix=/usr/local/memcached --enable-replication --with-libevent=/usr/lib64/
4. 编译并安装
make
make install
若有报错,请修改下面两个文件:
memcached.c文件:
vi memcached.c //改成如下样子,删了两行内容
55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 # define IOV_MAX 1024
58 #endif
replication.c文件
vim replication.c
#查看
head -n 12 replication.c
重新编译:
make clean
make &&make install
(5)、配置主主复制
1. 启动 Server 1的 Memcached
#创建对应的用户
useradd memcached
#进到对应目录启动服务
cd /usr/local/memcached/bin
./memcached -d -u memcached -m 64 -l 192.168.1.20 -p 11211 -x 192.168.1.21
注:若配合调度器上面的指令改成
./memcached -d -u memcached -m 64 -l 0.0.0.0 -p 11211 -x 192.168.1.21
启动服务后一定要查看进程,看到底服务启动没
[root@gyh ~]# netstat -naptl |grep memcached
注:netstat 这个网络指令来源于net-tools 这个软件包,没有就自己安装!
yum -y insatll net-tools
#停掉服务的方法
pkill -9 memcached
参数说明:
-d
:以守护进程模式运行。-u root
:以 root 用户身份运行。-m 64
:分配 64MB 内存给 Memcached。-l 192.168.1.20
:监听的 IP 地址。-p 11211
:监听的端口。-x 192.168.1.21
:指定要同步数据的对端服务器 IP。
2. 启动 Server B 的 Memcached
useradd memcached
cd /usr/local/memcached/bin
./memcached -d -u memcached -m 64 -l 192.168.1.21 -p 11211 -x 192.168.1.20
注:若配合调度器上面的指令改成
./memcached -d -u memcached -m 64 -l 0.0.0.0 -p 11211 -x 192.168.1.20
启动服务后一定要查看进程,看到底服务启动没
netstat -naptl |grep memcached
参数含义与 Server A 类似,只是监听 IP 和同步对端 IP 相反。
6)验证主主复制
1. 在 Server A 插入数据
[root@server1 bin]# telnet 192.168.1.20 11211
Trying 192.168.1.20...
Connected to 192.168.1.20.
Escape character is '^]'.
set key1 0 0 3
yin
STORED
quit
2. 在 Server B 验证数据
telnet 192.168.1.11 11211
get test_key
如果能获取到在 Server A 上插入的数据,说明主主复制配置成功。同理,在 Server B 上插入数据,也应该能在 Server A 上获取到。 注意:同步的前提,使用相同用户启动服务
搭建memcached 主主复制+keepalived 高可用
(1)在两个节点上都安装keepalived
yum -y install keepalived ipvsadm
(2)在192.168.1.20的 /etc/keepalived/keepalived.conf上的配置
vrrp_script chk_memcached {
script "/usr/bin/pgrep memcached"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.8.15/24
}
track_script {
chk_memcached
}
}
在192.168.1.21上的配置
vrrp_script chk_memcached {
script "/usr/bin/pgrep memcached"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.8.15/24
}
track_script {
chk_memcached
}
}
(3)启动keepalived
systemctl start keepalived
systemctl enable keepalived
(4) 测试故障切换
手动停止memcached: 在 192.168.1.20(master)
pkill -9 memcached
观察vip 飘逸
ip addr show ens33