Shell脚本一键部署——DR模式LVS负载均衡群集

该脚本没有以往智能,需要键盘输入获取变量值
当前局限于两台Web节点服务器,后期改善
每台服务器需要配置好yum源
多处使用免交互,需耐心等待

一、随便找一台服务器

随便找一台服务器,该服务器被设定为NFS共享服务器
创建一个脚本文件,将以下内容复制进去

#!/bin/bash
b=`ip a | grep "ens33" | awk NR==2'{print}' | awk -F/ '{print$1}' | awk '{print$2}'`
z=`echo $b | awk -F. '{print$1"."$2"."$3}'`
echo -e "\033[31m 请准备四台服务器 \033[0m"
echo -e "\033[31m 本台服务器为NFS共享服务器($b)\033[0m"

read -p "请输入root密码:" h
read -p "请输入VIP:" e
read -p "请输入负载调度器IP:" a
read -p "请输入Web节点服务器1IP:" c
read -p "请输入Web节点服务器2IP:" d
read -p "请输入共享目录1(例:kgc):" f
read -p "请输入共享目录2(例:benet):" g

yum -y install expect

systemctl stop firewalld.service
setenforce 0
yum -y install nfs-utils rpcbind
mkdir /opt/$f
mkdir /opt/$g
chmod -R 777 /opt/$f
chmod -R 777 /opt/$g

echo "/opt/$f $z.0/24(rw,sync)
/opt/$g $z.0/24(rw,sync)" > /etc/exports

systemctl restart rpcbind.service
systemctl restart nfs.service




#Web1内容导入/opt/$f
cat > /opt/$f/Web1.sh <<EOF
#!/bin/bash
function Web1 {
systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind httpd
systemctl restart rpcbind
systemctl restart httpd

mount.nfs $b:/opt/$f /var/www/html
echo "this is $f web" > /var/www/html/index.html

echo "DEVICE=lo:0
ONBOOT=yes
IPADDR=$e
NETMASK=255.255.255.255" > /etc/sysconfig/network-scripts/ifcfg-lo:0

ifup lo:0
route add -host $e dev lo:0

echo "net.ipv4.conf.lo.arp_ignore = 1                   
net.ipv4.conf.lo.arp_announce = 2               
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf

sysctl -p

}
Web1 
EOF
chmod -R 777 /opt/$f


#Web2内容导入/opt/$g
cat > /opt/$g/Web2.sh <<EOF
#!/bin/bash
function Web2 {
systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind httpd
systemctl restart rpcbind
systemctl restart httpd

mount.nfs $b:/opt/$g /var/www/html
echo "this is $g web" > /var/www/html/index.html

echo "DEVICE=lo:0
ONBOOT=yes
IPADDR=$e
NETMASK=255.255.255.255" > /etc/sysconfig/network-scripts/ifcfg-lo:0

ifup lo:0
route add -host $e dev lo:0

echo "net.ipv4.conf.lo.arp_ignore = 1                   
net.ipv4.conf.lo.arp_announce = 2               
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf

sysctl -p

}
Web2
EOF
chmod -R 777 /opt/$g


#将负载调度器配置导入/opt/$f
cat > /opt/$f/DR.sh <<-EOF
#!/bin/bash
function DR {
systemctl stop firewalld
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

#配置虚拟IP地址
echo "DEVICE=ens33:0
ONBOOT=yes
IPADDR=$e
NETMASK=255.255.255.255" > /etc/sysconfig/network-scripts/ifcfg-ens33:0

systemctl restart network

echo "net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0" >> /etc/sysctl.conf

sysctl -p

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t $e:80 -s rr
ipvsadm -a -t $e:80 -r $c:80 -g
ipvsadm -a -t $e:80 -r $d:80 -g

ipvsadm
}
DR
EOF
chmod -R 777 /opt/$f


#登陆Web1执行共享脚本
/usr/bin/expect <<-EOF
spawn ssh root@$c
expect "(yes/no)" {send "yes\r"}
expect "password" {send "$h\r"}
expect "~]#" {send "yum -y install nfs-utils rpcbind httpd\r"}
expect "~]#" {send "mount.nfs $b:/opt/$f /var/www/html\r"}
expect "~]#" {send ". /var/www/html/Web1.sh\r"}
expect eof
EOF

#登陆Web2执行共享脚本
/usr/bin/expect <<-EOF
spawn ssh root@$d
expect "(yes/no)" {send "yes\r"}
expect "password" {send "$h\r"}
expect "~]#" {send "yum -y install nfs-utils rpcbind httpd\r"}
expect "~]#" {send "mount.nfs $b:/opt/$g /var/www/html\r"}
expect "~]#" {send ". /var/www/html/Web2.sh\r"}
expect eof
EOF

#登陆负载调度器执行共享脚本
/usr/bin/expect <<-EOF
spawn ssh root@$a
expect "(yes/no)" {send "yes\r"}
expect "password" {send "$h\r"}
expect "~]#" {send "yum -y install nfs-utils rpcbind httpd\r"}
expect "~]#" {send "mount.nfs $b:/opt/$f /var/www/html\r"}
expect "~]#" {send ". /var/www/html/DR.sh\r"}
expect eof
EOF

echo -e "\033[31m 此时可使用NFS共享服务器,浏览器访问VIP:$e,间隔5秒点击刷新,验证负载均衡策略是否成功。 \033[0m"

二、执行脚本

在这里插入图片描述

在这里插入图片描述

三、可使用NFS共享服务访问虚拟IP,验证负载均衡策略是否完成

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51432770/article/details/112907660