#!/bin/bash

################################

## Author: xgmin

## Version: 1.0

## Date:    20200324

################################

#修改yum文件########################

rm -f /etc/yum.repos.d/*.repo

########修改yum源地址为自己的yum或者公网源地址##############

wget -O /etc/yum.repos.d/centos7.repo http://mirror.xxx.com/other/repo/centos7.repo

wget -O /etc/yum.repos.d/docker-ce.repo http://mirror.xxx.com/other/repo/docker-ce.repo

wget -O /etc/yum.repos.d/epel7.repo http://mirror.xxx.com/other/repo/epel7.repo

yum clean all && yum repolist

#this is install_keepalived shell

echo -e  "\e[1;32m =================开始安装!============== \e[0m "

echo -e  "\e[1;32m =================安装基础环境============== \e[0m "

yum install gcc openssl-devel popt-devel libnl-devel kernel-devel libnfnetlink-devel vim tree -y


echo -e  "\e[1;32m =================下载文件============== \e[0m "

mkdir -p /nginx/keepalived/script && cd /nginx

wget -c http://10.10.2.64/keepalived/keepalived-1.2.23.tar.gz

tar zxvf keepalived-1.2.23.tar.gz && cd /nginx/keepalived-1.2.23


echo -e  "\e[1;32m =================编译安装============== \e[0m "

./configure --prefix=/nginx/keepalived;make && make install


echo -e  "\e[1;32m =================修改配置============== \e[0m "

tee > /nginx/keepalived/etc/keepalived/keepalived.conf <<'EOF'

! Configuration File for keepalived


global_defs {

  router_id LVS_DEVEL

}


vrrp_script chk_nginx_proxy {

script "/nginx/keepalived/script/chk_nginx_proxy.sh"


interval 2

weight 2

}


vrrp_instance VI_1 {

   state BACKUP

   interface eth0

   virtual_router_id 152

   priority 200

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass 615999

   }

   virtual_ipaddress {

       10.7.135.220/24 dev eth0 label eth0:vip

   }

   track_script {

   chk_nginx_proxy

   }

}

EOF

#####################################

tee > /nginx/keepalived/script/chk_nginx_proxy.sh <<'EOF'

#!/bin/bash

nginxpid=`ps -C nginx --no-header | wc -l`

if [ $nginxpid -eq 0 ];then

service keepalived stop

fi

EOF

###############################

echo -e  "\e[1;32m =================修改日志============== \e[0m "

if [[ $(cat /etc/rsyslog.conf | grep messages | grep -v '^#' | wc -l) -gt 1 ]]

 then

   echo "there is more than one row end by messages ,please check!!"

   exit 100

fi

ln -s /nginx/keepalived/etc/sysconfig/keepalived /etc/sysconfig/;ln -s /nginx/keepalived/sbin/keepalived /usr/bin/;ln -s /nginx/keepalived/etc/keepalived/ /etc/;ln -s /nginx/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

sed -i '14 s#KEEPALIVED_OPTIONS="-D"#KEEPALIVED_OPTIONS="-D -d -S 0"#g' /etc/sysconfig/keepalived

row=$(awk '/\/messages$/{print NR}' /etc/rsyslog.conf)

row_log=$(expr $row + 1)

sed -i "$row_log a# keepalived \nlocal0.*          /var/log/keepalived\n" /etc/rsyslog.conf

var_log=$(sed -n "${row}p" /etc/rsyslog.conf| awk '{print $1}')

sed -i "$row s/$var_log/&;local0.none/g" /etc/rsyslog.conf

sed -i '1 i/var/log/keepalived' /etc/logrotate.d/syslog

row_sudo=$(awk '/## Networking/{print NR}' /etc/sudoers)

sed -i "${row_sudo}i## Keepalived\nCmnd_Alias KEEPALIVED = /etc/init.d/keepalived start, /sbin/service keepalived start, /etc/init.d/keepalived stop, /sbin/service keepalived stop, /etc/init.d/keepalived restart, /sbin/service keepalived restart, /etc/init.d/keepalived status, /sbin/service keepalived status\n" /etc/sudoers

row1=$(awk '/root.*ALL$/{print NR}' /etc/sudoers)

sed -i "$(expr $row1 + 1)a## Allow nginx to manage keeaplived\nginx   "$HOSTNAME"= NOPASSWD: KEEPALIVED\n" /etc/sudoers


echo -e  "\e[1;32m =================启动服务============== \e[0m "

systemctl restart rsyslog