脚本
https://gitcode.net/zengliguang/nginx_keepalived.git
系统拓扑
安装keepalived
主备服务器上都需要安装
在线安装
yum install -y keepalived
离线安装
主服务器脚本
# 设置虚拟机ip、网卡命令、hostname(后期自动获取)
master_ipaddress=192.168.11.54
backup_ipaddress=192.168.11.53
virtual_ipaddress=192.168.11.56
hostname=localhost.localdomain
interface=ens33
#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#永久关闭
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
#创建文件夹
mkdir /home/tuners -p
# 拷贝到tuners路径下
\cp -r ./*keepalived* /home/tuners
echo "拷贝完成"
# 离线安装
cd /home/tuners/keepalived
rpm -Uvh --force --nodeps *.rpm
# 生成主服务器配置文件
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
router_id $hostname # 访问到主机,本机的hostname,需要修改
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 检测脚本位置
interval 2 #(检测脚本执行的间隔)
weight 2 # 权重
}
vrrp_instance VI_1 {
state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
interface $interface # 网卡名字,使用ifconfig查看,需要修改
virtual_router_id 51 # 主、备机的 virtual_router_id 不能相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
advert_int 1 # 每隔1秒发送心跳
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip $master_ipaddress ##自己ip
unicast_peer { #单模式
$backup_ipaddress #另一个ip
}
virtual_ipaddress {
$virtual_ipaddress #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
}
}
EOF
# 生成备服务器配置文件
# cat > /etc/keepalived/keepalived.conf << EOF
# global_defs {
# router_id localhost.localdomain # 访问到主机,本机的hostname,需要修改
# }
# vrrp_script chk_http_port {
# script "/usr/local/src/nginx_check.sh" # 检测脚本位置
# interval 2 #(检测脚本执行的间隔)
# weight 2 # 权重
# }
# vrrp_instance VI_1 {
# state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
# interface ens33 # 网卡名字,使用ifconfig查看,需要修改
# virtual_router_id 59 # 主、备机的 virtual_router_id 不能相同
# priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
# advert_int 1 # 每隔1秒发送心跳
# authentication {
# auth_type PASS
# auth_pass 1111
# }
# virtual_ipaddress {
# $virtual_ipaddress #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
# }
# }
# EOF
# 生成监测脚本
# cat > /usr/local/src/nginx_check.sh << EOF
# #!/bin/bash
# A=\`ps -C nginx – no-header |wc -l\`
# if [ \$A -eq 0 ];then
# /usr/sbin/nginx #nginx启动路径
# sleep 2
# if [ \`ps -C nginx --no-header |wc -l\` -eq 0 ];then
# killall keepalived
# fi
# fi
# EOF
cat > /usr/local/src/nginx_check.sh << EOF
rm -rf ./tmp.log
systemctl status nginx.service > ./tmp.log
if cat tmp.log |grep "failed";then
systemctl start nginx.service
sleep 2
rm -rf ./tmp.log
systemctl status nginx.service > ./tmp.log
if cat tmp.log |grep "failed";then
systemctl stop keepalived.service
fi
fi
EOF
# 启动keepalived
systemctl enable keepalived.service
systemctl restart keepalived.service
# 查看keepalived
systemctl status keepalived.service
备服务器脚本
# 设置虚拟机ip、网卡命令、hostname(后期自动获取)
master_ipaddress=192.168.11.54
backup_ipaddress=192.168.11.53
virtual_ipaddress=192.168.11.56
hostname=localhost.localdomain
interface=ens33
#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#永久关闭
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
#创建文件夹
mkdir /home/tuners -p
# 拷贝到tuners路径下
\cp -r ./*keepalived* /home/tuners
echo "拷贝完成"
# 离线安装
cd /home/tuners/keepalived
rpm -Uvh --force --nodeps *.rpm
# 生成主服务器配置文件
# cat > /etc/keepalived/keepalived.conf << EOF
# global_defs {
# router_id localhost.localdomain # 访问到主机,本机的hostname,需要修改
# }
# vrrp_script chk_http_port {
# script "/usr/local/src/nginx_check.sh" # 检测脚本位置
# interval 2 #(检测脚本执行的间隔)
# weight 2 # 权重
# }
# vrrp_instance VI_1 {
# state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
# interface ens33 # 网卡名字,使用ifconfig查看,需要修改
# virtual_router_id 51 # 主、备机的 virtual_router_id 不能相同
# priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
# advert_int 1 # 每隔1秒发送心跳
# authentication {
# auth_type PASS
# auth_pass 1111
# }
# virtual_ipaddress {
# $virtual_ipaddress #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
# }
# }
# EOF
# 生成备服务器配置文件
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
router_id $hostname # 访问到主机,本机的hostname,需要修改
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 检测脚本位置
interval 2 #(检测脚本执行的间隔)
weight 2 # 权重
}
EOF
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
interface $interface # 网卡名字,使用ifconfig查看,需要修改
virtual_router_id 59 # 主、备机的 virtual_router_id 不能相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
advert_int 1 # 每隔1秒发送心跳
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip $backup_ipaddress ##自己ip
unicast_peer { #单模式
$master_ipaddress #另一个ip
}
virtual_ipaddress {
$virtual_ipaddress #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
}
}
EOF
# 生成监测脚本
# cat > /usr/local/src/nginx_check.sh << EOF
# #!/bin/bash
# A=\`ps -C nginx – no-header |wc -l\`
# if [ \$A -eq 0 ];then
# /usr/sbin/nginx #nginx启动路径
# sleep 2
# if [ \`ps -C nginx --no-header |wc -l\` -eq 0 ];then
# killall keepalived
# fi
# fi
# EOF
cat > /usr/local/src/nginx_check.sh << EOF
rm -rf ./tmp.log
systemctl status nginx.service > ./tmp.log
if cat tmp.log |grep "failed";then
systemctl start nginx.service
sleep 2
rm -rf ./tmp.log
systemctl status nginx.service > ./tmp.log
if cat tmp.log |grep "failed";then
systemctl stop keepalived.service
fi
fi
EOF
# 启动keepalived
systemctl enable keepalived.service
systemctl restart keepalived.service
# 查看keepalived
systemctl status keepalived.service
服务器准备
虚拟机ip:192.168.11.56
主服务器:192.168.11.53
备服务器:192.168.11.54
配置文件修改
keepalived安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf
/etc/keepalived
主服务器配置文件
global_defs {
router_id localhost.localdomain # 访问到主机,本机的hostname,需要修改
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 检测脚本位置
interval 2 #(检测脚本执行的间隔)
weight 2 # 权重
}
vrrp_instance VI_1 {
state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
interface ens33 # 网卡名字,使用ifconfig查看,需要修改
virtual_router_id 59 # 主、备机的 virtual_router_id 组播模式不能相同,单播模式必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
advert_int 1 # 每隔1秒发送心跳
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.11.53 ##自己ip
unicast_peer { #单模式
192.168.11.54 #另一个ip
}
virtual_ipaddress {
192.168.11.56 #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
}
}
需要修改的内容如下
hostname 需要修改
hostname获取方式 :在命令行中输入hostname
网卡命令需要修改:interface这个字段的值
查看网卡信息:输入下面命令
ip a
下图中ens33就是网卡名字
虚拟ip需要修改:virtual_ipaddress 这个字段
备服务器配置文件
global_defs {
router_id localhost.localdomain # 访问到主机,本机的hostname,需要修改
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 检测脚本位置
interval 2 #(检测脚本执行的间隔)
weight 2 # 权重
}
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
interface ens33 # 网卡名字,使用ifconfig查看,需要修改
virtual_router_id 59 # 主、备机的 virtual_router_id 组播模式不能相同,单播模式必须相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
advert_int 1 # 每隔1秒发送心跳
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.11.54 ##自己ip
unicast_peer { #单模式
192.168.11.53 #另一个ip
}
virtual_ipaddress {
192.168.11.56 #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
}
}
需要修改的内容跟主服务器脚本一样
监测脚本
主备切换的测试的两种方案
方案1:关服务器
方案2: 停nginx应用
监测脚本流程
监测脚本路径:/usr/local/src/nginx_check.sh
功能:检测nginx是否启动,如果停了就重启,如果还是起不来,就停止keepalived。
主备服务器上都需要配置
rm -rf ./tmp.log
systemctl status nginx.service > ./tmp.log
if cat tmp.log |grep "failed";then
systemctl start nginx.service
sleep 2
rm -rf ./tmp.log
systemctl status nginx.service > ./tmp.log
if cat tmp.log |grep "failed";then
systemctl stop keepalived.service
fi
fi
启动keepalived
systemctl start keepalived.service
重启keepalived
systemctl restart keepalived.service
查询keepalived状态
systemctl status keepalived.service
nginx部署
nginx web页面修改
nginx配置文件路径:/etc/nginx/nginx.conf,该配置文件引用了/etc/nginx/conf.d/default.conf
打开/etc/nginx/conf.d/default.conf配置文件可以看到html页面的路径
/usr/share/nginx/html 为路径
index.html为页面
进入到对应路径下
打开页面文件,修改信息,作为访问的服务器的标记,比如我服务器是54,我就在页面中加上54
具体访问呈现效果如下文章来源:https://www.toymoban.com/news/detail-856405.html
文章来源地址https://www.toymoban.com/news/detail-856405.html
到了这里,关于centos7系统keepalived安装配置(服务器主备、负载均衡)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!