keepalived(第32天)
Linux集群类型:LB+HA+HP
LB(负载均衡): LVS,nginx
HA:高可用集群,keepalived(轻量化), heartbeat, corosync, cman
HP:高性能集群
分布式存储:HDFS(Hadoop Distributed File System)
分布式计算:YARN,
batch: MapReduce
in-memory(基于内存): spark
stream(流式): storm
实现高可用集群涉及的理论知识:
Acitve/Passive:分别表示活动节点和备用节点
resource:表示高可用集群中的资源
HA Service:表示多个resources组合提供高可用服务
备用节点必须实时监控活动节点的状态,一旦备用节点发现活动节点出现问题,就抢夺活动节点的资源,比如IP地址。
活动节点主动向所有的备用节点通告自己的状态。如果备用节点检查该通告发现活动节点是非alive的,则备用节点就抢夺资源,然后备用节点提供服务,而原先的活动节点改变为备用节点。
如何设计通告机制?
多个备用节点放置在一个多播域中。
备用节点和活动节点的时间同步必须严格一致。可以使用NTP协议,网络时间协议。
两台LAMP主机对于结构化数据和非结构化数据的读写问题:
假设数据是独立存储的(要共享给两台LAMP主机),两台LAMP主机对于mysql数据库的读写不会出现问题,因为mysql有并发读写控制。但是这两个主机对于非结构化的数据的读写,会出现同步的问题,比如第一个主机的进程对某个文件写第一行,而另一个主机的进程对该文件删除第一行。
所以可以使用分布式文件系统,分布式文件系统一般提供有对资源和文件的并发访问控制
总结:高可用集群要解决好抢夺IP地址和存储的问题。
VRRP协议:
keepalived是vrrp协议的实现
virtual route redundent protocol,虚拟路由冗余协议。
(路由器设备跑的系统一般是精简的freeBSD,linux等)
准备两个路由器,只有一个是工作状态的,并且处于工作状态的路由器一直发送心跳到备用节点,可以设置某个周期内,如果备用节点没有收到心跳,则备用节点获取IP,变成活动节点。
虚拟路由器:就是多个物理路由器合并组成,这些路由器有1个Master路由器和多个Backup路由器。每一个虚拟路由都有一个VRID来标识,有相同VRID的一组路由器共同构成一个虚拟路由器。
Master路由器/Backup路由器
虚拟IP地址:给虚拟路由器配置的IP地址。
IP地址拥有者:接口IP地址与虚拟IP地址相同的路由器称为IP地址拥有者,一般就是master路由器
虚拟mac地址:一个虚拟路由有一个虚拟mac地址。格式为00-00-5E-00-01-(VRID)
优先级:vrrp根据优先级来确定虚拟路由器中每台路由器的地位。
非抢占式:
抢占式:
keepalived:是vrrp协议在linux主机上以守护进程方式的实现
能够根据配置文件自动生ipvs规则
对各个RS做健康状态检测
组件如下:
vrrp stack(vrrp协议栈)
checkers (健康状态监测)
ipvs wrapper--》ipvs
keepalived的使用:
安装:yum install keepalived -y
keepalived的配置文件/etc/keepalived/keepalived.conf组成部分:
global_configuration 表示全局配置
vrrpd_configuration vrrpd守护进程配置
vrrp instance vrrp实例
vrrp synchonization group
LVS_configuration
HA Cluster配置前提:如下3点
1、本机的主机名,要与hostname(或者uname -n)获得的名称保持一致;
CentOS 6设置主机名: /etc/sysconfig/network
CentOS 7设置主机名: hostnamectl set-hostname HOSTNAME
各节点要能互相解析主机名;一般建议通过hosts文件进行解析;
2、各节点时间同步;
3:确保iptables和selinux不影响该服务
virtual_ipaddress的配置:
virtual_ipaddress {
<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
}
nopreempt:非抢占模式;默认为抢占模式;
vrrp_sync_group VG_1 {
group {
VI_1 # name of vrrp_instance (below)
VI_2 # One for each moveable IP.
}
}
vrrp_instance VI_1 {
eth0
vip
}
vrrp_instance VI_2 {
eth1
dip
}
实验步骤如下:
1:配置2台主机,假设分别为172.16.100.67和172.16.100.68,配置两台主机的/etc/hosts文件使之可以通过主机名相互解析。
比如两台主机的/etc/hosts文件都有如下的内容:
172.16.100.67 node1.magedu.com node1
172.16.100.68 node2.magedu.com node2
2:使两台主机时间同步
两台主机使用该命令做时间同步 ntpdate 0.debian.pool.ntp.org
3:确保iptables和selinux不影响该服务
4:两台主机安装keepalived yum -y install keepalived
5:172.16.100.67的 /etc/keepalived/keepalived.conf配置文件:
global_defs {
notification_email {
root@localhost
}
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1.magedu.com
vrrp_mcast_group4 224.18.0.100 # 组播地址
}
vrrp_instance VI_1{ #vrrp实例的配置
state MASTER #只有MASTER和BACKUP
interface eth0 #VIP配置到这个网卡设备上
virtual_router_id 51 #VRID
priority 100 #优先级
adver_int 1 #发送自己的心跳通告的间隔时间
authentication { #认证信息
auth_type PASS #简单字符认证
auth_pass 5566xxoo #认证密码
}
virtual_ipaddress { #VIP地址,虚拟IP地址
172.16.100.80/16 dev eth0 label eht0:0 #这个地址是会根据情况流动到上面的vrrp实例定义中的eth0接口上的
}
}
6: 172.16.100.68的 /etc/keepalived/keepalived.conf配置文件:
global_defs {
notification_email {
root@localhost
}
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2.magedu.com
vrrp_mcast_group4 224.18.0.100 # 组播地址
}
vrrp_instance VI_1{ #vrrp实例的配置
state BACKUP #只有MASTER和BACKUP
interface eth0 #VIP配置到这个网卡设备上
virtual_router_id 51 #VRID
priority 99 #优先级
adver_int 1 #发送自己的心跳通告的间隔时间
authentication { #认证信息
auth_type PASS #简单字符认证
auth_pass 5566xxoo #认证密码
}
virtual_ipaddress { #VIP地址,虚拟IP地址
172.16.100.80/16 dev eth0 label eht0:0 #这个地址是会根据情况流动到上面的vrrp实例定义中的eth0接口上的
}
7: 在两台主机启动keepalived服务
systemctl start keepalived.service
总结:
1、如何开启keepalived的日志?(systemctl status keepalived.service 可以查看keepalived的日志)
2、如果有多个vrrp_instance, 每个vrrp_instance需要设置自己专用的组播地址vrrp_mcast_group4 224.18.0.100;
keepalived: 是vrrp协议的实现;
虚拟路由器有MASTER,BACKUP
VI:Virtual Instance
keepalived配置文件keepalived.conf组成部分:
GLOBAL
VRRP
LVS
keepalived(第2部分):
在vrrp_instance中的主机状态发生改变时发送通知:
# notify scripts, alert as above
notify_master <STRING>|<QUOTED-STRING> #切换为master时候,触发
notify_backup <STRING>|<QUOTED-STRING> #切换为backup时候,触发
notify_fault <STRING>|<QUOTED-STRING> #fault失败时候,触发
notify <STRING>|<QUOTED-STRING>
smtp_alert
nginx作为反向代理服务器的高可用(使用keepalived实现高可用):
keepalived 配置在2台nginx反向代理服务器中:
1:配置172.16.100.6和172.16.100.69为upstream服务器(真正提供服务的real server,可以通过yum -y install httpd安装httpd服务)
2:配置172.16.100.67和172.16.100.68为nginx反向代理服务器(这2个服务器中要配置nginx为反向代理服务器,yum -y install nginx 安装nginx,然后在配置文件nginx.conf中的http配置段中配置upstream指令,指定upstream服务器,
upstream webservs {
server 172.16.100.6:80 weight=1;
server 172.16.100.69:80 weight=1;
},在location指令中定义proxy_pass指令),
location / {
proxy_pass http://webservs/;
}
配置完成使用nginx -t检查语法是否有错误,systemctl start nginx.service启动nginx。
在这两台主机中安装好keepalived,并启动systemctl start keepalived.service
LB(负载均衡): LVS,nginx
HA:高可用集群,keepalived(轻量化), heartbeat, corosync, cman
HP:高性能集群
分布式存储:HDFS(Hadoop Distributed File System)
分布式计算:YARN,
batch: MapReduce
in-memory(基于内存): spark
stream(流式): storm
实现高可用集群涉及的理论知识:
Acitve/Passive:分别表示活动节点和备用节点
resource:表示高可用集群中的资源
HA Service:表示多个resources组合提供高可用服务
备用节点必须实时监控活动节点的状态,一旦备用节点发现活动节点出现问题,就抢夺活动节点的资源,比如IP地址。
活动节点主动向所有的备用节点通告自己的状态。如果备用节点检查该通告发现活动节点是非alive的,则备用节点就抢夺资源,然后备用节点提供服务,而原先的活动节点改变为备用节点。
如何设计通告机制?
多个备用节点放置在一个多播域中。
备用节点和活动节点的时间同步必须严格一致。可以使用NTP协议,网络时间协议。
两台LAMP主机对于结构化数据和非结构化数据的读写问题:
假设数据是独立存储的(要共享给两台LAMP主机),两台LAMP主机对于mysql数据库的读写不会出现问题,因为mysql有并发读写控制。但是这两个主机对于非结构化的数据的读写,会出现同步的问题,比如第一个主机的进程对某个文件写第一行,而另一个主机的进程对该文件删除第一行。
所以可以使用分布式文件系统,分布式文件系统一般提供有对资源和文件的并发访问控制
总结:高可用集群要解决好抢夺IP地址和存储的问题。
VRRP协议:
keepalived是vrrp协议的实现
virtual route redundent protocol,虚拟路由冗余协议。
(路由器设备跑的系统一般是精简的freeBSD,linux等)
准备两个路由器,只有一个是工作状态的,并且处于工作状态的路由器一直发送心跳到备用节点,可以设置某个周期内,如果备用节点没有收到心跳,则备用节点获取IP,变成活动节点。
虚拟路由器:就是多个物理路由器合并组成,这些路由器有1个Master路由器和多个Backup路由器。每一个虚拟路由都有一个VRID来标识,有相同VRID的一组路由器共同构成一个虚拟路由器。
Master路由器/Backup路由器
虚拟IP地址:给虚拟路由器配置的IP地址。
IP地址拥有者:接口IP地址与虚拟IP地址相同的路由器称为IP地址拥有者,一般就是master路由器
虚拟mac地址:一个虚拟路由有一个虚拟mac地址。格式为00-00-5E-00-01-(VRID)
优先级:vrrp根据优先级来确定虚拟路由器中每台路由器的地位。
非抢占式:
抢占式:
keepalived:是vrrp协议在linux主机上以守护进程方式的实现
能够根据配置文件自动生ipvs规则
对各个RS做健康状态检测
组件如下:
vrrp stack(vrrp协议栈)
checkers (健康状态监测)
ipvs wrapper--》ipvs
keepalived的使用:
安装:yum install keepalived -y
keepalived的配置文件/etc/keepalived/keepalived.conf组成部分:
global_configuration 表示全局配置
vrrpd_configuration vrrpd守护进程配置
vrrp instance vrrp实例
vrrp synchonization group
LVS_configuration
HA Cluster配置前提:如下3点
1、本机的主机名,要与hostname(或者uname -n)获得的名称保持一致;
CentOS 6设置主机名: /etc/sysconfig/network
CentOS 7设置主机名: hostnamectl set-hostname HOSTNAME
各节点要能互相解析主机名;一般建议通过hosts文件进行解析;
2、各节点时间同步;
3:确保iptables和selinux不影响该服务
virtual_ipaddress的配置:
virtual_ipaddress {
<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
}
nopreempt:非抢占模式;默认为抢占模式;
vrrp_sync_group VG_1 {
group {
VI_1 # name of vrrp_instance (below)
VI_2 # One for each moveable IP.
}
}
vrrp_instance VI_1 {
eth0
vip
}
vrrp_instance VI_2 {
eth1
dip
}
实验步骤如下:
1:配置2台主机,假设分别为172.16.100.67和172.16.100.68,配置两台主机的/etc/hosts文件使之可以通过主机名相互解析。
比如两台主机的/etc/hosts文件都有如下的内容:
172.16.100.67 node1.magedu.com node1
172.16.100.68 node2.magedu.com node2
2:使两台主机时间同步
两台主机使用该命令做时间同步 ntpdate 0.debian.pool.ntp.org
3:确保iptables和selinux不影响该服务
4:两台主机安装keepalived yum -y install keepalived
5:172.16.100.67的 /etc/keepalived/keepalived.conf配置文件:
global_defs {
notification_email {
root@localhost
}
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1.magedu.com
vrrp_mcast_group4 224.18.0.100 # 组播地址
}
vrrp_instance VI_1{ #vrrp实例的配置
state MASTER #只有MASTER和BACKUP
interface eth0 #VIP配置到这个网卡设备上
virtual_router_id 51 #VRID
priority 100 #优先级
adver_int 1 #发送自己的心跳通告的间隔时间
authentication { #认证信息
auth_type PASS #简单字符认证
auth_pass 5566xxoo #认证密码
}
virtual_ipaddress { #VIP地址,虚拟IP地址
172.16.100.80/16 dev eth0 label eht0:0 #这个地址是会根据情况流动到上面的vrrp实例定义中的eth0接口上的
}
}
6: 172.16.100.68的 /etc/keepalived/keepalived.conf配置文件:
global_defs {
notification_email {
root@localhost
}
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2.magedu.com
vrrp_mcast_group4 224.18.0.100 # 组播地址
}
vrrp_instance VI_1{ #vrrp实例的配置
state BACKUP #只有MASTER和BACKUP
interface eth0 #VIP配置到这个网卡设备上
virtual_router_id 51 #VRID
priority 99 #优先级
adver_int 1 #发送自己的心跳通告的间隔时间
authentication { #认证信息
auth_type PASS #简单字符认证
auth_pass 5566xxoo #认证密码
}
virtual_ipaddress { #VIP地址,虚拟IP地址
172.16.100.80/16 dev eth0 label eht0:0 #这个地址是会根据情况流动到上面的vrrp实例定义中的eth0接口上的
}
7: 在两台主机启动keepalived服务
systemctl start keepalived.service
总结:
1、如何开启keepalived的日志?(systemctl status keepalived.service 可以查看keepalived的日志)
2、如果有多个vrrp_instance, 每个vrrp_instance需要设置自己专用的组播地址vrrp_mcast_group4 224.18.0.100;
keepalived: 是vrrp协议的实现;
虚拟路由器有MASTER,BACKUP
VI:Virtual Instance
keepalived配置文件keepalived.conf组成部分:
GLOBAL
VRRP
LVS
keepalived(第2部分):
在vrrp_instance中的主机状态发生改变时发送通知:
# notify scripts, alert as above
notify_master <STRING>|<QUOTED-STRING> #切换为master时候,触发
notify_backup <STRING>|<QUOTED-STRING> #切换为backup时候,触发
notify_fault <STRING>|<QUOTED-STRING> #fault失败时候,触发
notify <STRING>|<QUOTED-STRING>
smtp_alert
nginx作为反向代理服务器的高可用(使用keepalived实现高可用):
keepalived 配置在2台nginx反向代理服务器中:
1:配置172.16.100.6和172.16.100.69为upstream服务器(真正提供服务的real server,可以通过yum -y install httpd安装httpd服务)
2:配置172.16.100.67和172.16.100.68为nginx反向代理服务器(这2个服务器中要配置nginx为反向代理服务器,yum -y install nginx 安装nginx,然后在配置文件nginx.conf中的http配置段中配置upstream指令,指定upstream服务器,
upstream webservs {
server 172.16.100.6:80 weight=1;
server 172.16.100.69:80 weight=1;
},在location指令中定义proxy_pass指令),
location / {
proxy_pass http://webservs/;
}
配置完成使用nginx -t检查语法是否有错误,systemctl start nginx.service启动nginx。
在这两台主机中安装好keepalived,并启动systemctl start keepalived.service
评论
发表评论