在上一个实验的基础上,我们讨论,当调度器server1也挂了,该怎么办?我们可以设置调度器的高可用,设置调度器的master(主)和backup(备)。
实验环境
- 4台rhel7.5版本的虚拟机
主机 | 服务 |
---|---|
server1(172.25.24.1) | master(主) |
server4(172.25.24.4) | backup(备) |
server2(172.25.24.2) | 真正的服务器1 |
server3(172.25.24.3) | 真正的服务器2 |
实验步骤
server1(主)
- 下载keepalive安装包,解压。
[root@server1 ~]# tar zxf keepalived-2.0.17.tar.gz #解压
- 解压完成后,源码编译。
[root@server1 keepalived-2.0.17]# yum install gcc openssl-devel -y
[root@server1 keepalived-2.0.17]# ./configure --help
[root@server1 keepalived-2.0.17]# ./configure --prefix=/usr/local/keepalived --with-init=systemd #指定服务的打开方式
[root@server1 keepalived-2.0.17]# make && make install
- 做一个软链接,关闭之前的ldirector服务,
[root@server1 keepalived]# ln -s /usr/local/keepalived/etc/keepalived /etc/
[root@server1 keepalived]# /etc/init.d/ldirectord stop
[root@server1 keepalived]# chkconfig ldirectord off
- 服务的状态中有与服务启动相关的配置文件
[root@server1 keepalived]# systemctl status keepalived.service
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@server1 keepalived]# vim /usr/lib/systemd/system/keepalived.service
- 将server1的eth0上原本有的100这个ip删除
[root@server1 keepalived]# ip addr del 172.25.24.100/24 dev eth0
- keepalived的所有配置都在一个配置文件里面设置,支持的配置主要分为三类:
1.全局配置(Global Configuration):作用于整个keepalived服务。
2.VRRPD配置:keepalived的核心。
3.虚拟服务配置:指定服务与负载均衡配置文件都是以块形式组织的,每个块都在{}包围的范围内。
[root@server1 keepalived]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { #全局定义块
notification_email { #邮件通知
root@localhost #邮件发给本机用户
}
notification_email_from keepalived@localhost #设置邮件发送地址
smtp_server 127.0.0.1 #smtp_server地址,为本机回环接口。
smtp_connect_timeout 30 #服务超时时间
router_id LVS_DEVEL #load balance的标识ID,用于email报警
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
##VRRPD的配置
vrrp_instance VI_1 {
state MASTER 主机,备机为BACKUP,此状态是由priority的数值来决定的,当前priority的数值小于备机的数值
interface eth0 #HA检测网络接口
virtual_router_id 24 #主备机的virtual_router_id必须相同取值0-255
priority 100 主机的优先级,必须大于备机
advert_int 1 #主备之间的通告间隔秒数
authentication {
auth_type PASS #设置验证类型,主要由PASS和AH两种
auth_pass 1111
}
#指定漂移地址(VIP)即切换到master时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令)
virtual_ipaddress {
172.25.24.100
}
}
#虚拟服务配置
virtual_server 172.25.24.100 80{ #定义虚拟服务器
delay_loop 3
lb_algo rr #lvs调度算法里面的论询
lb_kind DR #lvs的DR模式
# persistence_timeout 50 #注释掉
protocol TCP #指定转发协议类型
real_server 172.25.24.2 80 { #配置服务节点
TCP_CHECK {
weight 1 #默认为1,0为失效
connect_timeout 3 10秒无响应超时
retry 3 #重复次数
delay_before_retry 3 #重复间隔
}
}
real_server 172.25.24.3 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
- 修改完成后,将此配置文件发送一份给server4(server4的安装包编译好之后):
[root@server1 keepalived]# scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/
- 开启服务keepalived。
[root@server1 keepalived]# systemctl start keepalived
server4主机(备)
- 同理,获取keepalived的安装包,解压,安装编译工具(gcc,openssl-devel)进行源码编译。做一个软链接,过程同server1,不再赘述。
将从server1上发送过来的配置文件再修改以下几处:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP #备机为backup
interface eth0
virtual_router_id 24
priority 50 #优先级小于主机的100,为50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.24.100
}
}
virtual_server 172.25.24.100 80{
delay_loop 3
lb_algo rr
lb_kind DR
# persistence_timeout 50
protocol TCP
real_server 172.25.24.2 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.24.3 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
- 开启服务。
[root@server4 keepalived]# systemctl start keepalived
测试
- 在server1:
- 此时server1上已经分配到了vip(172.25.24.100),而此时辅助server4上是没有此ip的。
- 将server2和server3上的httpd服务开启,并在真机测试:
- 关闭server1(master设备的)keepalived服务。VIP会漂移到server4(backup)主机上。
[root@server1 keepalived]# systemctl stop keepalived.service
- 查看server4此时的日志信息,server4此时进入主机模式(master)。
- 当关闭server2或server3的httpd服务后,查看日志信息。
当有错误时本机发邮件给本机的检测
- server1(master)和server4(backup)都可以收到邮件,下面以server1为例:
安装接收邮件所需要的软件:[root@server1 keepalived]# yum install mailx -y
- 当关闭server2的httpd服务后查看邮件: