keepalived学习笔记

220 阅读5分钟

本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路

keepalived学习笔记

功能简述: 1.自动配置LVS规则
2.带健康检查
3.VRRP虚拟路由热备协议,可以虚拟出一个VIP
注:yum -y install ipvsadm可以不装,装上为了可以用ipvsadm-Ln这个命令查看规则

实验环境

VIP是keepalived虚拟的,所有不能手动配置
客户端配置网卡192.168.4.5
WEB1配置网卡192.168.4.100 VIP192.168.4.80
WEB2配置网卡192.168.4.200 VIP192.168.4.80
给WEB1,WEB2安装keepalived
yum -y install keepalived
WBE1配置

vim /etc/keepalived/keepalived.conf
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 (改成wbe1后面删掉)LVS_DEVEL(设置路由ID号)相当于路由器的名字,把自己当路由器用
}
vrrp_instance VI_1{          
state MASTER       (定义主服务器位MASTER)
interface eth0        (自动给eth0网卡配置4.80VIP,)
virtual_router_id 51(要求主备id一致)
priority 100        服务器的优先级,优先级越高先获得VIP(谁当主就把值调大) 
authentication{      (为集群配置密码,解决当攻击者在旁边在搭建一个keepalived获取VIP,当集群都设置密码后没有密码的keepalived就不是集群里的就无法获取VIP)
	auth_type PASS
	auth_pass 111(上班时需要改这个密码)
	}
virtual_ipaddress{            (设置VIP所获取的虚拟IP)可以设置多个虚拟IP192.168.4.80
}
}

WBE2配置

vim /etc/keepalived/keepalived.conf
找到这个语句改router_id (改成wbe2后面删掉)LVS_DEVEL(设置路由ID号)相当于路由器的名字,把自己当路由器用
改state BACKUP(改成这个BACKUP)
virtual_router_id 51
改低priority 90  
virtual_ipaddress{            (设置VIP所获取的虚拟IP)可以设置多个虚拟IP192.168.4.80
}
systemctl start keepalived  两个WBE都起服务
iptables -F   清空防火墙规则
setenforce 0 关闭SELinux防火墙
验证命令 ip a s eth0

LVS(DR模式)+keepalived

先关闭两台web的keepalivedsystemctl stop keepalived
实验环境: 客户机网卡192.168.4.10
调度器1网卡192.168.4.5/24 VIP192.168.4.15
调度器2网卡192.168.4.6/24 VIP192.168.4.15
WEB1 1网卡192.168.4.100/24 VIP192.168.4.15
WEB2 1网卡192.168.4.200/24 VIP192.168.4.15
Wbe1配置

vim ifcfg-eth0                            
TYPE="Ethernet"
BOOTPROTO=none
DEFROUTE="yes"
NAME="eth0"
DEVICE="eth0"
ONBOOT=yes                          
IPADDR="192.168.4.100"           
PREFIX=24
cd /etc/sysconfig/network-scripts               
每一个服务器都有特殊的网卡ifcfg-lo没有真正的网卡,这个网卡是虚拟出来的
cp ifcfg-lo{,:0}       拷贝一份网卡出来。
vim ifcfg-lo:0        伪装成4.15去回应客户端
DEVICE=lo:0
IPADDR=192.168.4.15               是vip
NETMASK=255.255.255.255     必须是全255/32NETWORK=192.168.4.15           主机型IP,自己在一个网里
BROADCAST=192.168.4.15        广播地址,也是自己
ONBOOT=yes                             这个网卡开机时是否自动激活
NAME=lo:0                                 网卡名字
vim /etc/sysctl.conf                     修改后不响应客户的广播请求
net.ipv4.conf.all.arp_ignore=1    不回VIP              手写这些内容
net.ipv4.conf.lo.arp_ignore=1     不回VIP
net.ipv4.conf.lo.arp_announce=2           如果是0就把所有东西告诉对方,1尽量不说,2是打死不说
net.ipv4.conf.all.arp_announce=2   配置完不能立刻生效,需要这个命令刷新下才能生效sysctl -p

Wbe2配置

