首页 > 其他分享 >memcached+keepalived实现主主复制和高可用【转】

memcached+keepalived实现主主复制和高可用【转】

时间:2024-12-27 15:42:44浏览次数:6  
标签:主主 root keepalived 192.168 ff node1 memcached

keepalived+memcached主主复制高可用介绍:
客户端连接两台服务器之间的VIP地址,如果后端服务器故障自动切换。

 

Keepalive原理:
1.故障检测:
Keepalived的作用是检测memcached服务器的状态是否正常。

2.主从切换:
Keepalived如果检测到memcached服务发生DOWN机或者死机等,能将VIP从主服务器移至从服务器

3.Keepalived如何发现memcached异常:
1) keepalived在memcached主服务器产生一个虚拟IP

2)keepalived可以通过不断的检测memcached主服务器的11211端口是否正常工作,如果发现memcached Down机,虚拟IP就从主服务器移到从服务器

高可用架构应用场景:
如果memcached分布式节点比较多,那么完全不需要做基于复制的高可用架构。

基于复制的高可用架构一般用在memcached单节点存放缓存或者session。

部署环境介绍:
操作系统:Centos 7 64位

Node1:192.168.100.12 主节点

Node2:192.168.100.13 备节点
1.
2.
3.
4.
5.
1、环境部署:
两台服务器部署方式一样,按照如下方式部署好即可

(1)安装memcached依赖libevent

[root@node1 ~]# yum -y install libevent libevent-devel

(2)安装c语言编译环境


[root@node1 ~]# yum -y install c++ gcc

(3)安装具有复制功能的memcached版本

wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz
tar zxvf 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

make
make install
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
注:编译报错解决


修改memcached.c文件即可:

修改前

[root@node1 memcached-1.2.8-repcached-2.2]#

vim memcached.c
56 #ifndef IOV_MAX
57 #if defined(__FreeBSD__) || defined(__APPLE__)
58 # define IOV_MAX 1024
59 #endif
60 #endif
1.
2.
3.
4.
5.
6.
7.
8.
修改后

56 #ifndef IOV_MAX
57 # define IOV_MAX 1024
58 #endif
1.
2.
3.
安装完成目录结构如下:

[root@node1 ~]# tree /usr/local/memcached_replication/
/usr/local/memcached_replication/
├── bin
│ ├── memcached
│ └── memcached-debug
└── share
└── man
└── man1
└── memcached.1
1.
2.
3.
4.
5.
6.
7.
8.
9.
查询memcached复制版本的的命令帮助只是比普通的memcached多了一个-x选项,就是指定复制的memcached服务器主机名或IP地址

[root@node1 ~]# /usr/local/memcached_replication/bin/memcached -h
-x <ip_addr> hostname or IP address of peer repcached
1.
2.
2、以主从复制架构启动memcached
1)创建memcached用户

[root@node1 ~]# useradd -r -s /sbin/nologin memcached
1.
2)启动memcached,带复制功能

Node1节点启动:

[root@node1 ~]# cd /usr/local/memcached_replication/bin/
[root@node1 bin]# ./memcached -d -u memcached -m 512 -x 192.168.100.13
[root@node1 bin]# ps aux | grep mem
memcach+ 20208 0.0 0.0 11704 872 ? Ss 23:14 0:00 ./memcached -d -u memcached -m 512 -x 192.168.100.13
1.
2.
3.
4.
node2节点启动:

[root@node2 ~]# cd /usr/local/memcached_replication/bin/
[root@node2 bin]# ./memcached -d -u memcached -m 512 -x 192.168.100.12
[root@node2 bin]# ps aux | grep memcached
memcach+ 12162 0.0 0.0 11648 872 ? Ss 18:22 0:00 ./memcached -d -u memcached -m 512 -x 192.168.100.12
1.
2.
3.
4.
验证复制架构:
在node1节点插入数据

[root@node1 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set username 0 0 9
node1xmfb
STORED
get username
VALUE username 0 9
node1xmfb
END
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Node2节点验证数据是否存在

[root@node2 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get username
VALUE username 0 9
node1xmfb
END
1.
2.
3.
4.
5.
6.
7.
8.
如果在节点1写入数据节点2可以看到那么就说明memcached的主从复制架构是没有问题的,就可以在memcached主从复制的基础上使用keepalived产生VIP了。

3.Keepalived+memcached高可用架构部署与配置
1)keepalived包安装
yum install keepalived* -y
1.
2)配置keepalived
Keepalived主节点配置文件设置如下所示:

