设为首页 收藏本站
查看: 863|回复: 0

[经验分享] Centos7 下实现 memcached + keepalived 高可用群集

[复制链接]

尚未签到

发表于 2018-12-25 08:58:05 | 显示全部楼层 |阅读模式
memcached + keepalived 高可用群集

memcached介绍
  Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存
储在内存中,因为在内存中会统一维护一张巨大的Hash表,所以支持任意存储类型的
数据。很多网站通过使用 Memcached提高网站的访问速度,尤其是对于大型的需要频
繁访问数据的网站。
Memcached是典型的C/S架构,因此需要安装 Memcached服务端与 Memcached
API客户端。 Memcached服务端是用C语言编写的,而 Memcached API客户端可以用
任何语言来编写,如PHP、 Python、Perl等,并通过 Memcached协议与 Memcached服
务端进行通信。

memcached主从复制+keepalived高可用框架介绍
  Memcached服务器修改数据都会被同步到
另外一台,但是 Memcached API客户端是无法判断连接到哪一台 Memcached服务
器的,所以需要设置VP地址,提供给 Memcached Apl客户端进行连接。可以使用
keepalived产生的VP地址连接主 Memcached服务器,并且提供高可用架构。
  因为 Memcached主从复制这种架构,在程序连接主服务
器,在前端加VP地址,实现高可用架构。这里用 Keepalived实现,因而
Keepalived的作用是用来检测 Memcached服务器的状态是否正常。
Keepalived不断检测 Memcached主服务器的11211端口,如果检测到 Memcached
服务发生宕机或者死机等情况,就会将VP从主服务器移至从服务器,从而实现
Memcached的高可用性。

实验准备
  一台主服务器
需要安装 magent memcached libevent keepalived
一台从服务器
需要安装  memcached libevent keepalived

实验步骤

在主服务器和从服务器上安装memcached 和 libevent

tar xzvf memcached-1.5.6.tar.gz
tar xzvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8
./configure --prefix=/usr    ##指定安装路径
make && make install   
cd memcached-1.5.6
./configure --with-libevent=/usr
make && make install
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6    ##主服务器上magent服务需要这个模块

在主服务器上安装magent

mkdir /magent
tar xzvf magent-0.5.tar.gz
cd /magent
vim ketama.h
修改
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
vim Makefile
LIBS = -levent -lm
make
cp magent /usr/bin   ##方便系统识别命令
在主服务器上把magent 复制到从服务器上

yum install openssh-clients
scp magent root@192.168.x.x:/usr/bin
在主服务器上安装keepalived

vim /etc/keepalived/keepalived.conf
router—_id MAGENT_HA
删除
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
定义新函数
vrrp_script magent{
script"/opt/shell/magent.sh"
interval 2       ##时间间隔
}
修改vrrp_instance下面
INTERFACE ens33
添加
track_script {
magent
}        ## 使用新函数
定义一个虚拟IP
virtual_ipaddress {
192.168.x.x
}
下面多余的部分可以全部删除

在从服务器上安装keepalived

yum install keepalived
从主服务器上把配置脚本复制到从服务器上
scp /etc/keepalived/keepalived.conf root@192.168.x.x.:/etc/keepalived/keepalived.conf
vim /etc/keepalived
router_id MAGENT_HB
state BACKUP     ##从服务器
virtual_router_id 52    ##ID不同
priortity 90     ##优先级

在主服务器上配置 magent脚本

mkdir /opt/shell
vim /opt/shell/magent.sh
#!/bin/bash
K=`ps -ef | grep keepalived | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 192.168.x.x -p 12000 -s 192.168.x.x:11211 -b 192.168.x.x:11211
else
pkill -9 magent
fi
-n 51200 //定义用户最大连接数
-l 192.168.x.x //指定虚拟IP
-p 12000  //指定端口号
-s //指定主缓存服务器
-b //指定从缓存服务器
chmod +x magent.sh
在从服务器上配置 magent脚本

mkdir /opt/shell
vim /opt/shell/magent.sh
#!/bin/bash
K=`ip addr | grep 192.168.x.x(虚拟IP) | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 192.168.x.x -p 12000 -s 192.168.x.x:11211 -b 192.168.x.x:11211
else
pkill -9 magent
fi  
chmod +x magent.sh
主从服务器开启keepalived服务

systemctl start keepalived.service
netstat -ntap |grep 12000
如果有12000端口表示服务开启成功
登录memcached服务器

memcached -m 512k -u root -d -l 192.168.xx 主 -p  11211
memcached -m 512k -u root -d -l 192.168.x.x 从 -p  11211
netstat -ntap |grep 11211
有11211端口表示服务开启成功
测试

在第三台服务器上安装 telnet
yum install telnet -y
telnet 192.168.x.x(虚拟IP) 12000
add username 0 0 7
1234567
Stored
quit
## 通过虚拟IP登录 并创建一个用户
telnet 192.168.x.x(主/从服务器) 11211
get username
VALUE username 0 7
1234567
END
quit
##  在主从服务器上都能得到这个数据
在主服务器上关掉 memcached
pkill -9 memcached
192.168.x.x(虚拟IP) 12000
add username 0 0 7
1234567
Stored
quit
## 通过虚拟IP 写入数据
telnet 192.168.x.x(从服务器) 11211
get username
VALUE username 0 7
1234567
END
quit
## 从服务器依然能读取到

至此 memcached+keepalived 高可用群集完成




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655509-1-1.html 上篇帖子: memcache和memcached区别 下篇帖子: 缓存服务器之memcached和varnish
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表