shell一键部署LVS-DR模式
方法一
1.配置DR服务器脚本
#######DR自动配置脚本######
##1.关闭防火墙##
systemctl stop firewalld
setenforce 0
modprobe ip_vs
##2.安装ipvsadm软件包##
yum -y install ipvsadm.x86_64
if [ $? -ne 0 ];then
echo"安装失败,请检查服务配置!"
exit 1
fi
##3.配置网卡信息##
read -p "请配置DR服务器ens33网卡的ip:" ip
read -p "请配置DR服务器ens33:0网卡的ip:" ip0
read -p "请输入服务器1的ip:" pc1
read -p "请输入服务器2的ip:" pc2
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
sed -i "16c IPADDR=$ip" /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i "12c NAME=ens33:0" /etc/sysconfig/network-scripts/ifcfg-ens33:0
sed -i "14c DEVICE=ens33:0" /etc/sysconfig/network-scripts/ifcfg-ens33:0
sed -i "16c IPADDR=$ip0" /etc/sysconfig/network-scripts/ifcfg-ens33:0
sed -i "13d" /etc/sysconfig/network-scripts/ifcfg-ens33:0
sed -i "16,18d" /etc/sysconfig/network-scripts/ifcfg-ens33:0
##3.重启网卡##
systemctl restart network
if [ $? -ne 0 ];then
echo "网卡配置错误!"
exit 2
fi
##4.修改 /etc/sysctl.conf配置文件##
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
##5.重启ipvsadm服务##
systemctl start ipvsadm.service
ipvsadm -C
ipvsadm -A -t $ip0:80 -s rr
ipvsadm -a -t $ip0:80 -r $pc1:80 -g
ipvsadm -a -t $ip0:80 -r $pc2:80 -g
ipvsadm && ipvsadm -ln
if [ $? -eq 0 ];then
echo "服务安装成功!"
fi
2.配置节点服务器1和2脚本(代码相同,改个网页内容即可)
#######服务器自动配置脚本######
##1.关闭防火墙##
systemctl stop firewalld
setenforce 0
modprobe ip_vs
##2.安装启动httpd服务##
yum -y install httpd
systemctl start httpd
##3.配置服务器ifcfg-lo:0网卡##
read -p "请输入DR服务器ens33:0网卡的ip:" ip0
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
sed -i "1c DEVICE=lo:0" /etc/sysconfig/network-scripts/ifcfg-lo:0
sed -i "2c IPADDR=$ip0" /etc/sysconfig/network-scripts/ifcfg-lo:0
sed -i "3c NETMASK=255.255.255.255" /etc/sysconfig/network-scripts/ifcfg-lo:0
sed -i "4,7d" /etc/sysconfig/network-scripts/ifcfg-lo:0
sed -i "$d" /etc/sysconfig/network-scripts/ifcfg-lo:0
##4.重启网卡##
ifup ifcfg-lo:0
##5.指向DR 服务器##
route add -host $ip0 dev lo:0
route -n
##6.修改配置文件,设置开机自启动
echo 'route add -host 192.168.47.100 dev lo:0' >> /etc/rc.d/
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
##7.创建网页文件##:
cd /var/www/html/
echo 'Hello,Tom!' > /var/www/html/index.html
echo "服务安装完毕!"
方法二(共享目录方法)
#!/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"