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

  1. 解压文件

tar -xzvf memcached-1.2.8-repcached-2.2.tar.gz

cd memcached-1.2.8-repcached-2.2

  1. 配置编译选项

./configure --prefix=/usr/local/memcached --enable-replication --with- libevent=/usr/lib6/

  1. 编译并安装

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。

  1. 启动 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 插入数据
  1. 在 Server B 验证数据

如果能获取到在 Server A 上插入的数据,说明主主复制配置成功。同理,在 Server B 上插入数据,也应该能在 Server A 上获取到。

搭建memcached 主主复制+keepalived 高可用

  1. 在两个节点上都安装keepalived

yum -y install keepalived ipvsadm

  1. 在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 1. 启动keepalived > systemctl start keepalived > > systemctl enable keepalived ![](https://i-blog.csdnimg.cn/direct/ab3b1c6ba4c344828f570e0478f95c47.png) (4) 测试故障切换 手动停止memcached: 在 10.1.1.7(master) pkill -9 memcached 观察vip 飘逸 ip addr show ens33 ![](https://i-blog.csdnimg.cn/direct/b406767e54ce414185c05f24081d7a41.png)

相关推荐
后端木木9 分钟前
一键 Ubuntu、Debian、Centos 换源(阿里源、腾讯源等)
ubuntu·centos·debian
cooldream20093 小时前
利用 Scrapy 构建高效网页爬虫:框架解析与实战流程
爬虫·scrapy·架构
扎Zn了老Fe4 小时前
掌握系统架构(三):打造高性能、高可用、可伸缩技术架构
架构·后端开发
乐观主义现代人5 小时前
centos 9/ubuntu 一次性的定时关机
linux·ubuntu·centos
向上的车轮6 小时前
Spring Boot微服务架构(十一):独立部署是否抛弃了架构优势?
spring boot·微服务·架构
昭阳~7 小时前
Kafka深度技术解析:架构、原理与最佳实践
分布式·架构·kafka
向上的车轮7 小时前
Spring Boot微服务架构(十):Docker与K8S部署的区别
spring boot·微服务·架构
brzhang7 小时前
iOS 26 的备忘录,终于他娘的要支持 Markdown 了!
前端·后端·架构
链上Sniper8 小时前
Python 区块链开发实战:从零到一构建智能合约
开发语言·网络·python·架构·区块链·php·智能合约
想用offer打牌8 小时前
面试官问我:库存预扣减之后,用户订单超时之后怎么补偿库存?我的方案让他满意...
后端·面试·架构