HA_keepalived基础配置篇(一)
2016-02-17 15:34
405 查看
集群有三种:
LB:负载均衡集群,load balancer
实现:传输层有ipvs,或者叫lvs;应用层有nginx
HA:高可用,high avilable
实现:keepalived
衡量高可用性公式: Avilability=平均无故障时间/(平均无故障时间+平均修复时间),不能保证无故障,但是可以减少平均修复时间来提高高可用性
HP:高性能
主要是一些科研机构,宇航局之类的高逼格的土豪单位使用的,通过横向扩展,增加服务器的数量,聚集众多性能好的服务器来计算达到解决一些复杂的问题
其它:分布式存储和分布式计算集群,
Preface
LB中的ipvs不具有健康监测的机制,而nginx却拥有健康监测机制,通过ngx_http_upstream_modules中的health_check功能实现,但是其只是针对后端的主机进行检查的,如果前端的反向代理的调度器,即nginx出现故障怎么破,即所谓的单点故障SPOF(single points of failure),于是keepalived就是解决这一问题的。。。keepalived是基于VRRP协议在linux上实现的,具体的VRRP协议的介绍可以参考华三的《VRRP技术白皮书》
Conditions
keepalived使用之前的需要注意的事项有:
各节点必须时间同步
/etc/hosts 和hostname最好能对应上,各主机之间基于密钥认证
iptables和selinux关闭
Install
keepalived从centos6.4开始被收录进base源中,因此,在centos6.4以上可以直接通过yum源直接安装,安装命令为
~]#yum install -y keepalived
Configuration
keepalived主要有两种配置模式:主备模式和主主模式
keepalived的组成主要有,在网上下载了一个图片:可以看出,由四个部分组成,分别是:核心组件、控制面板(配置文件分析器)、调度器(I/O复用器)、内存管理器
准备:
host1:
172.16.52.59
hostname: node2
host2: 172.16.52.60
hostname: node3
配置文件: /etc/keepalived/keepalived.conf
主备模式:
host1:
]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from ka@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
vrrp_mcast_group4 224.52.0.1
}
///global_defs 即为全局配置,notification_email为邮件接受者,notification_email_from为邮件发送者,smtp_server为邮件发送的服务器,router_id建议填写主机名,vrrp_mcast_group4 为指定一个组播地址,在这里可以省略,但是省略会造成全网广播,因此还是填上吧。。。
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 38b5e5cd
}
virtual_ipaddress {
172.16.52.10
}
}
///vrrp_instance 为指定一个虚拟实例,后面的VI_1为自定义的一个虚拟实例的名称,state指定首次的状态,可以为主MASTER,可以为备BACKUP,vitual_router_id 是指定虚拟的id号,用于区别不同的虚拟ip,因此每一组的虚拟实例的id号必须为不同的,priority是指定此主机的优先级的,和nice值不同的是,值越大,优先级越高,advert_int(advertise,int为interval)是设置通告的间隔时长的,即MASTER向其它虚拟主机的通过自己健康状态的间隔时长,默认为1秒。auth_type
可以有其它的选择,但是建议使用pass,即简单的字符认证,auth_pass最多只能有8个字符,可以使用openssl rand -hex 4命令随机生成一个,auth_pass在同一个虚拟实例的两个节点主机上面应当是一样的。virtual_ipaddr即为设置一个虚拟ip地址
host2:
]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from ka@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node3
vrrp_mcast_group4 224.52.0.1
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 1
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 38b5e5cd
}
virtual_ipaddress {
172.16.52.10
}
}
测试:
1.先启动服务: systemctl start keepalived.service
2.查看详细信息: systecctl -l status keepalived.service
3.查看地址: ip addr list 这里最好不要用ifconfig查看,除非virtual_ipaddress指定了dev enoxxxx:n 即指定了网卡别名或许能看到
4.停掉主服务器MASTER,观察BACKUP的ip addr list ,这里默认的是抢占模式下的
5.然后再启动服务,继续观察
主主模式:
host1:
]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from ka@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
vrrp_mcast_group4 224.52.0.1
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 38b5e5cd
}
virtual_ipaddress {
172.16.52.10
}
}
vrrp_instance V_2 {
state BACKUP
interface eno16777736
virtual_router_id 2
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 0cad2f81
}
virtual_ipaddress {
172.16.52.11
}
}
host2:
]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from ka@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node3
vrrp_mcast_group4 224.52.0.1
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 1
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 38b5e5cd
}
virtual_ipaddress {
172.16.52.10
}
}
vrrp_instance V_2 {
state MASTER
interface eno16777736
virtual_router_id 2
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 0cad2f81
}
virtual_ipaddress {
172.16.52.11
}
}
测试方法和主备模式一样的
说明:组播地址的介绍:
组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
LB:负载均衡集群,load balancer
实现:传输层有ipvs,或者叫lvs;应用层有nginx
HA:高可用,high avilable
实现:keepalived
衡量高可用性公式: Avilability=平均无故障时间/(平均无故障时间+平均修复时间),不能保证无故障,但是可以减少平均修复时间来提高高可用性
HP:高性能
主要是一些科研机构,宇航局之类的高逼格的土豪单位使用的,通过横向扩展,增加服务器的数量,聚集众多性能好的服务器来计算达到解决一些复杂的问题
其它:分布式存储和分布式计算集群,
Preface
LB中的ipvs不具有健康监测的机制,而nginx却拥有健康监测机制,通过ngx_http_upstream_modules中的health_check功能实现,但是其只是针对后端的主机进行检查的,如果前端的反向代理的调度器,即nginx出现故障怎么破,即所谓的单点故障SPOF(single points of failure),于是keepalived就是解决这一问题的。。。keepalived是基于VRRP协议在linux上实现的,具体的VRRP协议的介绍可以参考华三的《VRRP技术白皮书》
Conditions
keepalived使用之前的需要注意的事项有:
各节点必须时间同步
/etc/hosts 和hostname最好能对应上,各主机之间基于密钥认证
iptables和selinux关闭
Install
keepalived从centos6.4开始被收录进base源中,因此,在centos6.4以上可以直接通过yum源直接安装,安装命令为
~]#yum install -y keepalived
Configuration
keepalived主要有两种配置模式:主备模式和主主模式
keepalived的组成主要有,在网上下载了一个图片:可以看出,由四个部分组成,分别是:核心组件、控制面板(配置文件分析器)、调度器(I/O复用器)、内存管理器
准备:
host1:
172.16.52.59
hostname: node2
host2: 172.16.52.60
hostname: node3
配置文件: /etc/keepalived/keepalived.conf
主备模式:
host1:
]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from ka@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
vrrp_mcast_group4 224.52.0.1
}
///global_defs 即为全局配置,notification_email为邮件接受者,notification_email_from为邮件发送者,smtp_server为邮件发送的服务器,router_id建议填写主机名,vrrp_mcast_group4 为指定一个组播地址,在这里可以省略,但是省略会造成全网广播,因此还是填上吧。。。
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 38b5e5cd
}
virtual_ipaddress {
172.16.52.10
}
}
///vrrp_instance 为指定一个虚拟实例,后面的VI_1为自定义的一个虚拟实例的名称,state指定首次的状态,可以为主MASTER,可以为备BACKUP,vitual_router_id 是指定虚拟的id号,用于区别不同的虚拟ip,因此每一组的虚拟实例的id号必须为不同的,priority是指定此主机的优先级的,和nice值不同的是,值越大,优先级越高,advert_int(advertise,int为interval)是设置通告的间隔时长的,即MASTER向其它虚拟主机的通过自己健康状态的间隔时长,默认为1秒。auth_type
可以有其它的选择,但是建议使用pass,即简单的字符认证,auth_pass最多只能有8个字符,可以使用openssl rand -hex 4命令随机生成一个,auth_pass在同一个虚拟实例的两个节点主机上面应当是一样的。virtual_ipaddr即为设置一个虚拟ip地址
host2:
]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from ka@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node3
vrrp_mcast_group4 224.52.0.1
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 1
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 38b5e5cd
}
virtual_ipaddress {
172.16.52.10
}
}
测试:
1.先启动服务: systemctl start keepalived.service
2.查看详细信息: systecctl -l status keepalived.service
3.查看地址: ip addr list 这里最好不要用ifconfig查看,除非virtual_ipaddress指定了dev enoxxxx:n 即指定了网卡别名或许能看到
4.停掉主服务器MASTER,观察BACKUP的ip addr list ,这里默认的是抢占模式下的
5.然后再启动服务,继续观察
主主模式:
host1:
]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from ka@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
vrrp_mcast_group4 224.52.0.1
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 38b5e5cd
}
virtual_ipaddress {
172.16.52.10
}
}
vrrp_instance V_2 {
state BACKUP
interface eno16777736
virtual_router_id 2
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 0cad2f81
}
virtual_ipaddress {
172.16.52.11
}
}
host2:
]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from ka@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node3
vrrp_mcast_group4 224.52.0.1
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 1
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 38b5e5cd
}
virtual_ipaddress {
172.16.52.10
}
}
vrrp_instance V_2 {
state MASTER
interface eno16777736
virtual_router_id 2
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 0cad2f81
}
virtual_ipaddress {
172.16.52.11
}
}
测试方法和主备模式一样的
说明:组播地址的介绍:
组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
相关文章推荐
- 1813(2.1)
- 提升自身的iOS编程水平 (转载)
- C#编程中使用设计模式中的原型模式的实例讲解
- Solr4.10.3安装配置
- 使用CocoaLumberjack的一些问题记录
- VHDL数据类型
- 自己个人总结,Android Studio 中SVN的使用步骤
- bzoj2750 Road 最短路&记忆化搜索
- 渗透学习分支图
- Java JVM:垃圾回收问题
- 流式大数据处理的三种框架:Storm,Spark和Samza
- iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard 代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/Differen
- Volley(六 )—— 从源码带看Volley的缓存机制
- NSString
- 发现了一个JSON字符串在线格式化工具
- js amd commonjs umd
- iOS开发:设计模式那点事
- IOS开发证书变成“此证书的签发者无效”解决方法
- 详解使用icomoon生成字体图标的方法并应用
- 开源代码的zip包