引言:
ldirectord + lvs实现服务器的高可用之后,我们仍需考虑到,如果lvs调度器故障,我们有应该如何确保服务的正常访问呢?所以出现了lvs调度器的主备,使用两台调度器(一主一备)当主调度器故障,立即器用启用备用调度器,使访问不受影响。
实验环境:
redhat 7.5
server1(lvs-主) | 172.25.60.1/24 |
---|---|
server4(lvs-备) | 172.25.60.4/24 |
server2(apache) | 172.25.60.2/24 |
server3(apache) | 172.25.60.3/24 |
配置:
(1)server1/4上安装keepalived并配置
server1: 主
keepalived-2.0.17.tar.gz 自己下载压缩包
tar -zxf keepalived-2.0.17.tar.gz
yum install gcc openssl-devel 安装源码编译所需要的环境
cd keepalived-2.0.17
./configure --prefix=/usr/local/keepalived --with-init=systemdls
make && make install
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
vim /etc/keepalived/keepalived.conf //配置文件如下
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 MASTER //主调度器
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.60.100 //vip,启动服务时自动生成
}
}
virtual_server 172.25.60.100 80 {
delay_loop 3
lb_algo rr //轮询
lb_kind DR //DR模式
#persistence_timeout 50
protocol TCP
real_server 172.25.60.2 80 { //server2
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.60.3 80 { //server3
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
server4: 备
keepalived-2.0.17.tar.gz 自己下载压缩包
tar -zxf keepalived-2.0.17.tar.gz
yum install gcc openssl-devel 安装源码编译所需要的环境
cd keepalived-2.0.17
./configure --prefix=/usr/local/keepalived --with-init=systemdls
make && make install
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
vim /etc/keepalived/keepalived.conf //配置文件如下
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 //备
interface eth0
virtual_router_id 51
priority 50 //比主调度器小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.60.100
}
}
virtual_server 172.25.60.100 80 {
delay_loop 3
lb_algo rr
lb_kind DR
#persistence_timeout 50
protocol TCP
real_server 172.25.60.2 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.60.3 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
开启keppalived时配置的vip自动在主调度器上生效
systemctl start keepalived
(2)server2/3上开启配置好的apache
systemctl start httpd
测试:
当主备都开启时:查看主备ip时,vip(172.25.60.100)在server1(主)上生效,此时用物理机访问时通过server1调度访问后端服务器
当主调度器故障时:查看主备ip时,vip(172.25.60.100)在server2(备)上生效,此时用物理机访问时通过server2调度访问后端服务器
当server1恢复正常时,将继续通过server1调度(vip将回到server1上)