-
LVS+keepalived
-
keepalived背景
-
针对LVS的辅助工具,主要提供故障切换与健康检查。
-
工作场景:作为调度器的双机热备,以及节点服务器的健康检查以及故障切换(删除条目)。
-
借鉴了VRRP协议来实现高可用。
-
-
keepalived部署
-
拓扑
-
两台调度器之间实现高可用并实现对web服务器的健康状态检查,web服务器之间做一个负载均衡。
-
两台调度器的配置
-
准备前奏
-
添加或关闭防火墙,内核安全机制也要关闭
-
关闭NetworkManager
-
该服务如果不关闭,漂移IP无法进行漂移
-
-
-
安装keepalived并进行配置
-
安装后先设置为开机自启
-
systemctl disable keepalived
-
-
拷贝配置文件:在/etc/keepalived/keepalived
-
配置文件详解
-
全局配置部分
-
global_defs {
-
notification_email {
-
该模块表示当keep发生切换操作后需要发送Email通知,以及发送给哪些邮件地址
-
-
acassen@firewall.loc
-
具体的邮件地址,每行一个
-
-
failover@firewall.loc
-
sysadmin@firewall.loc
-
}
-
notification_email_from Alexandre.Cassen@firewall.loc
-
该行定义了发送警报邮件的发送者是谁(发件人)
-
-
smtp_server 192.168.200.1
-
表示可以用那台服务器的邮件服务发送邮件,通常可以使用127.0.0.1也就是本机提供该服务。
-
-
smtp_connect_timeout 30
-
连接stmp服务的超时时间
-
-
router_id LVS_DEVEL
-
机器标识:区分不同服务器的标识,对实际的服务的运行不产生影响,邮件服务快速定位
-
-
vrrp_skip_check_adv_addr
-
不对master的宣告地址做检查,宽松的运行keepalived
-
-
vrrp_strict
-
启用该项是除非恰当设置网络,否则不允许单播通信。
-
-
vrrp_garp_interval 0
-
定期宣告IP地址所有权,当设置为0时仅在切换后做宣告
-
-
vrrp_gna_interval 0
-
}
-
-
vrrp实例部分
-
vrrp_instance VI_1 {
-
实例名称,一个服务器可以有多个实例(应用场景)后面会写。
-
-
state MASTER
-
确定初始状态的角色
-
在vrrp的选举循环中的init位置
-
-
-
interface eth0
-
承载VIP的网卡,以自己为准
-
-
virtual_router_id 51
-
每一个实例都必须用相同的VRID才能加入到同一个热备组。
-
-
priority 100
-
因为VRRP采用优先级做选举master依据范围(0~255)0保留,255(IP地址拥有者)
-
-
advert_int 1
-
master的宣告报文间隔,以秒为单位(告诉其他backup)master还活着。
-
-
authentication {
-
当其他的实例想要加入该热备组需要进行密码认证。
-
-
auth_type PASS
-
auth_pass 1111
-
}
-
virtual_ipaddress {
-
虚拟VIP地址:每一个虚拟vip就代表着一个群集
-
-
192.168.200.16
-
192.168.200.17
-
192.168.200.18
-
}
-
}
-
-
虚拟服务器部分
-
virtual_server 192.168.200.100 443 {
-
与实例中的VIP对应,是一个群集的开始
-
-
delay_loop 6
-
健康检查的时间间隔
-
-
lb_algo rr
-
调度算法
-
rr|wrr|lc|wlc|lblc|sh|dh
-
-
-
lb_kind NAT
-
工作模式
-
DR TUN NET
-
-
-
persistence_timeout 50
-
持久超时(会话保持,在50秒内来自同一个IP的请求会被转发到同一个服务器上)
-
-
protocol TCP
-
健康检查用的协议
-
-
real_server 192.168.201.100 443 {
-
后端真实服务器的IP地址以及端口
-
-
weight 1
-
该真实服务器的权重
-
-
SSL_GET {
-
健康检查的方法
-
- 5:SMTP_CHECK:用来检测邮件服务的smtp的
- 5:SMTP_CHECK:用来检测邮件服务的smtp的
-
-
url {
-
path /
-
digest ff20ad2481f97b1754ef3e12ecd3a9cc
-
}
-
url {
-
path /mrtg/
-
digest 9b3a0c85a887a256d6939da88aabd8cd
-
}
-
connect_port 80
-
健康检查的端口
-
-
connect_timeout 3
-
健康检查的连接超时时间
-
-
nb_get_retry 3
-
超时后重试的次数
-
-
delay_before_retry 3
-
重试次数之间的间隔
-
-
}
-
}
-
}
-
-
-
配置文件中需要改动的地方
-
#vrrp_strict
-
将不允许单播注释
-
-
根据需要可以设为不同的标识
-
router_id LVS_01
-
-
state MASTER
-
根据拓扑需求设置为不同的角色
-
-
interface ens33
-
根据实际需要选择合适的网卡承载VIP
-
-
virtual_router_id 51
-
确保同一个热备组中的实例的id一致
-
-
priority 100
-
优先级越高越优先
-
-
virtual_ipaddress { 192.168.10.172 }
-
选择虚拟ip
-
-
virtual_server 192.168.10.172 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 ! persistence_timeout 50 protocol TCP real_server 192.168.10.103 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
-
修改成合适的IP地址,选择健康检查方式,将会话保持功能关闭方便后期测试。
-
-
-
在调度器内核中加入相关参数
-
net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0
-
关闭内核的重定向功能,
-
-
-
最后开启keepalived
-
从服务器也要进行相关设置
-
web服务器处理
-
两台服务器分别用lo:0去承载VIP,并且在内核中添加相关参数。
-
net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2
-
-
最后在web网页文档目录下设置相关参数进行测试,分别down掉调度器与web服务器看是否能正常访问。
-
-
-
-
-
复制全部到xmind即可形成条理性笔记,图片复制不过去请单独粘贴!