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

负载均衡(Keepalived+lvs)

环境:
mark

且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 "yes\r"}
"password:" { send "$passwd\r" }
}
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 "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]*"
send "$cm\r"
expect "]*"
send "exit\r"
#该脚本用远程执行命令

[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机器上进行确认。持续更新。。。

转载于:https://my.oschina.net/adailinux/blog/1543863

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值