vim ifcfg-eth0                            
TYPE="Ethernet"
BOOTPROTO=none
DEFROUTE="yes"
NAME="eth0"
DEVICE="eth0"
ONBOOT=yes                          
IPADDR="192.168.4.200"           
PREFIX=24 
cd /etc/sysconfig/network-scripts
cp ifcfg-lo{,:0}
vim ifcfg-lo:0      伪装成4.15
DEVICE=lo:0
IPADDR=192.168.4.15               是vip
NETMASK=255.255.255.255     必须是全255/32NETWORK=192.168.4.15           主机型IP,自己在一个网里
BROADCAST=192.168.4.15        广播地址,也是自己
ONBOOT=yes                             这个网卡开机时是否自动激活
NAME=lo:0                                 网卡名字
两个web都要做这个
vim /etc/sysctl.conf                     修改后不响应客户的广播请求
net.ipv4.conf.all.arp_ignore=1    不回VIP              手写这些内容
net.ipv4.conf.lo.arp_ignore=1     不回VIP
net.ipv4.conf.lo.arp_announce=2           如果是0就把所有东西告诉对方,1尽量不说,2是打死不说
net.ipv4.conf.all.arp_announce=2   配置完不能立刻生效,需要这个命令刷新下才能生效sysctl -p
systemctl restart network               重启网卡
setenforce 0 关闭SELinux防火墙
systmctl  stop  firewalld  关闭防护
iptables -F   清空防火墙规则

调度器1配置IP

192.168.4.5/24 VIP192.168.4.15
systemctl restart network               重启网卡
1.yum -y  install ipvsadm
2.yum -y install keepalived
3.vim /etc/keepalived/keepalived.conf  改下面2两行
router_id  lvs1
virtual_ipaddress{            (设置VIP所获取的虚拟IP)可以设置多个虚拟IP192.168.4.15
}
下面修改的是LVS和健康检查功能
virtual_server 192.168.4.15  80{                    创建虚拟集群语句也就是LVS的这个命令ipvsadm -A创建虚拟集群
                       delay_loop  6
	        lb_algo rr                                调度算法
	        lb_kind DR                            工作模式
	        #persistence_timeout 50         保持链接50 秒需要注释了
	        protocol  TCP
real_server 192.168.4.100  80{                         给虚拟集群添加真实机的IP也就是LVS这个命令ipvsadm -a
	weight  1              权重
下面是健康检查
SSL_get改成tcp_check{      
connect_timeout 3     等待超时3秒
nb_get_retry 3            反复试3次
delay_before_retry 33秒做一次健康检查
}补充的可以更换前面的SSL_get,tcp_check   http_get
在写一个集群
real_server 192.168.4.200  80{                         给虚拟集群添加真实机的IP也就是LVS这个命令ipvsadm -a
	weight  1              权重
下面是健康检查
SSL_get改成tcp_check{      
connect_timeout 3     等待超时3秒
nb_get_retry 3            反复试3次
delay_before_retry 33秒做一次健康检查
}
}
systemctl start keepalived
iptables -F   清空防火墙规则

调度器2配置IP

网卡192.168.4.6/24 VIP192.168.4.15
systemctl restart network               重启网卡
1.yum -y  install ipvsadm
2.yum -y install keepalived
3.vim /etc/keepalived/keepalived.conf  改下面2两行
router_id  lvs2
改state BACKUP(改成这个BACKUP)
改低priority 90  
virtual_ipaddress{            (设置VIP所获取的虚拟IP)可以设置多个虚拟IP192.168.4.15
}
virtual_server 192.168.4.15  80{                    创建虚拟集群语句也就是LVS的这个命令ipvsadm -A创建虚拟集群
                       delay_loop  6
	        lb_algo rr                                调度算法
	        lb_kind DR                            工作模式
	        #persistence_timeout 50         保持链接50 秒需要注释了
	        protocol  TCP
real_server 192.168.4.100  80{                         给虚拟集群添加真实机的IP也就是LVS这个命令ipvsadm -a
	weight  1              权重
下面是健康检查
SSL_get改成tcp_check{      
connect_timeout 3     等待超时3秒
nb_get_retry 3            反复试3次
delay_before_retry 33秒做一次健康检查
}补充的可以更换前面的SSL_get,tcp_check   http_get
在写一个集群
real_server 192.168.4.200  80{                         给虚拟集群添加真实机的IP也就是LVS这个命令ipvsadm -a
	weight  1              权重
systemctl start keepalived
iptables -F   清空防火墙规则