Memcached主从复制是指在主Mencached服务器上修改数据都会被同步到其余服务器上,MemcachedAPI客户端是没法判断链接到那一台Memcached服务器,因此须要VIP地址,提供给MemcachedAPI客户端进行链接。能够使用keepaived产生的VIP地址链接主Memcached服务器来完成,而且提供高可用架构。linux
服务器 | IP地址的 | 主要软件 |
---|---|---|
主Memcached | 192.168.100.21 | libevent、memcached、magent、keepalived |
从Memcached | 192.168.100.22 | libevent、memcached、magent |
Client | 192.168.100.23 | telnet |
安装环境包c++
yum -y install gcc gcc-c++ make
解压软件包shell
tar zxf memcached-1.5.9.tar.gz -C /opt/ tar zxf libevent-2.1.8-stable.tar.gz -C /opt/
编译安装libeventvim
cd libevent-2.1.8-stable/ ./configure --prefix=/usr/ make && make install
编译安装memcached缓存
cd memcached-1.5.9/ ./configure --with-libevent=/usr make && make install 优化启动 ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 //memcached自带有复制功能,若是不创建软链接,则启动会失败
在主服务器上安装magentbash
magent是一个memcached代理软件,防止单点故障,缓存代理也能够着备份服务器
cd /opt/magent vim ketama.h //修改文件 #ifndef SSIZE_MAX //修改 #define SSIZE_MAX 32767 //修改 #endif //末行也有一行#ndif,删除 vi Makefile //修改文件 LIBS = -levent -lm //此处为lm,不是一 make //编译完成以后会生成一个magent可执行文件
让服务便于系统识别架构
cp /opt/magent/magent /usr/bin/ scp /opt/magent/magent root@192.168.100.22:/usr/bin/ //发送到从服务器上 主从服务器安装keepalived yum -y install keepalived
修改主从服务器配置文件ide
vim/etc/keepalived/keepalived.cof ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id MAGENT_HA //自定义不要和从服务器同样就OK } vrrp_script magent { script "/opt/shell/magent.sh" //定义一个函数,此时该脚本还未建立,要在实例外面定义 interval 2 } vrrp_instance VI_1 { state MASTER //MASTER (主)BACKUP(从) interface ens33 //网卡 virtual_router_id 51 //组号 priority 100 //优先级 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { magent //应用函数 } virtual_ipaddress { 192.168.100.100 #虚拟出来了VIP } }
写主服务器shell脚本memcached
#!/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.100.100 -p 12000 -s 192.186.100.21:11211 -b 192.168.100.22:11211 else pkill -9 magent fi ##参数解释 -n 51200 #定义用户最大链接数 -l 192.168.175.188 #指定虚拟IP -p 12000 #指定端口号 -s #指定主缓存服务器 -b #指定从缓存服务器 chmod +x magent.sh #增长可执行权限
写从服务器脚本
make /opt/shell vim magent.sh #!/bin/bash K=`ip addr | grep 192.168.100.100 | grep -v grep | wc -l` if [ $K -gt 0 ]; then magent -u root -n 51200 -l 192.168.100.100 -p 12000 -s 192.168.100.21:11211 -b 192.168.100.22:11211 else pkill -9 magent fi chmod +x magent.sh //增长可执行权限
关闭主从服务器防火墙及selinux
systemctl stop firewalld.service setenforce 0
开启主从服务器上keepalived
systemctl start keepalived.service netstat -ntap | grep 12000 //端口开启可能有点延迟,稍做等待 ipa ddr //查看主服务器上是否绑定VIP
主从服务器上开启memcached
memcached -m 512k -u root -d -l 192.168.100.21 -p 11211 //主服务器 memcached -m 512k -u root -d -l 192.168.100.22 -p 11211 //从服务器 netstat -ntap | grep 11211
客户端测试
测试连通性 yum -y install telnet telnet 192.168.100.100 12000 //采用VIP链接
测试单点故障
systemctl stop keepalived.service //关闭主服务器keepalived服务 ipaddr //查看VIP是否漂移到从服务器上