Memcached概述
一套开源的高性能分布式内存对象缓存系统
所有的数据都存储在内存中
支持任意存储类型的数据
提高网站的访问速度
数据存储方式与数据过期方式
数据存储方式:Slab Allocation
按组分配内存,每次先分配一个Slab,相当于一个大小为1M的页,然后在1M的空间里根据数据划分大小的Chunk
数据过期方式
LRU:数据空间不足时,会根据LRU的情况淘汰最近最少使用的记录
Laxzy Expiration :惰性过期,是指使用get时查看记录时间,从而检查记录是否已经过期
部署Memcached实验
1.修改主机名
2.在memcache01节点上
1.上传软件包(libevent-2.1.8-stable.tar.gz,memcached-1.5.1.tar.gz)
2.下载依赖包
yum -y install gcc gcc-*
tar -zxvf libevent-2.1.8-stable.tar.gz -C /usr/src/
cd /usr/src/libevent-2.1.8-stable/
./configure --prefix=/usr/local/libevent
make && make install
cd
tar -zxvf memcached-1.5.1.tar.gz -C /usr/src/
cd /usr/src/memcached-1.5.1/
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make && make install
cd
/usr/local/memcached/bin/memcached -d -m 128 -u root
单节点部署成功
3.在memcache02节点上
1.上传软件包(libevent-2.1.8-stable.tar.gz)
2.下载依赖
yum -y install gcc gcc-*
tar -zxvf libevent-2.1.8-stable.tar.gz -C /usr/src/
cd /usr/src/libevent-2.1.8-stable/
./configure --prefix=/usr/local/libevent
make && make install
4.操作使用
1.切换第三台机器(充当客户端)
2.安装telnet
#类似ssh,主要用于远程登录服务。然而,在某些情况下,这个命令可能只会安装telnet客户端或同时包含客户端和服务器的软件包(如果存在这样的包)
yum -y install telnet
3.使用telnet管理数据库
#连接的第一台的IP地址,memcache的端口号
telnet 192.168.27.140 11211
添加一个数据,查询数据(第一个0 ,定义的是标记信息,第二个0是过期时间,0是永不过期。第三位数是数据内容长度必须是这个,否则不生效,或者报错)
修改一个数据(不仅可以修改数据,还能充当add添加的功能)
删除数据
清空数据
退出(ctrl+} 回车输入quit即可退出telnet)
4.使用php软件管理
1.安装软件包
yum install httpd php php-devel zlib-devel -y
echo '<?php phpinfo(); ?>' > /var/www/html/info.php
systemctl start httpd
2.安装完成后,浏览器访问测试安装
http://192.168.27.139/info.php
3.安装引入模块
1.上传依赖包(libmemcached-1.0.18.tar.gz 被 memcached-2.2.0.tgz依赖,所以需要两个包)
2.安装
yum -y install gcc gcc-*
tar -xzvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18/
./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached
make && make install
cd
3.安装memcache
tar zxf memcached-2.2.0.tgz
cd memcached-2.2.0
#使用phpize生成./config命令
phpize
#拷贝php支持文件
cp -r /usr/include/php/ext/ ./
# 配置时使用--disable-memcached-sasl 选项,关闭 Memcached 的 SASL 认证功能,否则会报错
# --with-php-config获取php的信息
./configure \
--enable-memcached \
--with-php-config=/usr/bin/php-config \
--with-libmemcached-dir=/usr/local/libmemcached \
--disable-memcached-sasl
make
make test
make install
4.执行完毕后,在执行一次make install 生成一下php存放的路径
#执行完上诉操作后,会有一个发送邮件的提示,输入n拒绝
make install
#打开配置文件,调整内容
vi /etc/php.ini
extension_dir = "/usr/lib64/php/modules/"
extension=memcached.so
重启服务
systemctl restart httpd
刷新网页,查看是否有下图内容,有则memcache即可使用
验证memcache是否可用
打开网页验证
vi /var/www/html/test.php
<?php
$memcache = new Memcached();
$memcache->addServer('192.168.27.140', 11211);
$memcache->set('key', 'Memcache test successful!', 0, 60);
$result = $memcache->get('key');
unset($memcache);
echo $result;
?>
网页验证(IP为第三台IP)
部署 带有复制功能的memcache
1.在第一台机器上关闭冲突启动
pkill memcached
2.在两台memcache节点上上传软件包(memcached-1.2.8-repcached-2.2.tar.gz)
3. 安装
tar zxf memcached-1.2.8-repcached-2.2.tar.gz
cd memcached-1.2.8-repcached-2.2
./configure --prefix=/usr/local/memcached_replication --enable-replication --with-libevent=/usr/local/libevent
1.安装之前要调整代码
vi memcached.c
2.删除标记两行
3.编译安装
make && make install
4.在memcache01节点上
ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/
#IP指向memcache02的IP
/usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.27.130
5.在memcache02节点上
ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/
#IP指向memcache01的IP
/usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.27.140
6.在第三台机器验证。
#连接第一台机器
telnet 192.168.27.140 11211
7.高可用
1.在memcache01 memcache02节点安装 keepalived
cd
yum -y install keepalived
2.在memcache01节点
#打开配置文件
vi /etc/keepalived/keepalived.conf
#删除所有内容
3.删除所有内容,替换一下内容,按图修改内容
! Configuration File for keepalived
global_defs {
router_id LB01
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.27.200
}
}
virtual_server 192.168.27.200 11211 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
#对向节点的IP,即memcache02的IP
sorry_server 192.168.27.129 11211
#本节点的IP
real_server 192.168.27.128 11211 {
weight 1
notify_down /root/memcached.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 11211
}
}
}
4.保存退出,切换memcache02节点
5.在memcache01节点
#打开配置文件
vi /etc/keepalived/keepalived.conf
#删除所有内容
6.删除所有内容,替换一下内容,按图修改内容
! Configuration File for keepalived
global_defs {
router_id LB02
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.27.200
}
}
virtual_server 192.168.27.200 11211 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
#对向节点的IP,即memcache02的IP
sorry_server 192.168.27.128 11211
#本节点的IP
real_server 192.168.27.129 11211 {
weight 1
notify_down /root/memcached.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 11211
}
}
}
7.在两台memcache节点操作
echo "/usr/bin/systemctl stop keepalived"> /root/memcached.sh
chmod +x memcached.sh
systemctl start keepalived
systemctl enable keepalived
验证其中一台是否出现了VIP地址
验证
停掉vip所在机器的memcached服务
pkill memcached
会在另一台机器出现vip地址,实现了故障切换,即高可用