环境:
且dir机器与rs机器均关闭防火墙(SELinux&firewalld)并安装rsync工具。
[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上进行相同的配置及执行某些相同命令,所以创建了分发系统,如下:
使用说明: 待以下工作完成后,执行脚本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机器上进行确认。持续更新。。。
(adsbygoogle = window.adsbygoogle || []).push({});