千家信息网

keepalived双机热备nginx如何配置

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章给大家分享的是有关keepalived双机热备nginx如何配置的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。nginx目前是我最常用的反向代理服务,线上环境为了能
千家信息网最后更新 2025年02月03日keepalived双机热备nginx如何配置

这篇文章给大家分享的是有关keepalived双机热备nginx如何配置的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,但传统的方式总是有他的可取之处,并且多学一些东西也很好。以后也会写如何使用docker跑nginx集群。

  环境准备:

  2台centos: 192.168.0.105 和192.168.0.118, 虚拟IP(VIP)为192.168.0.119

配置keepavlived

  分别在105和118上安装keepalived

yum install keepalived

  准备心跳角本

  keepalived的配置相当灵活,可以定时执行角本命令,用于心跳检查,比如,我们访问nginx发现nginx不可访问时,就关闭keepalived,从而切换到从nginx来实现不间断的服务支持。

vi /etc/keepalived/keepalived.conf

#!/bin/bashcount=0for (( k=0; k<2; k++ ))do check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost:81 -o /dev/null ) if [ "$check_code" != "200" ]; then  count=count +1  continue else  count = 0  break fidoneif [ "$count" != "0" ]; then killall keepalived exit 1else exit 0fi

  这段角本的意思就是说每次的心跳检查会执行一个for循环,访问http://localhost:81,在for的2次循环中如果返回的状态都不是200就会关闭keepalived。这个角本在105和118两台机器上都要准备好。

  设置118机器上的keepalived为主节点,105机器上的keepalived为从节点,它们两个的配置文件差不太多

vi /etc/keepalived/keepalived.conf

  118机器keepalived的配置文件

! Configuration File for keepalivedvrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" # 心跳检测角本 interval 2 #脚本执行间隔,每2s检测一次 weight -5 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5 fall 3 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间) rise 2 #检测1次成功就算成功。但不修改优先级}vrrp_instance VI_1 { state MASTER #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器 interface eth0 #指定监测网络的接口。实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的 mcast_src_ip 192.168.0.118 ## 发送多播数据包时的源IP地址 virtual_router_id 51 #虚拟路由标识,MASTER和BACKUP必须是一致的 priority 100 #定义优先级,数字越大,优先级越高 advert_int 2 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置验证类型和密码。主从必须一样  auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种  auth_pass 1111 #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信 } virtual_ipaddress {  192.168.0.119 #VRRP 虚拟地址 如果有多个VIP,换行填写 } track_script {  chk_nginx # 心跳脚本,即在 vrrp_script 部分指定的名字 }}

115机器上的角本对上面的角本稍做变动即可

改变 state MASTER -> state BACKUP,priority 100 -> priority 90,mcast_src_ip 192.168.0.118 -> mcast_src_ip 192.168.0.105。其他的地方保持不变,是不是很简单。

! Configuration File for keepalivedvrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" interval 2 weight -5}vrrp_instance VI_1 { state BACKUP # 修改 interface eth0 mcast_src_ip 192.168.0.105 # 修改 为本机IP virtual_router_id 51 priority 90 #数字变小 advert_int 2 authentication {  auth_type PASS  auth_pass 1111 } virtual_ipaddress {  192.168.0.119 } track_script {  chk_nginx }}

到这里keepalived的简单配置就完成了下面就启动keepalived

service keepalived start

安装Nginx

查看nginx的依赖库是否完整

rpm -qa zlibrpm -qa zlib-develrpm -qa opensslrpm -qa openssl-develrpm -qa pcrerpm -qa pcre-develrpm -qa gcc

如果没有就安装

yum -y install gcc zlib zlib-devel openssl openssl-devel pcre-devel

下载并解压nginx

mkdir nginxsrccd nginxsrc/

wget http://nginx.org/download/nginx-1.13.9.tar.gztar zxvf nginx-1.13.9.tar.gzcd nginx-1.13.9/

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module

安装在/usr/local/nginx/sbin/nginx 目录下

make&&make install

执行成功后会显示leaving directory

启动

/usr/local/nginx/sbin/nginx

检查

ps aux|grep nginx

开机启动

vi /etc/rc.local

添加一行

/usr/local/nginx/sbin/nginx

因为我的机器上80端口被别的应用占用了,所以就修改105和118的 nginx.conf 把端口80 修改为81

vi /usr/local/nginx/conf/nginx.conf

分别个性105 和119上的index.html 加上一个ip以便们们识别打开的是哪个ip上的index.html

vi /usr/local/nginx/html/index.html

nginx重新加载配置

/usr/local/nginx/sbin/nginx -s reload

好了,我们访问一下

curl 192.168.0.119:81

返回的html是 118机器上的index.html

现在我们把118的nginx停止

 /usr/local/nginx/sbin/nginx -s stop

这时118上的keepalived的心跳检查角本发现nginx无法访问会把keepalived关闭,然后转向从节点

我们再访问一下119

 curl 192.168.0.119:81

在118上重新启动nginx和keepalived

再访问119 返回的网址是118上的index.html

感谢各位的阅读!关于"keepalived双机热备nginx如何配置"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

配置 机器 优先级 检查 检测 脚本 服务 双机 成功 密码 节点 集群 准备 验证 主机 之间 传统 内容 地址 数字 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州社交软件开发费用是多少 非法侵入计算机网络安全法 吉林三维人口系统软件开发 数据库数据多插入数据慢 国动部计算机网络技术 温州市医保药品数据库 安恒数据库审计产品 网络安全金融日图片设计模板 兼职软件开发计划 广州光学设计软件开发 D3下载软件开发 杨浦区网络技术服务代理商 主宰之剑服务器好还是联盟好 网络技术专接本考试 网络安全警察证件 微软发件服务器是什么 我的世界服务器管理员招人 无锡自动化软件开发概念设计 jsp怎么直接显示数据库 2021网络安全事件案例校园 动力源与网络安全的关系 阿里云服务器攻击时间 王者玩的时候与服务器失去连接 国企网络安全投入 建网站怎么用国外的服务器 软件开发去平安财险可以吗 临西网络安全 怀旧服部落服务器战士练级天赋 保定软件开发薪资 河南真二互联网科技有限公司
0