文章目录
[隐藏]

一、概述

1、Memcached简介

Memcached作为通用的基于内存的分布式缓存系统,它通过内存缓存的数据和对象减少外部数据的源的访问次数,常用来加速数据库驱动的动态网站。

Memcached是一个基于内存key-value 的缓存,能够存储一些数据库访问、API 调用、或者页面渲染的随意的数据,如strings, objects。
(1)组成部分
  • 客户端软件:具备可访问的memcached服务器列表;
  • 基于客户端的Hash算法:能够基于“Key”选择访问的服务器;
  • 服务器软件:保存内部Hash表中Keys所对应的值;
  • LRU:最近最少使用统计,决定在内存溢出或内存重用时旧数据的丢弃。

(2)设计哲学

  • 简单的Key/Value存储:不关心数据长啥样,条目只由key、过期时间、可选标记和裸数据组成,需要提前序列化上传的数据,一些操作命令可以在底层数据上操作,但是是以一种简单的方式;
  • 一半在客户端一半在服务器端的逻辑:客户端知道该为一个条目选择服务器进行读写,也知道服务器不可访问时的步骤,服务器知道如何存储和读取条目,也知道何时回收和整理内存;
  • O(1)算法复杂度:所有操作命令实现必须很快,并且尽可能无锁化设计,查询即使在比较慢的机器上也应该控制在1ms,高端服务器上可以有上百万的查询吞吐。
  • 健忘特色:基于LRU算法, 在指定的时间后,条目会失效。
  • 缓存失效:避免向所有主机广播条目变化,客户端直接通知服务器其所持有的数据失效。

2、关于Openstack

Memcached是一个内存缓存Daemon,能为大多数的Openstack服务提供临时数据的缓存,例如tokens。

对于缓存的访问无需通过HAProxy处理,因为复制访问都是在一种尝试性的状态,相反,OpenStack服务必须由足够多的主机运行Memcached来提供缓存服务。

Memcached 客户端通过实现Hash负载均衡访问虚拟机间的对象,如果失败的实例只影响一部分对象,客户端将自动从实例列表中移除,间隔SLA定义为几分钟。

二、脚本

安装配置非常简单,install-configure-memcached.sh如下

在使用配置时,只需要制定运行memcached的主机列表即可,如下:

默认情况是controller01处理缓存服务,如果该节点宕机,controller02或controller03将继续完成该缓存服务。

三、参考文档

https://github.com/memcached/memcached/wiki/Overview

https://docs.openstack.org/ha-guide/controller-ha-memcached.html

https://docs.openstack.org/ha-guide/environment-memcached.html

四、源码

脚本源码:https://github.com/zjmeixinyanzhi/Openstack-HA-Install-Shells

五、系列文章

Openstack云平台脚本部署”系列文章目录如下:

Openstack云平台脚本部署之概述(零)

Openstack云平台脚本部署之基础环境配置(一)

Openstack云平台脚本部署之Galera高可用集群配置(二)

Openstack云平台脚本部署之RabbitMQ高可用集群部署(三)

Openstack云平台脚本部署之MongoDB配置(四)

Openstack云平台脚本部署之Memcached配置(五)

Openstack云平台脚本部署之Keystone认证服务配置(六)

Openstack云平台脚本部署之Glance镜像服务配置(七)

Openstack云平台脚本部署之Nova计算服务配置(八)

Openstack云平台脚本部署之Neutron网络服务配置(九)

Openstack云平台脚本部署之Dashboard配置(十)

Openstack云平台脚本部署之Cinder块存储服务配置(十一)

Openstack云平台脚本部署之Ceilometer数据收集服务配置(十二)

Openstack云平台脚本部署之Aodh告警服务配置(十三)

Openstack云平台脚本部署之Ceph存储集群配置(十四)

Openstack云平台脚本部署之计算节点服务配置(十五)

Openstack云平台脚本部署之增加计算节点配置(十六)