优秀的编程知识分享平台

网站首页 > 技术文章 正文

ubuntu18安装配置keepalived+nginx

nanyue 2024-08-07 18:51:21 技术文章 9 ℃

使用场景:对于装有ubuntu操作系统的内部虚拟机要安装配置nginx的高可用,没有公网,无法通过网络直接安装keepalived,于是需要先下载好keepalived的包,以及安装keepalived所需要的的依赖包,因此选择一台有网的ubuntu机器,和内网的操作系统版本相同;如下

1.在通互联网的A机器上,apt一键式下载keepalived的依赖包,不安装,脚本depends.sh如下

depends.sh

apt-cache depends $1|grep Depends|awk -F: '{print $2}'>> dependspackage

echo $1 >> dependspackage

for i in `cat dependspackage`;do aptitude download $i ;done

Usage:

sh depends.sh packagename

eg: sh depends keepalived

2.下载好所有keepalived所需要的的deb后,进行安装:

执行:sudo apt install ./*deb

3.配置keepalived:

机器A:MASTER

机器B: BACKUP

两个节点均设置:

vi /etc/sysctl.conf

#net.ipv4.ip_forward=1

#该文件表示是否允许进程邦定到非本地地址

net.ipv4.ip_nonlocal_bind=1

sudo sysctl -p 生效

机器A:MASTER,配置如下:

global_defs {

notification_email {

xxxxx@qq.com

}

notification_email_from xxxx@163.com

smtp_server smtp.163.com

smtp_connection_timeout 30

router_id node2

}

vrrp_script chk_http_port {

script "/usr/local/src/check_nginx_pid.sh"

interval 10 #轮询

weight 2

}

vrrp_instance VI_1 {

state MASTER

interface ens39

virtual_router_id 66

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

chk_http_port

}

virtual_ipaddress {

192.168.124.11

}

}

机器B: BACKUP,配置如下:

global_defs {

notification_email {

xxxxx@qq.com

}

notification_email_from xxxx@163.com

smtp_server smtp.163.com

smtp_connection_timeout 30

router_id node2

}

vrrp_script chk_http_port {

script "/usr/local/src/check_nginx_pid.sh"

interval 10 #轮询

weight 2

}

vrrp_instance VI_1 {

state BACKUP

interface ens33

virtual_router_id 66

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

chk_http_port

}

virtual_ipaddress {

192.168.124.11

}

}

check_nginx_pid.sh

#/bin/bash

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

if [ $A -eq 0 ];then

service nginx restart

if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then

killall keepalived

fi

fi

或者:

#!/bin/bash

echo $password |sudo -S killall -0 nginx > /dev/null 2>&1

res=`echo $?`

while [ $res -ne 0 ];do

sudo systemctl restart nginx

sleep 3

res=`echo $?`

done

最近发表
标签列表