凝思6.0.80下基于nginx和keepalived的主备机服务切换方案

2024-03-20 18:59

本文主要是介绍凝思6.0.80下基于nginx和keepalived的主备机服务切换方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、需求

现场两台服务器,均可做为网页服务器,网页登录地址分别为http://192.168.0.100:8080和http://192.168.0.101:8080。现要求正常时连接其中一台服务器,当连接的服务器出现异常或网络连接中断时,可以自动切换连接到另一台服务器,即实现服务器的主备服务切换功能。

2、分析

根据对上述需求的分析,可以得出一个服务切换的方案,具体方法是两台服务器均可生成一个共同IP地址,如:192.168.0.10,正常情况下只在一台服务器上生成,当正常服务器异常时,可在另一台服务器上生成。浏览器只需要登录http://192.168.0.10即可访问网页。

为了实现分析后方案,需要一个网页代理服务和一个主备机IP地址切换服务,也就是我们要用到的nignx和keepalived。

3、安装服务

在凝思6.0.80系统环境下,需要安装libnl、nginx、keepalived三个安装包。libnl是keepalived的依赖包,在凝思系统下安装不完全,需要补充安装。

两台服务器均需安装以下内容。

3.1 安装nignx

  1. 在http://nginx.org/en/download.html下载安装包nginx-1.19.7.tar.gz
  2. 拖入凝思
  3. 切换至root用户
  4. 解压 tar zxvf nginx-1.19.7.tar.gz
  5. ./configure
  6. make && make install

经过上述操作,nignx安装完毕。安装目标在 /usr/local/nignx中,在/etc/rc.local中添加/usr/local/nginx/sbin/nignx,完成启机自启动nginx功能

3.2 安装libnl

  1. 在http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libnl.html下载libnl-3.5.0.tar.gz
  2. 拖入凝思
  3. 切换至root用户
  4. 解压 tar zxvf libnl-3.5.0.tar.gz
  5. ./configure
  6. make && make install

经过上述操作,libnl安装完毕,安装目标在/usr/local/lib中

 

在/etc/ld.so.conf中添加/usr/local/lib

3.3 安装keepalived

  1. 在https://www.keepalived.org/download.html下载keepalived-2.2.1.tar.gz
  2. 拖入凝思
  3. 切换至root用户
  4. 解压 keepalived-2.2.1.tar.gz
  5. 添加自启动功能 cp keepalived-2.2.1/keepalived/etc/init.d/keepalived /etc/init.d
  6. ln -s /lib/x86_64-linux-gnu/libnl-genl-3.so.200 /lib/x86_64-linux-gnu/libnl-genl-3.so
  7. ./configure --prefix=/usr/local/keepalived
  8. make && make install

经过上述操作,keepalived安装完毕,安装目标在/usr/local/keepalived中。

  1. mkdir -p /etc/keepalived
  2. cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived

使用/etc/init.d/keepalived start 启动,在测试中keepalived会有些问题,这里大家自己去解决下,当试题了。

4、配置

4.1 双机nignx配置

http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;#代理websocket必填内容map $http_upgrade $connection_upgrade {default upgrade;'' close;}upstream websocket {server localhost:8080;}server {listen 80;server_name 0.0.0.0;location / {proxy_pass http://192.168.1.16:8080;#代理websocket必填内容proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}}
}

4.2 主机keepalived配置

vrrp_script chk_http_port {script "/opt/chk_nginx.sh"interval 2weight -5fall 2rise 1
}#第一个网址虚拟共享IP
vrrp_instance VI_1 {state MASTERinterface eth0mcast_src_ip 192.168.1.102virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.16}track_script {#检查nignx是否启动chk_http_port}
}#第二个网址虚拟共享IP
vrrp_instance VI_2 {state MASTERinterface eth1mcast_src_ip 172.22.0.22virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.22.0.16}
}

4.3 备机keepalived配置

vrrp_script chk_http_port {script "/opt/chk_nginx.sh"interval 2weight -5fall 2rise 1
}#第一个网址虚拟共享IP
vrrp_instance VI_1 {state BACKUPinterface eth0mcast_src_ip 192.168.1.101virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.16}track_script {#检查nignx是否启动chk_http_port}
}#第二个网址虚拟共享IP
vrrp_instance VI_2 {state BACKUPinterface eth1mcast_src_ip 172.22.0.21virtual_router_id 52priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.22.0.16}
}

主机和备机的keepalived区别之处大家自己去比对吧。

5、结束

双机正常启动服务后,可以用ip ad指令看到虚拟IP地址在主机上,如果主机关机或keepalived服务关闭,虚拟IP会在备机中出现,直到主机恢复正常后虚拟IP会切回主机。

这篇关于凝思6.0.80下基于nginx和keepalived的主备机服务切换方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830439

相关文章

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素