[root@node1 bin]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id memcached_replication #路由标识,主从保持一致
}

vrrp_instance mem_1 { #定义VRRP热备实例
state MASTER #MASTER表示主节点
interface eth0 #承载VIP地址的物理接口
virtual_router_id 51 #虚拟路由器的ID号,主备相同
priority 100 #优先级,数值越高优先级越大
advert_int 1 #通知间隔秒数(心跳频率)
nopreempt #不主动抢占资源,只在master或者高优先级服务器设置
authentication { #认证信息配置,主从服务器保持一致
auth_type PASS #设置认证类型为密码
auth_pass asdfgh #设置认证的密码
}
# 定义VIP是什么
virtual_ipaddress {
192.168.100.100
}
}

# VIP故障检测
virtual_server 192.168.100.100 11211 {
deploy_loop 6
protocol TCP
# 配置主服务器地址端口
real_server 192.168.100.10 11211 {
weight 3
notify_down /shell/memcached.sh # 当memcached当机时,执行keepalived服务停止
}
TCP_CHECK {
connect_timeout 3 #连接超时
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试时间间隔
connect_port 11211 #连接端口
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
keepalived备节点配置文件设置如下所示:

[root@node2 bin]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id memcached_replication #路由标识,主从保持一致
}

vrrp_instance mem_1 { #定义VRRP热备实例
state BACKUP #MASTER表示主节点
interface eth0 #承载VIP地址的物理接口
virtual_router_id 51 #虚拟路由器的ID号,主备相同
priority 50 #优先级,数值越高优先级越大
advert_int 1 #通知间隔秒数(心跳频率)
nopreempt #不主动抢占资源,只在master或者高优先级服务器设置
authentication { #认证信息配置,主从服务器保持一致
auth_type PASS #设置认证类型为密码
auth_pass asdfgh #设置认证的密码
}
# 定义VIP是什么
virtual_ipaddress {
192.168.100.100
}
}

virtual_server 192.168.100.100 11211 {
deploy_loop 6
protocol TCP
# 配置主服务器地址端口
real_server 192.168.100.11 11211 {
weight 3
notify_down /shell/memcached.sh
}
TCP_CHECK {
connect_timeout 3 #连接超时
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试时间间隔
connect_port 11211 #连接端口
}
}

两个节点都添加脚本:如果监听的memcached故障,那么就本地keepalived,实现VIP漂移

[root@node1 ~]# cat /shell/memcached.sh
systemctl stop keepalived
[root@node1 ~]# chmod +x /shell/memcached.sh
1.
2.
3.
3)两个节点启动keepalived服务
[root@node1 ~]# systemctl start keepalived.service
1.
4、高可用验证
验证vip已经启动

[root@node1 ~]# ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:85:36:db brd ff:ff:ff:ff:ff:ff
inet 192.168.100.12/24 brd 192.168.100.255 scope global dynamic eth0
valid_lft 20059sec preferred_lft 20059sec
inet 192.168.100.100/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe85:36db/64 scope link
valid_lft forever preferred_lft forever
You have new mail in /var/spool/mail/root

强制关闭主节点memcached进程,可以看到vip地址已经不见了

