物理路由器:
master:主设备
backup:备用设备
priority:优先级
VIP:Virtual IP
VMAC:Virtual MAC(00-00-5e-00-01-VRID)
GraciousARP
通告:心跳,优先级等;周期性;
抢占式,非抢占式;
安全工作:
认证:
无认证
简单字符认证
MD5
工作模式:
主/备:单虚拟路径器;
主/主:主/备(虚拟路径器1),备/主(虚拟路径器2)
keepalived:
vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务;
基于vrrp协议完成地址流动;
为所有ipvs节点生成ipvs规则(在配置文件中预先定义);
为ipvs集群的各RS做健康状态检测,基于检测结果完成节点管理;
基于脚本调用接口通过执行脚本完成脚本中定义的功能,进而影响集群事务(这里说的是完成其他服务的高可用);
组件:
核心组件:
vrrp stack
ipvs wrapper
checkers
控制组件:配置文件分析器
IO复用器
内存管理组件
HA Cluster的配置前提:
(1)各节点时间必须同步;
ntp,chrony
(2)确保iptables及selinux不会成为阻碍;
(3)各节点之间可通过主机名互相通信(对KeepAlived并非必须);
(4)确保各节点的用于集群服务的接口支持MULTICAST通信;
D类:224.0.0.0~239.255.255.255
(5)各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信;(并非必须)
keepalived安装配置:
CentOS6.4+随base仓库提供;
程序环境:
主配置文件:/etc/keepalived/keepalived.conf
主程序文件:/usr/sbin/keepalived
Unit File:keepalived.service
Unit File的环境配置文件:/etc/sysconfig/keepalived
配置文件组件部分:---有三个配置段
TOP HIERACHY---顶级配置段
GLOBAL CONFIGURATION
Global definitions---全局定义
Static routes/addresses---静态路由
VRRP CONFIGURATION
VRRP synchronization group(s):vrrp同步组;(同进同退,两台路由器对外提供虚拟IP,对内也提供虚拟IP,但是vip1在哪台路由器上,vip2也应该在哪个节点上,nat集群需要同步组)
VRRP instance(s)(实例):每个vrrp instance 即一个vrrp路由器;
LVS CONFIGURATION
Virtual server group(s)
Virtual server(s):ipvs集群的vs和rs;
单主配置示例:
!Configuration File forkeepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.100.19
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 14
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 571f97b2
}
virtual_ipaddress {
10.1.0.91/16 dev eno16777736
}
}
配置语法:
配置虚拟路由器:
vrrp_instance {
......
}
专用参数:
state MASTER|BACKUP:当前节点在此虚拟路由器上的初始状态;只能有一个是MASTER,余下的都应该为BACKUP;
interface IFACE_NAME:绑定为当前虚拟路由器使用的物理接口;
virtual_router_id VRID:当前虚拟路由器的唯一标识,范围是0-255;
priority 100:当前主机在此虚拟路由器中的优先级;范围1-254;
advert_int 1:vrrp通告的时间间隔;
authentication {
auth_type AH|PASS
auth_pass
}
virtual_ipaddress {
/brddevscpoelabel
视频中的配置:集群中各节点是通过多播通信,要保证多播功能是打开的
node1:
ntpdate 172.16.0.1---同步时间
vim /etc/chrony.conf---chronyd服务的配置文件,把其中的server可以指向本地主机测试用
systemctl restart chronyd.service---重启服务
systemctl enable chronyd.service---设置成开机自动启动
iptables -vnL---查看有没有规则,没有就可以,如果有,不能清空可以添加一条放行重启iptables服务
yum info iptables-services---查看iptables服务安装包信息
cat /etc/hosts---查看域名解析
ifconfig---网卡信息中要包含MULTICAST这个信息,才表示支持多播功能
ip link set multicast on dev eno16777736---开启网卡的多播功能
yum -y install keepalived
rpm -ql keepalived---查看包
视频中keepalived.conf
!Configuration File for keepalived
global_defs {
notification_email {---收邮件地址,要在互联网上真正能接收br/>root@localhost
}
notification_email_from [email protected]发邮件地址,可以伪装源地址,但是有的服务器不允许伪装,要通过下面的smtp_server的检查
smtp_server 127.0.0.1---一般是本机,可以使用ss -tnl查看25号端口始终是开启的,可以很容易的从本机发送邮件到本机,例如:echo "hello" | mail -s "hi" root@localhost---s可以给上邮件的标题,收邮件的命令是mail,就可以看到收到的邮件,按提示的数字就可以打开查看邮件
smtp_connect_timeout 30
router_id nide1---用来标识当前主机
vrrp_mcast group4 224.1.101.33---224.0.0.18是默认的,但是有可能会冲突,可以自己随便写一个
}
vrrp_instance VI_1 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state MASTER---配置为主设备,但是还需要设置优先级
priority 100---优先级是100
interface eno167777736---把vip绑定到哪个网卡设备
virtual_router_id 33---0到255之间使用哪一个都行,但是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass RT3SKUI2---这里不要使用默认的1111,可以用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.99/16 dev eno16777736 label eno16777736:0
}
}
scp keepalived.conf node2:/etc/keepalived/---复制到node2节点
systemctl start keepalived.service---此时启动keepalived,就会抢占成为主节点
systemctl status keepalived
ifconfig---就可以看到ip地址配置上去了,如果此时停掉服务,node2节点仍然会抢回去
tcpdump -i eno16777736 -nn host 224.1.101.33---监听网卡上指向224.1.101.33的信息包,可以看到一秒钟发送一个包
双主模型的配置:
视频中keepalived.conf
!Configuration File for keepalived
global_defs {
notification_email {---收邮件地址,要在互联网上真正能接收br/>root@localhost
}
notification_email_from [email protected]发邮件地址,可以伪装源地址,但是有的服务器不允许伪装,要通过下面的smtp_server的检查
smtp_server 127.0.0.1---一般是本机,可以使用ss -tnl查看25号端口始终是开启的,可以很容易的从本机发送邮件到本机,例如:echo "hello" | mail -s "hi" root@localhost---s可以给上邮件的标题,收邮件的命令是mail,就可以看到收到的邮件,按提示的数字就可以打开查看邮件
smtp_connect_timeout 30
router_id nide1---用来标识当前主机
vrrp_mcast group4 224.1.101.33---224.0.0.18是默认的,但是有可能会冲突,可以自己随便写一个
}
vrrp_instance VI_1 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state MASTER---配置为主设备,但是还需要设置优先级
priority 100---优先级是100
interface eno167777736---把vip绑定到哪个网卡设备
virtual_router_id 33---0到255之间使用哪一个都行,但是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass RT3SKUI2---这里不要使用默认的1111,可以用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.99/16 dev eno16777736
}
}
vrrp_instance VI_2 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state BACKUP---配置为主设备,但是还需要设置优先级
priority 96---优先级是100
interface eno167777736---把vip绑定到哪个网卡设备
virtual_router_id 34---0到255之间使用哪一个都行,但是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass Ra3S7Uy2---这里不要使用默认的1111,可以用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.98/16 dev eno16777736
}
}
systemctl stop keepalived.service---有时候不支持重载配置,所以需要重启服务
systemctl start keepalived.service
tcpdump -i eno16777736 -nn host 224.1.101.33
ip a l---列出网卡上的ip地址---可以看到同一个网卡有多个ip地址
node2:
ntpdate 172.16.0.1---同步时间
systemctl restart chronyd.service---重启服务
systemctl enable chronyd.service---设置成开机自动启动
systemctl status chronyd.service---查看状态如果显示enabled就表示已经开机自动启动
视频中keepalived.conf
!Configuration File for keepalived
global_defs {
notification_email {---收邮件地址,要在互联网上真正能接收br/>root@localhost
}
notification_email_from [email protected]发邮件地址,可以伪装源地址,但是有的服务器不允许伪装,要通过下面的smtp_server的检查
smtp_server 127.0.0.1---一般是本机,可以使用ss -tnl查看25号端口始终是开启的,可以很容易的从本机发送邮件到本机,例如:echo "hello" | mail -s "hi" root@localhost---s可以给上邮件的标题,收邮件的命令是mail,就可以看到收到的邮件,按提示的数字就可以打开查看邮件
smtp_connect_timeout 30
router_id nide2---用来标识当前主机
vrrp_mcast group4 224.1.101.33---224.0.0.18是默认的,但是有可能会冲突,可以自己随便写一个
}
vrrp_instance VI_1 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state BACKUP---配置为从设备,但是还需要设置优先级
priority 96---优先级应该比master低
interface eno167777736---把vip绑定到哪个网卡设备
virtual_router_id 33---0到255之间使用哪一个都行,但是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass RT3SKUI2---这里不要使用默认的1111,可以用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.99/16 dev eno16777736 label eno16777736:0
}
}
systemctl start keepalived.service---node2节点启动,此时node2节点优先级最高,所以把自己配置为master
systemctl status keepalived.service---会显示状态信息,进入主节点模式,并且ip地址也配置上去了
双主模型的配置:
视频中keepalived.conf
!Configuration File for keepalived
global_defs {
notification_email {---收邮件地址,要在互联网上真正能接收br/>root@localhost
}
notification_email_from [email protected]发邮件地址,可以伪装源地址,但是有的服务器不允许伪装,要通过下面的smtp_server的检查
smtp_server 127.0.0.1---一般是本机,可以使用ss -tnl查看25号端口始终是开启的,可以很容易的从本机发送邮件到本机,例如:echo "hello" | mail -s "hi" root@localhost---s可以给上邮件的标题,收邮件的命令是mail,就可以看到收到的邮件,按提示的数字就可以打开查看邮件
smtp_connect_timeout 30
router_id nide1---用来标识当前主机
vrrp_mcast group4 224.1.101.33---224.0.0.18是默认的,但是有可能会冲突,可以自己随便写一个
}
vrrp_instance VI_1 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state MASTER---配置为主设备,但是还需要设置优先级
priority 100---优先级是100
interface eno167777736---把vip绑定到哪个网卡设备
virtual_router_id 33---0到255之间使用哪一个都行,但是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass RT3SKUI2---这里不要使用默认的1111,可以用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.99/16 dev eno16777736
}
}
vrrp_instance VI_2 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state MASTER---配置为主设备,但是还需要设置优先级
priority 100---优先级是100
interface eno167777736---把vip绑定到哪个网卡设备
virtual_router_id 34---0到255之间使用哪一个都行,但是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass Ra3S7Uy2---这里不要使用默认的1111,可以用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.98/16 dev eno16777736
}
}