zoukankan      html  css  js  c++  java
  • 一键部署LVS高可用

    一键部署LVS高可用,本人亲测可用,若有不同可做调整

    #!/usr/bin/env bash
    
    mkdir lxl
    
    cd lxl
    
    touch hosts.txt
    
    author(){
    
    echo "----------------------------------------------------------------------------------------------------"
    
    echo "- keepalived和ipvsadm部署完毕 -"
    
    echo "- 作者:lxl -"
    
    echo "- 微信:l15565623507 -"
    
    echo "----------------------------------------------------------------------------------------------------"
    
    }
    
    keepalived_ipvsadm(){
    
    index=0
    
    real_n=0
    
    keep=/etc/keepalived/keepalived.conf
    
    yum -y -q install ipvsadm keepalived &>/dev/null
    
    echo -e "e[1;33m----------------------安装ipvsadm和keepalived成功-------------------------e[0m"
    
    sed -i 's/ interface eth0/ interface ens33/g' $keep
    
    echo -e "e[1;33m----------------------修改网卡成功---------------------------------------e[0m"
    
    sed -i -e '60,$d' -i -e '31,32d' $keep
    
    sed -i '44,51d' $keep
    
    sed -i '41,48d' $keep
    
    echo -e "e[1;33m----------------------删除多余行成功-------------------------------------e[0m"
    
    sed -i 's/ vrrp_strict/ #vrrp_strict/g' $keep
    
    echo -e "e[1;33m----------------------注释 vrrp_strict成功-------------------------------e[0m"
    
    sed -i 's/ persistence_timeout 50/ #persistence_timeout 50/g' $keep
    
    echo -e "e[1;33m----------------------注释 persistence_timeout 50成功--------------------e[0m"
    
    sed -i 's/ lb_kind NAT/ lb_kind DR/g' $keep
    
    echo -e "e[1;33m----------------------修改为DR模式成功-----------------------------------e[0m"
    
    read -p "请输入VIP地址:" VIP
    
    sed -i 's/ 192.168.200.16/ '"$VIP"'/g' $keep
    
    sed -i 's/virtual_server 192.168.200.100 443 {/virtual_server '"$VIP"' 80 {/g' $keep
    
    echo -e "e[1;33m----------------------增加VIP地址成功-----------------------------------e[0m"
    
    ipvsadm -A -t $VIP:80 -s rr
    
    while :
    
    do
    
    read -p "请输入真实服务器的个数:" n
    
    if [ $n -gt 0 ];then
    
    while :
    
    do
    
    read -p "请输入真实服务器的IP地址:" RVIP
    
    array[$index]=$RVIP
    
    #定义 hosts.txt
    
    cat >> hosts.txt << EOF
    
    $RVIP
    
    EOF
    
    index=` expr $index + 1`
    
    real_n=`expr $real_n + 1`
    
    if [ $real_n -eq $n ]; then
    
    break
    
    fi
    
    done
    
    break
    
    else
    
    echo "真实服务器的个数必须大于0"
    
    fi
    
    done
    
    if [ $index -gt 1 ]; then
    
    index=0
    
    a=0
    
    line=39
    
    while :
    
    do
    
     
    
    sed -i ''"$line"'a real_server '"${array[$index]}"' 80 { 
    
    weight 1 
    
    TCP_CHECK { 
    
    connect_prot 80 
    
    connect_timeout 3 
    
    nb_get_retry 3 
    
    delay_before_retry 3 
    
    } 
    
    }' $keep
    
    ipvsadm -a -t $VIP:80 -r ${array[$index]}:80 -g
    
    line=` expr $line + 9`
    
    index=` expr $index + 1`
    
    a=` expr $a + 1 `
    
    if [ $a -eq $n ]; then
    
    break
    
    fi
    
    done
    
    else
    
    sed -i '39a real_server '"${array[$index]}"' 80 { 
    
    weight 1 
    
    TCP_CHECK { 
    
    connect_prot 80 
    
    connect_timeout 3 
    
    nb_get_retry 3 
    
    delay_before_retry 3 
    
    } 
    
    }' $keep
    
    fi
    
    systemctl restart keepalived
    
    echo -e "e[1;33m----------------------keepalived启动成功-------------------------------------e[0m"
    
     
    
    for i in {1..10}
    
    do
    
    echo "-"
    
    done
    
    read -p "是否做过免密环境(yes/no):" pass
    
    if [ $pass == "no" ]; then
    
    rpm -q expect
    
    if [ $? -eq 0 ]; then
    
    echo -e "e[1;33m--已安装--e[0m"
    
    else
    
    yum -y install expect &>/dev/null
    
    if [ $? -eq 0 ]; then
    
    echo -e "e[1;33m--安装成功--e[0m"
    
    else
    
    echo -e "e[1;33m--安装失败--e[0m"
    
    fi
    
    fi
    
    #本机是否有ssh密钥 没有则生成
    
    if [ ! -f ~/.ssh/id_rsa ]; then
    
    echo -e "e[1;33m--请按3次enter健--e[0m"
    
    ssh-keygen -t rsa
    
    fi
    
    ssh_expect() {
    
    expect -c "set timeout -1;
    
    spawn ssh-copy-id root@$1
    
    expect {
    
    "yes/no" { send -- yes
    ;exp_continue;}
    
    "password:" { send -- $2
    ;exp_continue;}
    
    eof
    
    }";
    
    }
    
    read -p "请输入真实服务器密码:" passwd
    
    for ip in `cat hosts.txt|awk '{print $1}'`
    
    do
    
    ssh_expect ${ip} ${passwd}
    
    done
    
     
    
    else
    
    break
    
    fi
    
    ipvsadm(){
    
    touch ipvsadm.sh
    
    path=`pwd`/ipvsadm.sh
    
    rvip=$VIP
    
    cat >> ipvsadm.sh<<EOF
    
    #!/usr/bin/bash
    
    cd /etc/sysconfig/network-scripts/
    
    cp ifcfg-lo ifcfg-lo:0
    
    sed -i 's/DEVICE=lo/DEVICE=lo:0/g' ifcfg-lo:0
    
    sed -i 's/IPADDR=127.0.0.1/IPADDR=$rvip/g' ifcfg-lo:0
    
    sed -i 's/NETMASK=255.0.0.0/NETMASK=255.255.255.255/g' ifcfg-lo:0
    
    sed -i '4,7d' ifcfg-lo:0
    
    sed -i '5d' ifcfg-lo:0
    
    systemctl restart network
    
    echo -e "e[1;33m----------------------网卡修改成功-------------------------------------e[0m"
    
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    
    echo -e "e[1;33m----------------------响应级别修改成功-------------------------------------e[0m"
    
    route add $rvip dev lo
    
    echo -e "e[1;33m----------------------路由增加成功-------------------------------------e[0m"
    
    EOF
    
     
    
    ifip=`ifconfig |grep inet|awk 'NR==1{print$2}'`
    
    for ip in `cat hosts.txt|awk '{print $1}'`
    
    do
    
    ssh root@$ip "mkdir -p /opt/lxl"
    
    scp root@$ifip:$path $ip:/opt/lxl/
    
    ssh root@$ip "sh /opt/lxl/ipvsadm.sh"
    
    done
    
    }
    
    }
    
    keepalived_ipvsadm
    
    ipvsadm
    
    author
  • 相关阅读:
    FileWatcher
    virtual table(有180个评论)
    this 指针
    docker -ce(社区免费版)
    vue-cli
    CAP理论、BASE理论
    B+树和LSM存储引擎代表树和B-树
    CPU高速缓存
    Python&基础环境搭建
    二叉树
  • 原文地址:https://www.cnblogs.com/l999999999/p/12298810.html
Copyright © 2011-2022 走看看