[root@node1 ~]# ps aux | grep keepliaved
root 45424 0.0 0.0 112648 980 pts/0 S+ 11:24 0:00 grep --color=auto keepliaved
[root@node1 ~]# ps aux | grep mem
memcach+ 45419 0.0 0.1 12672 1924 ? Ss 11:22 0:00 ./memcached -d -u memcached -m 512 -x 192.168.100.13
root 45427 0.0 0.0 112648 976 pts/0 S+ 11:24 0:00 grep --color=auto mem
[root@node1 ~]# kill -9 45419
[root@node1 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:85:36:db brd ff:ff:ff:ff:ff:ff
inet 192.168.100.12/24 brd 192.168.100.255 scope global dynamic eth0
valid_lft 16561sec preferred_lft 16561sec
inet6 fe80::20c:29ff:fe85:36db/64 scope link
valid_lft forever preferred_lft forever

在从节点查看,memcached地址又出现了。

[root@node2 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:9e:47:61 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.13/24 brd 192.168.100.255 scope global dynamic eth0
valid_lft 14759sec preferred_lft 14759sec
inet 192.168.100.100/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe9e:4761/64 scope link
valid_lft forever preferred_lft forever

操作成功,谢谢观看!
-----------------------------------
©著作权归作者所有:来自51CTO博客作者IT张sir的原创作品,请联系作者获取转载授权,否则将追究法律责任
干货,memcached+keepalived实现主主复制和高可用,详解!
https://blog.51cto.com/u_13687553/2152984

 

标签:主主,root,keepalived,192.168,ff,node1,memcached
From: https://www.cnblogs.com/paul8339/p/18635902

相关文章

  • keepalived的高可用集群
    keepalived的概念keepalived的工作原理基于vrrp实现的调度器高可用方案keepalived的配置实验先在调度服务器上安装keepalived和ipvsadmapt-yinstallkeepalivedipvsadm复制keepalived的配置文件到/etc/keepalived/目录下cp/usr/share/doc/keepalived/samples......
  • Ansible:一键部署Keepalived高可用集群
    使用Ansible工具一键部署Keepalived服务1.需求分析使用ansible部署keepalived服务的过程中,需要实现:1.1多系统支持根据不同的系统,自动选择对应的安装方式。可通过相关的环境变量结合 when实现。1.2源码安装考虑到rpm安装的方式会需要依赖一些基础环境,以及版本较低,将采用源......
  • Keepalived 的高可用配置与使用
    Keepalived是一款专注于提升网络服务可靠性的开源软件,特点如下:-核心功能:提供负载均衡和高可用性服务,适用于基于Linux的系统和网络架构。-编程语言:Keepalived采用C语言编写,保证了其高性能和稳定性。-负载均衡:基于Linux内核模块技术(IPVS,IPVirtualServer),实现第四......
  • Nginx、keepalived、SLB、F5
    Nginx功能特点高性能:Nginx采用事件驱动的异步非阻塞I/O模型,这使得它能够高效地处理大量并发连接。在处理高并发的HTTP请求时,相比传统的基于线程或进程的服务器,Nginx能够在相同的硬件资源下处理更多的请求,有效减少系统资源的占用,提高系统的吞吐量。例如,在一个有大量静态资源......
  • Keepalived-Nginx实现高可用
    master机器配置文件:======================================================================!ConfigurationFileforkeepalived#全局配置global_defs{#路由ID,不能重复,通常为hostnamerouter_idmaster}#keepalived会定时执行脚本并对脚本执行的结果进行分析,动态......
  • 浅谈C#库之Memcached
    一、Memcached的介绍        ‌Memcached‌是一个开源的分布式内存缓存系统,由LiveJournal的BradFitzpatrick开发,主要用于动态Web应用以减少数据库负载,提高访问速度和性能。Memcached通过将数据存储在内存中,使用高效的哈希算法进行数据存取,提供极高的读写性能‌。基......
  • keepalived编译安装-CentOS X86
    环境信息操作系统:CentOSLinuxrelease7.9.2009(Core)架构:X86keepalived版本:2.3.1编译wgethttps://www.keepalived.org/software/keepalived-2.3.1.tar.gztarxvfkeepalived-2.3.1.tar.gzcdkeepalived-2.3.1/./configure--prefix=/usr/local/keepalivedmakema......
  • kube-apiserver 高可用,keepalived + haproxyNX
    作者:https://github.com/daemon365/p/18592136为什么要做高可用环境准备安装配置keepalived配置文件测试配置haproxy安装kubernetes集群测试:slowerssr加速器为什么要做高可用在生产环境中,kubernetes集群中会多多个master节点,每个master节点上都会部署......
  • kube-apiserver 高可用,keepalived + haproxy
    为什么要做高可用在生产环境中,kubernetes集群中会多多个master节点,每个master节点上都会部署kube-apiserver服务,实现高可用。但是client访问kube-apiserver时,需要指定ip或者域名,这样会出现单点故障。官方推荐的做法是使用一个负载均衡器,将多个kube-apiserver服务......
  • Nginx高可用Keepalived
    1.Keepalived讲解高可用是指2台机器启动着完全相同的业务系统,一台机器宕机后,另一台可以快速启用,用户是无感知的。高可用硬件通常使用F5,软件通常使用keepalived。keepalived软件是基于VRRP协议实现的,VRRP虚拟路由冗余协议,主要用于解决单点故障。2.VRRP实现原理一般我们会选择......