Keepalived+LVS(DR)集群之一键部署rs机器路由转发

时间:2022-06-19
本文章向大家介绍Keepalived+LVS(DR)集群之一键部署rs机器路由转发 ,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

负载均衡(Keepalived+lvs)

环境:

且dir机器与rs机器均关闭防火墙(SELinux&firewalld)并安装rsync工具。

dir操作(Keepalived+lvs多端口负载均衡)

dir1

[root@director sbin]# yum install -y keepalived

[root@Centos-1 sbin]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass password
    }
    virtual_ipaddress {
        192.168.14.13
    }
}
virtual_server 192.168.14.13 80 {
    delay_loop 10
    lb_algo wlc
    lb_kind DR
    persistence_timeout 180
    protocol TCP
    real_server 192.168.14.127 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.14.128 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
     real_server 192.168.14.129 80 {
         weight 100
         TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         delay_before_retry 3
         connect_port 80
         }
      }
}
virtual_server 192.168.14.13 8080 {
    delay_loop 10
    lb_algo wlc
    lb_kind DR
    persistence_timeout 180
    protocol TCP
    real_server 192.168.14.127 8080 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.14.128 8080 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
     real_server 192.168.14.129 8080 {
         weight 100
         TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         delay_before_retry 3
         connect_port 80
         }
      }
}

在dir2上执行同样的操作,lvs多端口负载均衡,需要注意的是dir2机器上state改为BACKUP,priority设为90。

一键部署rs机器路由转发

因为是团队协作,而且需要在多台rs上进行相同的配置及执行某些相同命令,所以创建了分发系统,如下:

使用说明: 待以下工作完成后,执行脚本lvs_rsync.sh便可一键完成rs机器上路由转发功能配置。

准备工作

[root@Centos-1 sbin]# yum install -y expect 
[root@Centos-1 sbin]# yum install -y rsync

说明: 在分发系统服务端安装expect工具;在所有机器上安装rsync工具(用于文件传输)

文件分发

创建ip.list文件,备用:
[root@Centos-1 sbin]# vim /tmp/expect/ip.list
192.168.14.127
192.168.14.128
192.168.14.129
#此处保存的是多台rs的IP

创建list.txt,备用:
[root@Centos-1 sbin]# vim /tmp/expect/list.txt
/usr/local/sbin/lv_rs.sh
#lv_rs.sh为开启rs机器上路由转发功能的脚本

创建路由转发启动脚本,备用:
[root@Centos-1 sbin]#  vim lv_rs.sh
#/bin/bash
vip=192.168.14.13
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
#该脚本在rs机器使用,用于开启路由转发功能

创建文件分发脚本:
[root@Centos-1 sbin]# vim lvs_rsync.expect
#!/usr/bin/expect
#Using to expect lvs_rs.sh on rs1 rs2 rs3
#Written by Adai
set passwd "password"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -avR --files-from=$file / root@$host:/
expect {
"yes/no" { send "yesr"}
"password:" { send "$passwdr" }
}
expect eof
#该脚本用于向rs传输list.txt指定的文件

[root@Centos-1 sbin]# chmod a+x lvs_rsync.expect

创建文件分发启动脚本:
[root@Centos-1 sbin]# vim lvs_rsync.sh
#!/bin/bash
#Using to expecting lvs_rs.sh to rs1 rs2 rs3
#Written by Adai
for ip in `cat /tmp/expect/ip.list`
do
    ./lvs_rsync.expect $ip /tmp/expect/list.txt
done
if [ $? -eq 0 ]
then
    /bin/bash /usr/local/sbin/lvs_exe.sh
fi
#该脚本的作用是调用ip.list和list.txt文件,并执行lvs_rsync.expect脚本

使用说明: 本脚本的作用是将脚本lv_rs.sh分发到各个rs机器上。

命令分发

创建命令分发脚本:
[root@Centos-1 sbin]# vim lvs_exe.expect
#!/usr/bin/expect
#Using to expect order to rs
#Written by Adai
set host [lindex $argv 0]
set passwd "password"
set cm [lindex $argv 1]
spawn ssh root@$host
expect {
"yes/no" { send "yesr"}
"password:" { send "$passwdr" }
}
expect "]*"
send "$cmr"
expect "]*"
send "exitr"
#该脚本用远程执行命令

[root@Centos-1 sbin]# chmod a+x

创建命令分发启动脚本:
[root@Centos-1 sbin]# vim lvs_exe.sh
#!/bin/bash
#Using to pass variates to lvs_exe.expect
#Written by Adai
for ip in `cat /tmp/expect/ip.list`
do
  ./lvs_exe.expect $ip "sh /usr/local/sbin/lv_rs.sh"
done
#该脚本用于调用ip.list文件,并向lvs_exe.expect传递参数

使用说明: 本脚本的作用是执行rs机器上lv_rs.sh脚本。

提示:

脚本欠缺:为对lv_rs.sh文件是否传输到rs机器上进行确认。持续更新。。。

(adsbygoogle = window.adsbygoogle || []).push({});