CentOS 7上Memcached的安装、配置及高可用架构搭建
Memcached是一款高性能的分布式内存缓存系统,常用于加速动态Web应用的响应。本文将在CentOS 7上详细介绍Memcached的安装、配置,以及如何实现Memcached的高可用架构。
(1)、搭建memcached 主主复制架构
Memcached 的复制功能支持多个 Memcached 之间相互复制(双向复制,主备都是可读可写的),可以解决 Memcached 的容灾问题。
memcached 本身不支持相互复制,需要卸载rpm 安装的memcached ,换带有支持复制功能的
memcached;
yum -y remove memcached
(2)、环境准备
假设有两台服务器用于 Memcached 主主复制,分别为 Server A(10.1.1.7)和 ServerB(10.1.1.12)。确保两台服务器都运行 CentOS 7 系统,并且网络可以正常通信。
(3)、安装依赖
在两台服务器上都执行以下命令安装编译所需的依赖:
yum install -y gcc make libevent-devel
(4)、下载并安装支持复制的 Memcached(repcached)
repcached 是实现 Memcached 复制功能的扩展,以下是安装步骤:
1. 下载 repcached
如果上述链接不可用,你可以在 SourceForge 等网站上查找合适的版本。
wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz
- 解压文件
tar -xzvf memcached-1.2.8-repcached-2.2.tar.gz
cd memcached-1.2.8-repcached-2.2
- 配置编译选项
./configure --prefix=/usr/local/memcached --enable-replication --with- libevent=/usr/lib6/
- 编译并安装
make
make install
编译过程中报错处理:
修改完文件,执行如下命令:
vi memcached.c //改成如下样子,删了两行内容
55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 # define IOV_MAX 1024
58 #endif
vim replication.c //修改添加一行
make clean
make &&make install
(5)、配置主主复制
1. 启动 Server A 的 Memcached
useradd memcached
cd /usr/local/memcached/bin
./memcached -d -u memcached -m 64 -l 10.1.1.7 -p 11211 -x 10.1.1.22
参数说明:
-d :以守护进程模式运行。
-u root :以 root 用户身份运行。
-m 64 :分配 64MB 内存给 Memcached。
-l 192.168.1.10 :监听的 IP 地址。
-p 11211 :监听的端口。
-x 192.168.1.11 :指定要同步数据的对端服务器 IP。
2. 启动 Server B 的 Memcached
参数含义与 Server A 类似,只是监听 IP 和同步对端 IP 相反。
cd /usr/local/memcached/bin
./memcached -d -u memcached -m 64 -l 10.1.1.22 -p 11211 -x 10.1.1.7
(6)验证主主复制
1. 在 Server A 插入数据
- 在 Server B 验证数据
如果能获取到在 Server A 上插入的数据,说明主主复制配置成功。同理,在 Server B 上插入数据,也应该能在 Server A 上获取到。
搭建memcached 主主复制+keepalived 高可用
- 在两个节点上都安装keepalived
yum -y install keepalived ipvsadm
- 在10.1.1.7 上的配置
Vi /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 {
10.x.x.x
}
track_script {
chk_memcached
}
}
[root@gyh keepalived]#
在10.1.1.22上,仅修改state和priority
state BACKUP
priority 90
- 启动keepalived
systemctl start keepalived
systemctl enable keepalived
(4) 测试故障切换
手动停止memcached: 在 10.1.1.7(master)
pkill -9 memcached
观察vip 飘逸
ip addr show ens33